こんにちわ、監督です。今日もコネタです。

前職から数多のサーバーを触っており、自分以外の方が初期設定をしているものもいくつか見ていますが、意外とMySQLのメモリチューニングが出来ていないものが多いです。何もしていないならまだしも、チューニングの内容で物理メモリ量を超えたメモリを使うことになってしまっているものもありました。

MySQLのメモリチューニングは、mysqld全体にかかる設定とコネクション毎にかかる設定が存在するので、それを理解せずに設定するとあっという間にメモリを食いつぶすことになります。

そこらへんはKLABさんのブログが詳しいです。
また、書籍でも詳細に書かれているものもあると思います。

ですが、サーバー管理にそんなに手をかけられない方、そもそも勉強する気も無い方もいると思いますので、そのような場合にはMySQLに同梱されているmy.cnfのサンプルをそのまま使用してしまいましょう。

サンプルファイルは以下にあります。

CentOS 5でyumでインストールした場合
/usr/share/mysql

ソースから入れた場合
[展開したソース]/3/support-files

サーバーのメモリサイズやストレージエンジンに合わせて、以下の5ファイルが用意されています。

my-huge.cnf
This is for a large system with memory of 1G-2G where the system runs mainly MySQL.
my-innodb-heavy-4G.cnf
This is a MySQL example config file for systems with 4GB of memory running mostly MySQL using InnoDB only tables and performing complex queries with few connections.
my-large.cnf
This is for a large system with memory = 512M where the system runs mainly MySQL.
my-medium.cnf
This is for a system with little memory (32M - 64M) where MySQL plays an important part, or systems up to 128M where MySQL is used together with other programs (such as a web server)
my-small.cnf
This is for a system with little memory (<= 64M) where MySQL is only used from time to time and it's important that the mysqld daemon doesn't use much resources.

このファイルのいずれかをコピーして、/etcにmy.cnfとして設置して、mysqldをリスタート。これだけです。
非力なサーバーでちょっとだけMySQLを使いたい、というときにもメモリの使用量を制限出来ることになるので、覚えておくと幸せかも知れません。