gpt4 book ai didi

mysql - 即使在处理 'select' 查询时,myisam 也会在表上放置表锁?

转载 作者:可可西里 更新时间:2023-11-01 07:13:56 25 4
gpt4 key购买 nike

我正在阅读High Performance MySQL这本书,它提到:

performing one query per table uses table locks more efficiently: the queries 
will lock the tables invididually and relatively briefly, instead of locking
them all for a longer time.

MyISAM 即使在选择 某些东西时也会放置表锁?有人可以解释一下吗?

最佳答案

MyISAM 有不同种类的锁。 SELECT 操作在表上放置了一个READ LOCK。只要没有事件的WRITE LOCKS,在任何给定时间都可以有多个事件的读锁。修改表的操作,例如。 INSERTUPDATEDELETEALTER TABLE 在表上放置一个WRITE LOCK .只有在没有事件读锁的情况下,才能在表上放置写锁;如果有事件读锁,MyISAM 会在所有事件读锁过期后立即将写锁排队激活。

同样,当有一个事件的写锁时,尝试在表上放置一个读锁将使锁(和关联的查询)排队,直到表上的写锁过期。

最终这一切意味着:

  • 您可以拥有任意数量的事件读锁(也称为共享锁)
  • 您只能有一个事件的写锁(也称为独占锁)

有关详细信息,请参阅:http://dev.mysql.com/doc/refman/5.5/en/internal-locking.html

关于mysql - 即使在处理 'select' 查询时,myisam 也会在表上放置表锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com