MySQLについて考える

たまに出ていたSQLのエラーを出さないようにする為にはどうしたものか?といったことをネットで調べていたところこんな記事を見つけました。

第 3 回 MySQL サーバーを調整する

サーバー調整のヒントで MySQL サーバーを飛躍させる

https://www.ibm.com/developerworks/jp/linux/library/l-tune-lamp-3.html

クエリーをキャッシュする

このIBMが公開してくれている技術文書にあるようにmy.confに設定を入れました。

query_cache_size = 32M を /etc/my.conf に追加すると、32MB のクエリー・キャッシュを有効にすることができます。

https://www.ibm.com/developerworks/jp/linux/library/l-tune-lamp-3.html

デフォルトで無効になっているクエリー・キャッシュを有効にしたところ、表示速度が体感で速くなったので、効果はかなりあるようでした。

このMySQLを飛躍させる方法にも記載されている通り、体感でもこれだけ高速化ができるのであればデフォルトで有効化しておけば良さそうですが、システムによってはリソースの枯渇原因ともなりそうなので、無効化がデフォルトになっているようです。

多くの LAMP アプリケーションはデータベースに大きく依存していますが、同じクエリーを何度も繰り返し行います。クエリーが実行されるたびに、データベースは同じ作業を行わなければなりません (つまりクエリーを解析し、その実行方法を決定し、ディスクから情報をロードし、その情報をクライアントに返します)。

MySQL にはクエリー・キャッシュと呼ばれる機能があり、クエリーの結果が再度必要な時のために、その結果をメモリーに保存します。多くの場合、これによってパフォーマンスを劇的に向上させることができます。ただし注意する点として、クエリー・キャッシュはデフォルトで無効になっています。

キャッシュのヒット状況

どれぐらいキャッシュにヒットしているかについては、MySQLにログインしてコマンドで確認をすることができました。

mysql> SHOW STATUS LIKE 'Qcache%';
show_mysql_status.png
キャッシュのステータスが確認できます


おわりに

このステータスをずっと見ていると、バシバシとキャッシュにヒットしている状況がわかり、とても気持ちがいいです。似たような症状でお悩みの方はぜひお試しを。