小编Mat*_*mes的帖子

多个连接上的事务行为

我有一个带有 InnoDB 表的 MariaDB 数据库。我有两个连接到同一个数据库。一个连接是围绕大量工作使用事务。另一个连接的任务是更新同一数据库中的表(但在事务工作范围之外)以跟踪事务的进度。

所有这一切都发生在同一个脚本中,但同样具有不同的连接:一个用于正在执行的实际工作(包括交易),另一个用于保留有关工作进度的元信息。

我预计这会起作用,以便作业跟踪记录会随着作业的进展而更新 - 10%、20%、50% 等,因为事务工作是在单独的连接上完成并影响其他表。但是,在我的测试中,在提交作业的事务之前,作业跟踪记录不会更新。

据我所知,它不会死锁,因为“进度监控”连接根本没有使用事务。“worker”连接将其查询包装在一个事务中,但另一个连接没有。

我通过查看随着工作的进展而填写的“完成百分比”字段来检查进度。操作顺序是:

  1. 连接 1:开始事务
  2. 连接 1:添加和更新行
  3. 连接二:更新进度
  4. 连接 1:添加和更新更多行。

然后,在另一个 HTTP 连接中,我正在轮询并输出进度值,但在连接 1 上的事务提交之前它永远不会更新。

除了将作业跟踪表移动到完全不同的数据库之外,有什么方法可以获得我想要的行为?

mysql mariadb transaction

7
推荐指数
2
解决办法
6085
查看次数

标签 统计

mariadb ×1

mysql ×1

transaction ×1