MySQL VIEWs的锁定行为?

时间:2011-05-20 20:23:17

标签: mysql

我们正在考虑在我们的应用程序中使用MySQL合并视图,并在文档中遇到以下令人费解的语言:

  

显式选择TEMPTABLE的一个原因是,在创建临时表之后以及在用于完成处理语句之前,可以在基础表上释放锁。这可能导致比MERGE算法更快的锁定释放,因此使用该视图的其他客户端不会被阻止。

我读这个的方式是合并视图上的选择取出读锁定,但这似乎不对。两个客户可以同时从一个表中读取它们的方式吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果在MyISAM表上创建视图,则SELECT和UPDATE是互斥的,因此表上的SELECT / UPDATE将阻止视图上的任何UPDATE / SELECT。所以你想要保持锁定。

在InnoDB上,这不是问题。

答案 1 :(得分:0)

我读它的方式是,虽然它取出一个锁(它必须读取数据,对吗?),它构建一个TEMPTABLE,然后释放锁。在此之后要完成的任何工作都可以在没有锁定的情况下完成,因此其他客户可以使用基础表格获得乐趣。

可以通过这种方式更快地释放读锁定。