2012-04-17 28 views
1

我試圖在具有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,但我只是把它一些額外的內存,以防萬一需要。

如果它在第一次運行時速度較慢,並且之後運行得更快,但這似乎不合邏輯。

任何想法將是非常受歡迎的。

回答

1

EC2 micro的性能普遍很差。您可以以相同的價格購買Linode/Rackspace。

+0

我知道EC2 micro並不是那麼棒,但是我得和我老闆一起提供的東西一起工作;-) 無論如何,這不應該成爲第一次查詢速度快而且花費時間更長的原因你第二次運行它,數據庫中沒有其他更改。如果有的話,查詢緩存應該使其更快。 – Andy 2012-04-19 13:54:48

0

Amazon Micro實例「在附加週期可用時可能會在短時間內機會性地增加CPU容量。」

這意味着您被分配了X個計算單位,但當其他Micro實例未使用其分配時,您可以跳轉到X + N,並且您的實例將自動清除它。

這可能是你看到性能波動的原因。