MySQLを32bitのOSで使うときのメモリの制限

だいたいの32bitのOSでは、4GBまでがダイレクトに使えるメモリの上限量であることはご存知の方が多いと思います。
※このあたりの表現については詳しくないんで突っ込まないでください^^;


さて、MySQLを32bitのOSで使うときのメモリの制限ですが、結論から言うと「2GB」が上限です。

「え?4GBまで使えるんじゃないの?」と思った方、残念。me too, orz

MySQL側で制限されてるようなので、ソースをいじくれば解除できるのかもしれませんが、
7/23追記 32bit/Linuxglibcの問題でした。Sol10では関係ないかも・・・調査中
参考:MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.3 InnoDB の構成
それよりは64bitのOSに乗り換えたほうがいいのではないかと、個人的には思います。


メモリ割り当ての指標に関しては、KLabさんのblogが非常に参考になります。いつもお世話になります。m(__)m
参考:5分でできる、MySQLのメモリ関係のチューニング!


利用環境によって色々とあるとは思いますが、とりあえず私の設定値。

  • Linux CentOS5 32bit Mem4GB
  • MyISAMInnodbを両方とも使いますがメインはInnodb
  • 他にも多少は割り当てたいので少し余らす
  • MyISAMはインデックスがkey_bufferにのり、データファイルはOSのキャッシュにのるので注意
  • mymemcheckがすんばらしい :-)
global_buffers
  key_buffer_size                      67108864    64.000 [M]
  innodb_buffer_pool_size             805306368   768.000 [M]
  innodb_log_buffer_size                8388608     8.000 [M]
  innodb_additional_mem_pool_size      16777216    16.000 [M]
  net_buffer_length                       16384    16.000 [K]

thread_buffers
  sort_buffer_size                      4194304     2.000 [M]
  myisam_sort_buffer_size              16777216     2.000 [M]
  read_buffer_size                      2097152     2.000 [M]
  join_buffer_size                      1048576  1024.000 [K]
  read_rnd_buffer_size                  4194304     4.000 [M]

max_connections                             100