テストの結果、次の状況でテーブル ロックが発生することがわかりました。 1.like 2.更新、無条件削除操作 3.update、delete は条件付き操作ですが、主キー操作ではありませんSelect は、条件付きか無条件か、条件が主キーかインデックスかに関係なく、テーブルをロックしません。これは正しいです?私のテストに何か問題がありますか?
select では、select ... FOR UPDATE など、共有ロック、排他ロックなど、さまざまなレベルのロックを指定できます。 ロックが必要な理由については、簡単な例を示します。たとえば、前のドキュメントを継承するドキュメントがある場合、読み取りロックを追加して前のドキュメントをロックし、他の人が前のドキュメントを変更できないようにすることができます。送信する前に変更すると、データの不整合が発生します。
select ... FOR UPDATE
条件に主キーが含まれないか、主キーは含まれていても等号または IN ではない限り、テーブル全体がロックされます。これには、質問内の 3 つの状況がすべて含まれます。
テーブル全体をロックするか、いくつかの行をロックするかにかかわらず、選択は読み取りロックを追加し、更新と削除は書き込みロックを追加します。読み取りロックと書き込みロックが何であるかについては、Googleで検索できます。詳細については、トランザクション分離レベルも確認できますが、ここでは説明しません。
select では、
select ... FOR UPDATE
など、共有ロック、排他ロックなど、さまざまなレベルのロックを指定できます。ロックが必要な理由については、簡単な例を示します。たとえば、前のドキュメントを継承するドキュメントがある場合、読み取りロックを追加して前のドキュメントをロックし、他の人が前のドキュメントを変更できないようにすることができます。送信する前に変更すると、データの不整合が発生します。
条件に主キーが含まれないか、主キーは含まれていても等号または IN ではない限り、テーブル全体がロックされます。これには、質問内の 3 つの状況がすべて含まれます。
テーブル全体をロックするか、いくつかの行をロックするかにかかわらず、選択は読み取りロックを追加し、更新と削除は書き込みロックを追加します。読み取りロックと書き込みロックが何であるかについては、Googleで検索できます。詳細については、トランザクション分離レベルも確認できますが、ここでは説明しません。