我有一個1500萬行的表。在當天的某個時候,我運行一個查詢,刪除大約200萬行這些行。這需要大約30分鐘的時間來運行,因爲每個mysql管理員都在減慢整個實例的複製速度。MySQL - 使查詢複製友好
我想我可以將它轉換爲提交每1000行的存儲過程,但似乎複製仍然卡住,直到我的整個存儲過程完成。這將是可能的做外部的MySQL,但我真的想嘗試在MySQL內部做到這一點。這就是我的....有沒有辦法讓這個更復制友好。
BEGIN
DECLARE rowcount INT;
REPEAT
DELETE FROM tbl_sales_records WHERE salesFileNo = PassedInValue LIMIT 1000;
SELECT ROW_COUNT() INTO rowcount;
COMMIT;
UNTIL rowcount=0
END REPEAT;
END$$
您已經添加上'salesFileNo'的指數? – MichaelRushton 2012-03-30 15:29:56
是的,這是索引..每次刪除後,我把它分成1000條記錄每個提交運行在主服務器上1到2秒的上衣。由於某些原因,即使提交完成複製滯後似乎與整個存儲過程完成所需的時間相匹配,也是如此。 – personalt 2012-03-30 15:37:17