MySQLのキャッシュサイズ変更で重いSQLを高速化

  • このエントリーをはてなブックマークに追加

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

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

ads

コメントを残す

*