mysql 大交易失败时发送系统状态
send a system status when a mysql big transaction failed
目前我们的每个 MySQL 交易都在计算和更新 100K+~million 行到 100K 到 10 亿行 table。有时这样的交易由于不明原因而失败,我们正在尝试对其进行分类。有人建议限制每个事务中的行数(小于 100 Ks)是一个很好的做法。但是,我们想更好地量化我们案例中的交易限额。此外,我们希望通过在交易失败期间包含更多系统状态来使交易错误消息更具信息性,这样我们就可以
自信地知道当前硬件规范中的事务限制是多少。有两分钱吗?现在我们在事务失败时打印 MySQL "show variables",并且还使用 grafana 半手动比较系统资源。 https://grafana.com/ 这非常费力而且可能不准确,因为 grafana 可能会有一些延迟等。
谢谢。
与其尝试分析太大的交易,不如讨论消除它的选项。
是否可以一次将其分成 10K 行?即每10K行后,有一个COMMIT
。这将一笔交易分成几笔。从性能和崩溃的角度来看,这无疑是一场胜利。从 ACID 的角度来看,嗯,你需要回答这个问题。
假设您可以将其分解,我推荐此处给出的技术作为有效执行查询的可能方法:
http://mysql.rjweb.org/doc.php/deletebig#deleting_in_chunks(是的,稍作改动,适用于 UPDATE
。)
目前我们的每个 MySQL 交易都在计算和更新 100K+~million 行到 100K 到 10 亿行 table。有时这样的交易由于不明原因而失败,我们正在尝试对其进行分类。有人建议限制每个事务中的行数(小于 100 Ks)是一个很好的做法。但是,我们想更好地量化我们案例中的交易限额。此外,我们希望通过在交易失败期间包含更多系统状态来使交易错误消息更具信息性,这样我们就可以
自信地知道当前硬件规范中的事务限制是多少。有两分钱吗?现在我们在事务失败时打印 MySQL "show variables",并且还使用 grafana 半手动比较系统资源。 https://grafana.com/ 这非常费力而且可能不准确,因为 grafana 可能会有一些延迟等。
谢谢。
与其尝试分析太大的交易,不如讨论消除它的选项。
是否可以一次将其分成 10K 行?即每10K行后,有一个COMMIT
。这将一笔交易分成几笔。从性能和崩溃的角度来看,这无疑是一场胜利。从 ACID 的角度来看,嗯,你需要回答这个问题。
假设您可以将其分解,我推荐此处给出的技术作为有效执行查询的可能方法:
http://mysql.rjweb.org/doc.php/deletebig#deleting_in_chunks(是的,稍作改动,适用于 UPDATE
。)