【发布时间】:2011-03-01 19:49:47
【问题描述】:
所以在阅读了Performance in PDO / PHP / MySQL: transaction versus direct execution 关于性能问题之后,我正在考虑我对 MySQL 中的锁定表进行了一些研究。
开启http://dev.mysql.com/doc/refman/5.0/en/table-locking.html
表锁定使许多会话能够 同时从表中读取, 但是如果一个会话想要写一个 表,它必须首先获得独占 使用权。在更新期间,所有其他 想要访问这个的会话 特定表必须等到 更新完毕。
这部分让我印象特别深刻,因为我们的大多数查询都是更新而不是插入。我想知道是否有人创建了一个名为 foo 的表,在该表上执行了所有更新/插入,然后创建了一个名为 foo_view 的视图(foo 的副本,或者可能是 foo 和其他几个表加上 foo 的链接),所有选择都发生在该表上,这个锁定问题还会出现吗?
也就是说,对 foo_view 的 SELECT 查询是否仍需要等待对 foo 的更新完成?
我的同事又问了一个简短的问题。这会影响缓存吗? IE。如果 SELECT 被缓存,它会命中缓存并返回结果,还是会等待锁先完成?
【问题讨论】:
标签: mysql views table-locking