[前][次][番号順一覧][スレッド一覧]

mysql:13859

From: 丸山 宏徳 <丸山 宏徳 <kutsugi@xxxxxxxxxx>>
Date: Wed, 11 Apr 2007 01:11:44 +0900
Subject: [mysql 13859] 高負荷クエリー実行への最適化


大変ご無沙汰しております。普段から参考にさせていただいてはおりますが、投
稿するのは3年ぶり位になってしまいます。改めてよろしくお願いします。

さて表題の件、MySQL4.1+Tomcat5.5というシステムで、分単位で実行時間が必
要なクエリーを実行するシステムの負荷(CPU使用率およびメモリ使用量)を何
とか削減したい、という依頼を受けました。
まぁ「まずはクエリーを見直すのが先決だろう」というご指摘はごもっともなの
ですが、ソースが仕様書という案件でしたので(苦笑)、後回しになってしまい
ました。とはいえテーブルの非正規化の許可も出たので、そちらはそちらで現在
作業中で、そちらではかなりのパフォーマンスの向上が見込める予定です。

とはいえ、チューニングで何とか出来る部分があればというコトで環境周りも手
を入れています。MySQL周りで一番気になったのが、InnoDBを使っているのに
key_bufferとかをドカンと指定していたことですね。という事で

・替わりにinnodb_buffer_pool_sizeをスワップしない程度に目一杯
・innodb_log_file_sizeに64M
・innodb_log_buffer_sizeに8M
・query_cache_sizeに64Mを指定して query_cache_type を1に
・join_buffer_size、read_buffer_size、read_rnd_buffer_size 、sort_buffer_size
 あたりに各2Mづつ

なんてあたりに手を入れてみたのですが、実行時間そのものはあまり変化はあり
ませんでした。メモリ関連、特にスワップはかなり減ったので、まるで無意味で
はなさそうなのですが……。クエリーそのものが重い以上、実行時間については
クエリーのチューニングを待つしかないのかな?

あと指定するとすればinnodb_thread_concurrency あたりでしょうか? ただ、
これはあまり大きな数を指定するとパフォーマンスが落ちるという投稿を読んだ
コトもありますので、デフォルトの8からどの程度増やすか、少々考えどころで
すね。

というコトで、%表題%、「クエリーの数は少ないが一つ一つが時間がかかる」と
いう場合の最適化の手法について、一般論で結構ですのでアドバイスを頂ければ
幸いです。「ここをいじってみろ」程度でかまいませんので、ご意見をお伺いで
きればと存じます。よろしくお願いします。



丸山 宏徳

E-Mail:kutsugi@xxxxxxxxxx


[前][次][番号順一覧][スレッド一覧]

->   13859 2007-04-11 01:11 [丸山 宏徳 <kutsugi@] 高負荷クエリー実行への最適化            
     13860 2007-04-11 01:48 ┗[SATOH Fumiyasu <fumi]                                       
     13861 2007-04-11 10:56  ┗[丸山 宏徳 <kutsugi@]