2011-10-30 79 views
0

我有多進程腳本插入〜30k字節數據到MySQL myisam表(ID,時間戳,數據)。 一開始一切都很快,但過了一段時間(大約20-30秒),插入時間從幾毫秒增加到1-2秒。MySQL插入性能下拉

我注意到,那時候MySQL正在向磁盤寫入數據,之後我又有了一段時間的良好表現。我嘗試將批量插入緩衝區大小設置爲不同的值,但不起作用。

有沒有辦法強制MySQL更頻繁地編寫小批量? 還是有另一種方法來保持插入速度的一個層面?

+0

不知道您的硬件設置很難準確回答。 –

+0

MySQL配置文件中有一部分與高速緩存和緩衝區大小有關。 – Jared

回答

1

試試這個:

LOCK TABLE table 
(Do all your inserts) 
UNLOCK TABLE table 

這是因爲該指標可能緩慢。以上將強制MySQL在重建索引之前添加所有數據。

此外,您可以編輯/etc/my.ini設置,爲MySQL提供更多的RAM,因爲它在構建索引時似乎寫入磁盤。

或者作弊是將您的MySQL tmp目錄更改爲RAM驅動器。然後,即使它認爲正在寫入磁盤,它也會寫入內存。

+0

試過了。不過,我似乎很想從硬件上得到很多,即使直接將相同的數據直接寫入硬盤驅動器也會以相同的方式結束。 – Fuxi

+0

您可以使用MySQL內存表,然後在插入後將其轉換回普通表,而且速度會更快。 – Alasdair

+0

不幸的是我不得不經常寫數據,所以沒有時間把它轉換成普通表。 – Fuxi