目前,我们的每个MySQL事务都在计算100K+~million行并将其更新为一个100 K到10亿行表。有时这样的交易由于不清楚的原因而失败,我们正试图对其进行分类。有些人建议,限制每个事务中的行数(小于100 Ks)是一种良好的做法。然而,我们希望更好地量化我们的交易限额。此外,我们希望在事务失败期间包含更多的系统状态,从而使事务错误消息更具信息性,这样我们就可以
自信地知道当前硬件规范中的事务限制是什么。有两分钱吗?现在,我们正在打印事务失败时的MySQL“显示变量”,并使用grafana对系统资源进行半手动比较。https://grafana.com/这是相当辛苦的,可能是不准确的,因为地堑可能有一些延迟,等等。
谢谢。
发布于 2017-09-12 18:52:34
与其试图分析一个太大的事务,不如讨论一下消除它的选择。
一次把它分成10K行可以吗?也就是说,在每10K行之后,就有一个COMMIT
。这将一个事务分解为多个事务。从性能和崩溃的角度来看,这是一个肯定的胜利。从酸味的角度来看,你需要回答这个问题。
假设您可以将其分解,我推荐这里给出的技术,作为有效执行查询的一种可能方法:chunks (是的,只要稍微做一些修改,它就适用于UPDATE
)。
https://stackoverflow.com/questions/45743467
复制相似问题