0

我有一个 innodb 表,我想在一些维护查询上执行,这些查询将在并行线程上发生,它们将包括(按该顺序):

选择、更新、选择、删除、插入。

我只想允许 1 个并行线程访问该部分,那么有什么可以让我这样做的吗?:

mutex.block()
select
update
select
delete
insert
mutex.release()

这将在 php 中,所有查询都将使用 php 的 function 执行mysqli_query

我希望有一个交易的替代品,如果这里只能做交易,那就这样吧。

4

1 回答 1

0

MySQL 具有表锁锁(一种互斥锁)

PHP 支持几乎所有 POSIX 锁定机制,例如互斥锁信号量(但这些默认情况下不可用,请参阅相关的“安装/配置”手册章节)。

但实际上,我看不出你为什么要实现自己的同步机制的理由:事务正是为此目的而存在的,并且可能比任何自制的东西更有效和更可靠。

(如果您关心性能,那么数据库后端可能不是正确的选择)

于 2013-09-10T20:36:49.117 回答