我们正在考虑在我们的应用程序中使用MySQL合并视图,并在文档中遇到以下令人费解的语言:
显式选择TEMPTABLE的一个原因是,在创建临时表之后以及在用于完成处理语句之前,可以在基础表上释放锁。这可能导致比MERGE算法更快的锁定释放,因此使用该视图的其他客户端不会被阻止。
我读这个的方式是合并视图上的选择取出读锁定,但这似乎不对。两个客户可以同时从一个表中读取它们的方式吗?
谢谢!
答案 0 :(得分:1)
如果在MyISAM表上创建视图,则SELECT和UPDATE是互斥的,因此表上的SELECT / UPDATE将阻止视图上的任何UPDATE / SELECT。所以你想要保持锁定。
在InnoDB上,这不是问题。
答案 1 :(得分:0)
我读它的方式是,虽然它取出一个锁(它必须读取数据,对吗?),它构建一个TEMPTABLE,然后释放锁。在此之后要完成的任何工作都可以在没有锁定的情况下完成,因此其他客户可以使用基础表格获得乐趣。
可以通过这种方式更快地释放读锁定。