トップ   編集 凍結 差分 バックアップ 添付   新規   最終更新のRSS

mysql/チューニング

Last-modified: 2010-03-04 (木) 12:43:14 (6d)
Top / mysql / チューニング

パフォーマンスチューニングのメモ

チューニング

サーバーの詳細情報を表示

mysql> SHOW STATUS;

パラメータの表示

mysql> SHOW VARIABLES;

mysql設定ファイルの位置

  • /etc/my.cnf

サーバーの文字コードの設定

my.cnfに下記のように設定
[mysqld]
default-character-set=utf8

クライアント文字コードの設定

my.cnfに下記のように設定
クライアント側の設定に応じた値が使用される
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

テーブルのインデックス分布を解析する

mysql> ANALYZE TABLE テーブル名
実行するとテーブルの統計情報が更新される。

パフォーマンスに関連する値

max_connections
mysqlサーバーに接続する最大接続数を設定
thread_cache_size
mysqlスレッドをどれだけキャッシュしておくか設定
key_buffer_size
インデックスをメモリ上に保持するためのメモリサイズ
query_cache_size
sqlクエリ結果を保持するキャッシュの数を設定。同じ参照が多い時、パフォーマンス向上が期待できる
query_cache_type
query_cacheの種類を設定する
0
キャッシュを使用しない
1
問合せ内容はキャッシュしないが、問合せ結果はキャッシュする
2
問合せ内容だけをキャッシュする

ステータスを初期化する

mysql> FLUSH STATUS;

実行中のスレッドを確認する

mysql> SHOW PROCESSLIST;

SQLの注意点

  • CURRENT_DATEとか現在日時を取得する関数は使わない。

CURRENT_DATEとかNOWとかその都度値が変わるようなものがクエリー内にあった場合、クエリーキャッシュに入らない。 なので、クエリ文生成側で準備したほうがいい。

  • インデックスのkey_lenに注意。

速度を上げる為にインデックスを使っていても、key_lenが長いとやや遅くなるらしい。 インデックス対象のフィールドのデータ長は短く。

joinするテーブルのカラムの型を合わせる

当たり前のことだが、重要。 型が違うと、結合の際に型のキャストが発生し、インデックスが利用されなくなる

  編集