2009-12-27 103 views
0

我有幾個大的MyISAM表(數據文件大約1.5 GB),我需要在半定期基礎上進行優化,因爲索引文件變得越來越大。 OPTIMIZE操作需要很長時間。查詢在運行時的狀態是「通過排序修復」。我該如何提高OPTIMIZE語句的性能?將增加sort_buffer幫助?提高MySQL優化語句的速度

+0

我使用4.1版本 – 2009-12-27 05:05:34

回答

1

嘗試在連接設置myisam_sort_buffer_size,例如:

set session myisam_sort_buffer_size = 52428800 
+0

有什麼特別的原因,這需要在會議期間被設置爲相對於my.cnf配置文件?如果將該值設置爲1GB,即使沒有進行優化,該1GB是否總是保留? – 2009-12-27 05:04:53

+0

任何可能使用提供的內存的操作都會使用它。你不希望有超過80%的內存提交給MySQL(經驗法則)。如果您有大量未使用的RAM,您可以更改my.cnf中的設置,但很可能RAM會被MySQL的其他部分(例如查詢緩存)更好地使用。如果您將所有緩衝區設置得很大,並且最糟糕的情況是使用了所有緩衝區,則當操作系統開始大量交換RAM到磁盤時,數據庫可能會停頓。 – 2009-12-27 05:14:55

+0

如果我在PHP腳本中建立數據庫連接,然後執行SET會話語句,然後執行optimize命令,它會使用myisam_sort_buffer_size的新值嗎?腳本完成後,myisam_sort_buffer_size會恢復爲默認值嗎? – 2009-12-27 05:24:21