チューニング
【最初から大きくなることが分かっているテーブルを分割して別々のサーバーに置くことを前提に作成する。】これが大事らしいです。 後から分割することもできるがとても難しいので,新しく作成する時にはあらかじめ分けてしまうのだそうで。 これはサーバーの数によって変わるのではないというのもなかなか興味深いです。 例えば購入履歴であれば日ごとのテーブルにしたり,所持カードのリストであればユーザーidでmodを取って100分割したテーブルをサーバにマッピングするそうです。実際のサーバーは5台で足りる場合は,1~20までをサーバー1へ,……みたいな作り方を考えておくと良いとのこと。勉強になります。 スループットを増やすには⇒スレーブを増やす。参照クエリの数が増える時は何とかなる。多段スレーブにする。が,やりすぎると遅延の問題が出てくるので,10台から15台くらいでおさめたい。スケールアップとしてメモリを増やしたり,Fusion-ioを使うとかでも対応する。 クエリのチューニングcoverning index(selectの取るカラムを全部indexに全部入れてしまう。容量は巨大になるが高速),index full scan(これはここでは説明できないので,特殊なケースにおいて高速化できる。調べてください)このあたりで対応する。 スライドには記載されていませんでしたが,素晴らしい情報でした。 負荷対策の実例として行ったことは →スケールアップとInnnoDB化。 1master/6slaveで運用中のDBセット 月に数回SlowQueryが発生してレプリケーションの遅延が発生する memoryを16GBから24GBへ Slaveを3台に
http://gihyo.jp/news/report/01/phpcon2012/0001
なるほど、なるほど。