gpt4 book ai didi

mysql - 停止 MYISAM 表的表锁

转载 作者:行者123 更新时间:2023-11-29 04:35:09 24 4
gpt4 key购买 nike

我有一个 MYISAM 表,在该表上执行长时间运行的 SELECT 语句。这些语句是否会锁定正在读取的表?如果是这样,您如何阻止发生锁定?

根据 https://dev.mysql.com/doc/refman/5.7/en/internal-locking.html :

MySQL uses table-level locking for MyISAM, MEMORY, and MERGE tables, permitting only one session to update those tables at a time. This locking level makes these storage engines more suitable for read-only, read-mostly, or single-user applications.

这是否也意味着 SELECT 语句会创建锁?

最佳答案

Do these [long-running SELECT] statements cause locks on the tables that are being read?

是的。 MyISAM 表在读取时无法更新。如果表上有长时间运行的读取(即 SELECT)查询,则任何 UPDATE 或 DELETE 查询都必须等到读取查询完成。

(INSERT 查询有时是一个异常(exception)。只要表结构中没有内部漏洞,就可以允许写入者在表的末尾插入一行而无需获得锁. 但是,如果任何行被更新或删除,这可能会产生漏洞,这也需要 INSERT 查询来获得写锁。)

有关内部结构的更多信息,请阅读 table-level locks .但总而言之,如果关注并发性,您可能不应该使用 MyISAM。

关于mysql - 停止 MYISAM 表的表锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44895179/

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