MySQL の接続毎のメモリ使用量

むっちゃくちゃラフに調べてみた。以下のスクリプトを実行して、top でメモリ使用量の変動を眺める。

% perl -MDBI -e 'for (my $i = 0; $i < 99; $i++) { last unless fork(); } my $dbh = DBI->connect("dbi:mysql:test;user=root") or die DBI->errstr; print $dbh->selectrow_array("select count(*) from t"), "\n"; sleep(10)'

測定結果: Mac OS X 上の mysqld (gcc -m64) で、100接続毎に 30MB 程度の使用量。手元の環境でのスタックサイズが 256KB なので、そんなところなんだろうか。意外と大量の同時接続に耐えられるのかも。

ちなみに、MySQL 4.1 から、メモリ解放の単位がコネクション単位からステートメント単位に変化していたりするけど、XXX_buffer_size の解放のタイミングがどうなっているかは知らない。