高效刪除數百萬條MySQL 行
由於潛在的表鎖定問題,從MySQL 表中刪除大量資料可能會帶來挑戰。本文研究了一種常見場景,即必須在不中斷網站操作的情況下刪除大量重複資料行。
挑戰
這種情況的主要障礙是冗長的執行單一查詢刪除數百萬行時施加的表鎖。這可能會停止涉及該表的所有其他操作,從而導致站點不穩定。
潛在的解決方案
為了緩解鎖定問題,有兩種主要方法可用:
最佳化的解決方案
為了獲得最佳性能,更高效的解決方案解決方案是利用帶有循環和限制子句的增量刪除方法。這涉及以下步驟:
DELETE FROM `table` WHERE (whatever criteria) ORDER BY `id` LIMIT 1000
迭代查詢,直到不再有行受到影響,迭代之間短暫暫停以防止資料庫過載。這種方法有效地以可管理的批次刪除數據,同時允許其他查詢並發執行,從而減少表鎖定時間和整體執行時間。
以上是如何在不中斷網站營運的情況下有效刪除數百萬條 MySQL 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!