したがって、PDO / PHP / MySQLのパフォーマンス:パフォーマンスの問題に関するトランザクションと直接実行を読んだ後、MySQLでテーブルをロックする方法について調査したいと考えていました。
http://dev.mysql.com/doc/refman/5.0/en/table-locking.html _
テーブルロックを使用すると、多くのセッションが同時にテーブルから読み取ることができますが、セッションがテーブルに書き込みを行う場合は、最初に排他的アクセスを取得する必要があります。更新中、この特定のテーブルにアクセスする他のすべてのセッションは、更新が完了するまで待機する必要があります。
この部分は、私たちのクエリのほとんどが挿入ではなく更新であるため、特に私を驚かせました。すべての更新/挿入が実行されるfooというテーブルを作成してから、すべての選択が行われるfoo_view(fooのコピー、またはfooと他のいくつかのテーブルとfooのリンク)というビューを作成したのではないかと思いました。このロックの問題は引き続き発生しますか?
つまり、foo_viewのSELECTクエリは、fooで更新が完了するまで待機する必要がありますか?
同僚が尋ねたもう1つの簡単な質問。これはキャッシングに影響しますか?つまり、SELECTがキャッシュされている場合、SELECTはキャッシュにヒットして結果を返しますか、それともロックが最初に終了するのを待ちますか?