我正在尝试在具有613MB内存的Amazon EC2微型实例上配置mysql。这个实例只用于运行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
我不认为myisam param应该被包括在内,因为它应该全部使用innodb,但我只是在需要时给它一些额外的内存。
如果它在首次运行时速度较慢,那么就更合乎逻辑了,之后会更快,但这似乎是不合逻辑的。
任何想法都会非常受欢迎。
答案 0 :(得分:1)
EC2 micro的表现一般都很糟糕。您可以以相同的价格购买Linode / Rackspace。
答案 1 :(得分:0)
这意味着您已经分配了X个计算单位,但是当其他Micro实例未使用它们的分配时它可以跳转到X + N,并且您的实例将自动清除它。
这可能是您看到性能波动的原因。