MySQLパフォーマンスチューニングのためのクエリの基礎知識
パフォーマンスチューニングについては↑が非常に参考になります。
ただ、いくらパフォーマンスチューニングをしてもMySQLの設定がデフォルトでは限界が有るので、設定も変更する必要が有ります。
InnoDBをメインストレージエンジンとしている場合は、
innodb_buffer_pool_size ⇒InnoDBのインデックスやレコードをキャッシュするメモリ領域のサイズ innodb_log_file_size ⇒InnoDBの更新ログを記録するディスク上のファイルサイズ ⇒innodb_buffer_pool_sizeのサイズを増やしたらinnodb_log_file_sizeも合わせて調整する必要が有る。
が重要。
SHOW VARIABLESコマンドで現状の設定をまず確認。
mysql > SHOW VARIABLES LIKE "innodb_%_size"; +---------------------------------+---------+ | Variable_name | Value | +---------------------------------+---------+ | innodb_additional_mem_pool_size | 1048576 | | innodb_buffer_pool_size | 8388608 | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | +---------------------------------+---------+ 4 rows in set (0.00 sec)
innodb_buffer_pool_sizeはデフォルトでは8Mに割り当てられています。
変更するにはWindowsの場合はmy.ini、Linux系の場合はmy.cnfを編集します。
innodb_buffer_pool_size = 16M innodb_log_file_size = 2M
MySQLを再起動して、確認。
mysql > SHOW VARIABLES LIKE "innodb_%_size"; +---------------------------------+----------+ | Variable_name | Value | +---------------------------------+----------+ | innodb_additional_mem_pool_size | 1048576 | | innodb_buffer_pool_size | 16777216 | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 2097152 | +---------------------------------+----------+ 4 rows in set (0.00 sec)
開発環境ではデフォルトの設定で開発していたので、本番環境からデータを取ってくるとSQLが重すぎる!ってことがありましたが、これで解消されました。
[参考にさせて頂いたサイト]
5分でできる、MySQLのメモリ関係のチューニング!
MySQL 初めてのチューニング