gpt4 book ai didi

mysql - 在 mysql innodb 中使用单个事务可以删除多少条记录

转载 作者:行者123 更新时间:2023-11-29 01:28:05 25 4
gpt4 key购买 nike

我想每 6 个月使用主键和外键从 10 个相关表中删除旧记录。我计划在单个事务 block 中执行此操作,因为如果出现任何故障,我必须回滚更改。我的查询将是这样的

DELETE FROM PARENT_TABLE WHERE PARENT_ID IN (1, 2, 3,etc);
DELETE FROM CHILD_TABLE1 WHERE PARENT_ID IN (1, 2, 3,etc);

要删除的记录将在 100 万条左右。在一次交易中删除所有这些是否安全?性能如何?


编辑

更清楚地回答我的问题。我会详细说明我的执行计划

I am first retreiving primary keys of all the records from the parent table which has to be deleted and store it to a temporary table
START TRANSACITON
DELETE FROM CHILD_ONE WHERE PARENT_ID IN (SELECT * FROM TEMP_ID_TABLE);
DELETE FROM CHILD_TWO WHERE PARENT_ID IN (SELECT * FROM TEMP_ID_TABLE);
DELETE FROM PARENT_TABLE WHERE PARENT_ID IN (SELECT * FROM TEMP_ID_TABLE);
COMMIT;

回滚任何失败。

鉴于我可以从所有这些表中删除大约一百万条记录,将所有内容放在一个事务 block 中是否安全?

最佳答案

你很可能会成功。但这是不明智的。某些随机事件(例如,网络故障)可能会导致该笔巨额交易中止。您可能会长时间阻止其他事件。等等

“旧”记录是否比日期 X 更早?如果是这样,使用PARTITIONingDROP 旧行会更有效率。我们可以讨论细节。糟糕,您有 FOREIGN KEYs,它们与 PARTITIONing 不兼容。所有的表都有 FK 吗?

为什么要等 6 个月才进行删除?每天 6000 行会产生相同的效果,而且侵入性和风险要小得多。

IN ( SELECT ... )

性能很差,请改用JOIN

如果一些表只是规范化,为什么要删除它们呢?

每次交易删除 100 个 ID 是否可行?那会更安全,侵入性更小。

关于mysql - 在 mysql innodb 中使用单个事务可以删除多少条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com