613MBのメモリを持つAmazon EC2マイクロインスタンスでmysqlを設定しようとしています。このインスタンスはmysqlの実行にのみ使用されるので、できるだけ多くのメモリを使いたいと思っています。我々は別のホスト上で実行されている同じDBの別のインスタンスを持っているので、結果を簡単に比較できます。EC2インスタンスのMysql:最初のクエリの後の結果が遅い
元のデータベースで平凡なクエリを実行するのに要した時間は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 paramは、カントー含まれるべきとは思わないが、私はちょうどそれを与えました必要に応じて余分なメモリを追加する必要があります。
初回実行時の速度が遅かった場合は遅くなりますが、その後は速くなりますが、これはちょっと不合理なようです。
どんなアイデアでも大歓迎です。
私はEC2マイクロがそれほど素晴らしいわけではないことを知っていますが、私の上司が提供するものと一緒に作業しなければなりません;-) とにかく、最初の時間が早くなり、データベースで変更されたもので2回目を実行します。クエリキャッシュを使用すると、クエリキャッシュを高速化できるはずです。 – Andy