613MB メモリの Amazon EC2 マイクロ インスタンスで mysql を設定しようとしています。このインスタンスは mysql の実行にのみ使用されるため、できるだけ多くのメモリを使用したいと考えています。別のホストで実行されている同じ DB の別のインスタンスがあるため、結果を簡単に比較できます。
元のデータベースで平凡なクエリを実行すると、3 秒もかかりませんでした。EC2 で変更する前は 46 秒かかりましたが、設定を変更した後は、同じクエリに 4 秒しかかかりませんでした。ただし、同じクエリをもう一度実行すると、永遠にかかるようです。
これは、MySql my.cnf で使用する設定です。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_buffer_pool_size = 128M
query_cache_size = 128M
query_cache_limit = 8M
key_buffer_size = 128M
table_open_cache = 2048
table_definition_cache = 2048
read_buffer_size = 64M
join_buffer_size = 64M
sort_buffer_size = 64M
myisam_sort_buffer_size = 64M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
すべてinnodbを使用する必要があるため、myisamパラメーターを含める必要はないと思いますが、必要な場合に備えて追加のメモリを与えました。
最初の実行では遅く、その後は速くなれば論理的ですが、これは非論理的に思えます。
どんなアイデアでも大歓迎です。