如何在不影響正常運作的情況下有效率地刪除MySQL中數百萬重複行?

Barbara Streisand
發布: 2024-11-05 12:11:02
原創
567 人瀏覽過

How to Efficiently Delete Millions of Duplicate Rows in MySQL Without Disrupting Normal Operations?

優化MySQL 中的海量行刪除

在處理海量表中數百萬個重複行時,高效刪除至關重要,以避免破壞正常運作資料庫操作。本文探討了最小化表鎖定時間並維持網站正常運作時間的替代方法。

選項 1:逐步刪除

此方法不是執行單一詳盡的刪除查詢,而是使用循環來執行許多較小的刪除操作。雖然此方法解決了表鎖定問題,但它仍然會顯著增加資料庫負載和執行時間。

選項2:重新命名和恢復

重命名受影響的表,重新創建一個空表一,然後在清理後將表重命名回提供了一種侵入性較小的解決方案。但是,此過程涉及多個步驟,並且可能會中斷報告功能。根據特定的資料類型,資料合併過程也可能具有挑戰性。

最佳解決方案

另一種技術是採用在以下查詢中運行的腳本:循環:

DELETE FROM `table`
WHERE (whatever criteria)
ORDER BY `id`
LIMIT 1000
登入後複製

該查詢以1000 為批次逐步刪除行,有效避免表鎖。透過在循環迭代之間加入暫停,該腳本可以最大限度地減少資料庫負載。使用者不受影響,並且可以安排最佳清理時間。

以上是如何在不影響正常運作的情況下有效率地刪除MySQL中數百萬重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板