我試圖在具有613MB內存的Amazon EC2微型實例上配置mysql。這個實例將只用於運行mysql,所以我想盡可能多的使用內存。我們有另一個在不同主機上運行的數據庫實例,所以我可以輕鬆比較結果。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
我不認爲MyISAM的PARAM應包括壽,因爲它都應該使用的是InnoDB,但我只是把它一些額外的內存,以防萬一需要。
如果它在第一次運行時速度較慢,並且之後運行得更快,但這似乎不合邏輯。
任何想法將是非常受歡迎的。
我知道EC2 micro並不是那麼棒,但是我得和我老闆一起提供的東西一起工作;-) 無論如何,這不應該成爲第一次查詢速度快而且花費時間更長的原因你第二次運行它,數據庫中沒有其他更改。如果有的話,查詢緩存應該使其更快。 – Andy 2012-04-19 13:54:48