我正在尝试在具有 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 参数,因为它应该都使用 innodb,但我只是给了它一些额外的内存以防万一。
如果它在第一次运行时较慢,然后运行得更快,那将是合乎逻辑的,但这似乎不合逻辑。
任何想法都会非常受欢迎。