優化MySQL 中的海量行刪除
在處理海量表中數百萬個重複行時,高效刪除至關重要,以避免破壞正常運作資料庫操作。本文探討了最小化表鎖定時間並維持網站正常運作時間的替代方法。
選項 1:逐步刪除
此方法不是執行單一詳盡的刪除查詢,而是使用循環來執行許多較小的刪除操作。雖然此方法解決了表鎖定問題,但它仍然會顯著增加資料庫負載和執行時間。
選項2:重新命名和恢復
重命名受影響的表,重新創建一個空表一,然後在清理後將表重命名回提供了一種侵入性較小的解決方案。但是,此過程涉及多個步驟,並且可能會中斷報告功能。根據特定的資料類型,資料合併過程也可能具有挑戰性。
最佳解決方案
另一種技術是採用在以下查詢中運行的腳本:循環:
DELETE FROM `table` WHERE (whatever criteria) ORDER BY `id` LIMIT 1000
該查詢以1000 為批次逐步刪除行,有效避免表鎖。透過在循環迭代之間加入暫停,該腳本可以最大限度地減少資料庫負載。使用者不受影響,並且可以安排最佳清理時間。
以上是如何在不影響正常運作的情況下有效率地刪除MySQL中數百萬重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!