因此,在阅读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?
我的同事问的另一个简短问题。这会影响缓存吗?即如果SELECT被缓存它会点击缓存并返回结果,还是会等待锁先完成?
答案 0 :(得分:3)