![](/img/trans.png)
[英]Why MyISAM storage engine does not support row level locking as InnoDB
[英]Clarifying the difference between row-level lock in InnoDB engine and table-level lock in MyISAM engine in MySQL database
让我们说,我有两个用户试图按以下顺序访问数据库中名为“ comments”的表:
User1正在制作并更新ID = 10的记录
更新评论SET评论=“ Hello World”,id = 10
User2对同一表注释的所有行进行选择
选择*从评论
我想讨论以下情况之间的区别:
我想知道此锁定如何影响选择查询???
我的意思是,如果select向数据库查询注释表的整个记录并发现其中之一(id = 10)已锁定,那么数据库是否会再次将select查询排队,直到更新完成?
如果是,那么两个引擎有什么区别?
如果否,我想说的是我在网站上也遇到同样的情况,甚至我将表引擎从MyISAM更改为InnoDB,但是在存在更新或插入查询时仍然排队任何请求的问题仍然存在。
对于这种情况的任何解释将非常有用。 先感谢您
在InnoDB中,这取决于是否启用事务。 InnoDB具有MVCC功能,这意味着在更新线程1时,线程2可以无锁读取。
如果事务被禁用,是否与MyISAM相同? 我想是这样,但不确定。
在您的方案中的Innodb中,结果将用于选择查询,但如果未更新,则ID为10的行将包含旧数据。结果不会停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.