2009-02-02 88 views
6

我有一個充滿時間敏感數據的數據庫,所以在每天的基礎上,我截斷表,然後將新數據(從其他數據庫合併)導入到截斷表中。什麼時候在mysql中使用OPTIMIZE

目前我在導入每日數據刷新後在表上運行OPTIMIZE。 但是,看着mysql OPTIMIZE語法頁面 http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

它說我可以優化回收未使用的空間和碎片整理數據。

那麼我應該跑兩次OPTIMIZE? 一次當我刪除數據,然後再重新插入它之後呢? 或只是一次? ,如果只是一次,應該在加載新數據之後? 或清除舊的?

回答

5

它可能取決於您使用的是MyISAM還是InnoDB表,但我會在截斷表後運行OPTIMIZE。這應該確保空間回收,並且運行速度非常快。

當你插入你的批處理數據時,它應該按順序插入並且不會被分割,因爲它是全新的插入,所以不會有空間來回收。如果它是一個小數據集,它可能並不重要,但是在插入之後進行優化的大數據集也可能很慢。

+0

這對我有意義,但不是積極的。 謝謝 – pedalpete 2009-02-02 23:59:22

0

剛導入新數據後,只要一次就好。

0

在將一組數據刪除或更新到數據庫後,可以使用optimize table命令刪除去零碎的空間。

有沒有必要使用優化命令兩次。以後所有的DML進程都可以使用 優化命令。

相關問題