2010-08-18 72 views
3

我有一個包含大量數據的表。數據需要經常更新:刪除舊數據並添加新數據。我有兩個選擇mysql刪除效率

  1. ,無論是否存在缺失事件,我刪除的條目立即
  2. 我打上刪除的條目,並使用cron作業刪除在unpeak時間。

這兩個選項之間有什麼效率差?或者更好的解決方案?

+0

有多大?數千行,數百萬? – 2010-08-18 19:49:26

回答

1
  • 刪除和更新都可以有觸發器,這可能會影響性能(檢查是否是你的情況)。
  • 更新一行通常比刪除(由於索引等)更快

然而,在操作刪除一行,對性能的影響應該不會那麼大。如果您的測量結果顯示數據庫花費大量時間刪除行,那麼您的標記和掃描方法可能會有所幫助。這裏的關鍵詞大概是,測量值爲 - 除非單次刪除比更新速度慢得多,否則我不打擾。

0

對於MySQL,刪除只是在內部標記爲刪除,並且當CPU(幾乎)空閒時,MySQL會更新索引。

不過,如果這是一個問題,並且您要刪除多行,請考慮使用DELETE QUICK。這告訴InnoDB不更新索引,只是將其標記爲已刪除,因此可以重用。

要恢復未使用的索引空間,每晚簡單地進行OPTIMIZE TABLE。

在這種情況下,不需要在您的應用程序中實現MySQL將在內部執行的功能。