我有一个关于 MySQL 锁定和事务管理的问题。我的问题是 ..mysql 是否锁定了我在事务中执行选择/更新的元组/表?
使用 MyISAM,您可以使用concurrent_insert=2
优化,其中 anINSERT
不会阻止现有SELECT
语句或新语句(但会阻止任何其他语句)。
使用 InnoDB,规则是:
SELECT
从不阻塞UPDATE
或DELETE
将在该行上加锁。但这即使在SELECT
编辑同一行时也可以工作。 INSERT
s 更复杂:如果表中有AUTO_INCREMENT
,则该表被锁定(尽管如果不竞争 ,则允许其他并发操作AUTO_INCREMENT
)INSERT
s 可能会相互阻塞,因为锁定是在聚集索引上完成的。DELETE
UPDATE
范围上的s, s 也更复杂,并且由于聚集索引上的锁可能涉及更多块。这可能不是一个完整的列表,但应该能让您大致了解一下。
归档时间: |
|
查看次数: |
5157 次 |
最近记录: |