首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 存儲過程游標巢狀循環刪除百萬數據性能優化:從 RBAR 到集合操作

     編輯:MySQL 綜合教學

MySQL 存儲過程游標巢狀循環刪除百萬數據性能優化:從 RBAR 到集合操作

某 jBPM 歷史表清理存儲過程,使用 7 層游標巢狀循環(RBAR 模式)刪除 10 萬~百萬條關聯數據,執行極慢(數小時)。本文分析性能瓶頸,提供分批集合操作、臨時表、外部調度等優化方案。

原始代碼性能剖析

方案核心思想預期提升實施難度

1. 分批集合刪除(推薦)將巢狀邏輯改寫為多條 DELETE ... WHERE id IN (SELECT ...) 或 JOIN,每批 1000-5000 行,提交事務100-1000x中(需重寫邏輯)
2. 臨時表中轉先 CREATE TEMPORARY TABLE tmp_ids SELECT id FROM ... WHERE 清理條件,再 DELETE t FROM target JOIN tmp_ids ON ...50-200x低
3. 外部調度 + 分塊應用層/Python 腳本分塊 ID 範圍,並行提交 DELETE ... WHERE id BETWEEN ? AND ?200-500x中(需外部依賴)
4. 分區表 + DROP PARTITION按時間範圍分區,清理直接 ALTER TABLE DROP PARTITION(元數據操作,秒級)∞ (架構變更)高(需重建表)
5. pt-archiverPercona Toolkit 專業歸檔工具,分塊、暫停、檢查從庫延遲、可導出文件專業級低(安裝即用)



方案 1 實戰改寫示範(分批集合刪除)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved