小编chx*_*chx的帖子

MySQL 中的无死锁 MERGE 类似?

我正在尝试MERGE在 Drupal 中实现 MySQL 驱动程序的某些部分。当然,Drupal 有一些东西,但实际上它只是有效,因为最常见的 MERGE 发行者只是吃异常。

因此,无论我们尝试什么,都会发生死锁。我们做什么,我们开始一个事务,然后SELECT ... FOR UPDATE,尝试一个INSERT,如果它导致 23xxx 完整性错误,请尝试一个 UPDATE。死锁。我们删除了FOR UPDATE我们决定供我们使用的cos,没关系。依旧是僵局。

我不能只切换隔离级别,因为READ COMMITTED每个SET TRANSACTION 都需要行日志记录:

从 MySQL 5.1 开始,如果使用 READ COMMITTED [...],则必须使用基于行的二进制日志记录。

并且每个READ UNCOMMITTED也需要行日志记录。这里是二进制日志设置

要更改全局 binlog_format 值,您必须具有 SUPER 权限。对于 MySQL 5.1.29 的 session 值也是如此。

我不能要求每个 Drupal 设置都有SUPER,我们也不能说 Drupal 与基于语句的二进制日志不兼容,因为这是默认的和最普遍的。

INSERT ... ON DUPLICATE KEY既不够通用,也没有死锁

所以现在怎么办?

mysql deadlock

7
推荐指数
1
解决办法
533
查看次数

标签 统计

deadlock ×1

mysql ×1