2009-12-31 ハイパフォーマンスMySQL sql 実践ハイパフォーマンスMySQLを読んでの備忘メモ。 Innodb 主キーはデータと一緒に、主キー順でレコードが保存される(=クラスタインデックス) セカンダリインデックスには主キーが保存されるので、2段階の検索になる 従って、以下に注意する必要がある 主キーのみでの1件検索 あるいは 範囲検索はセカンダリインデックスに比べて圧倒的に速い。 主キーに長い値を入れるべきではない(セカンダリインデックスの容量が増える) 絞り込めない(値に極端に偏りがある)インデックスなら意味はない。主キーで総なめしたほうが速い。 目安として全体の30%を超えると総なめする その他 MySQLのオプティマイザは(当たり前だが)調べるべき行数が最小になるようなインデックスを選択する つまりpossible_keysが複数ある場合にどのkeyが使われるかはケースバイケースである レプリケーション フローのメモ。 マスタがバイナリログにクエリを記録 スレーブのIOスレッドがマスタからクエリを読み出し、リレーログに追加 スレーブのSQLスレッドがリレーログからクエリを読み出し、実行