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 初めてのチューニング