Mysql 高速化 チューニング

●selectの高速化
1.テーブルを分ける。
2.テーブルにインデックスを設定する。
create index インデックス名 on テーブル名 (フィールド名);
文字列の場合はインデックスに設定する文字数を指定可能。
create index インデックス名 on テーブル名(フィールド名(要素数));
3.select count(*) よりも select(フィール名) を使う。
カウント処理もインデックスを設定してあるフィールド名を指定する事で高速化可能。
さらに、項目数が多い場合に、取得項目だけ取得するようなSQLを別出しにして、
SQLを発行するとかなりレスポンスがアップした。
4.クエリキャッシュを使う。
クエリキャッシュが使える設定になっているのか確認するには、以下のようにする。
query_cache_sizeが0だと無効の状態。
mysql> show variables like 'query_cache_%e';
クエリキャッシュの利用状況を確認するには、以下のようにする。
mysql> show status like 'Qcache%';
Qcache_free_blocks:空きメモリブロック数
Qcache_free_memory:空きメモリ。
Qcache_hits:キャッシュにヒットしたクエリ数。
Qcache_inserts:キャッシュに保存したクエリ数。
Qcache_lowmem_prunes:メモリ不足で削除されたクエリ数。
Qcache_not_cached:キャッシュされなかったクエリ数。
Qcache_queries_in_cache:キャッシュに存在するクエリ数。
Qcache_total_blocks:合計ブロック数
●insertの高速化
1.まとめてINSERT
insert into word (Word_Id,Word_Data) values('1','abc');
insert into word (Word_Id,Word_Data) values('2','def');
insert into word (Word_Id,Word_Data) values('3','ghi');
ではなく、
insert into word (Word_Id,Word_Data) values('1','abc'),('2','def'),('3','ghi');
2.オートコミットをOFFにする。
http://www.cdl.im.dendai.ac.jp/~arai/study/mysql.html


その他

タイトルとURLをコピーしました