skillup

技術ブログ

Database サーバー・ネットワーク

大規模Webサービス技術入門 DBの分散

投稿日:

前回に引き続き、大規模サービスを運用するときに必要になるMySQLの知識についてのまとめ

テーブル・SQL設計

  • 大前提としてすべてのデータをいかにメモリ上にのせられるかが大事
  • カラム定義の際、データサイズをなるべく小さくするようにする
  • インデックスを適切にはる→特にid系のデータ(whereやjoinで使用されるもの)
  • ただしインデックスはある程度のデータ量出ないとスピードが出ない(千件程度なら問題ない)&更新時には遅くなる
  • あるテーブルに二つのカラムがあり、独立してインデックスが張られていた場合、2つのカラムで検索しても片方だけしか使われない。この場合、組み合わせたキーで検索をかけた場合のパフォーマンスを上げたい場合、組み合わせたカラムに対してインデックスを張る必要がある
  • 具体的なパフォーマンスを知りたい場合、EXPLAIN句のROWの部分を少なくするようにする

http://skill-up-engineering.com/?p=1288

レプリケーション機能

  • データベースをマスターとスレーブに分ける。スレーブは常にマスタのコピーという状態にする
  • スレーブは主に参照系の処理の対応。更新系の処理は基本的にマスタで一括対応。(複数にわけると整合性をとるのが難しいため)
  • 上記のような用途から必然的にマスタのスケールはあまりしない。
  • ダウン時のリカバリがとても大変。

パーティショニング

  • データがメモリ上に乗らない場合につかう最終手段
  • テーブルを別々のサーバーにわけること
  • 別々のサーバーに分けるとJOINができないため、JOINをするような要素のものはパーティショニングさせない。
  • メモリ増設で対応できるならそちらで対応したほうがコスパ的にはいい

-Database, サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

postgresの外部キー制約やcascadeについて

外部キーを貼っておくと、当然、削除などを行うときにエラーになり、truncateも当然できなくなりますが、cascadeをつけることで、関連するテーブルまで一気にtruncateされます。 [cray …

no image

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …

no image

FTPソフトでのアクティブモード&パッシブモードについて

Webアプリを作る場合、基本的にSSHが使えることが前提だったんですが、先日安いサーバーでWebサイトを作る案件があり、FTPでアップをする必要に迫られました。 その時に、「ログインはできているんだけ …

no image

dockerコマンドについて再考(ttyや/bin/bashなど)

Contents1 ttyオプションに関して2 docker execコマンドに関して2.1 ログインしないパターン2.2 shellに関して ttyオプションに関して dockerでnodeを起動さ …

no image

nginxインストール(サブディレクトリでcakePHPを使いたいとき)

以前nginxのインストールを行いましたが、理解が浅かったようで今回すげーはまりました(汗) ガチンコ塾でもいっていますが、覚え始めの時はコピペでもいいですが(最初から100%の理解は非現実的)、慣れ …

アーカイブ