MySQL クエリによるロックの回避
MySQL では、特定のクエリによってロックが発生する可能性があり、特にクエリ対象のテーブルが頻繁にクエリされる場合にパフォーマンスの問題が発生することがあります。変更されました。これに対処するには、ロックを発生させずに選択ステートメントを実行する方法はありますか?
問題の元のクエリ:
並列イベントによりテーブルをロックします。テーブルも修正します。この質問では、可能な代替案を検討しています。
回答で言及されている解決策の 1 つは、トランザクション分離レベルを READ-UNCOMMITTED に設定することです。ただし、このアプローチは STATEMENT モードのバイナリ ロギングと互換性がないため、スレーブ データベースには理想的ではありません。
スレーブ データベースと互換性のある代替アプローチは、次の構文を使用することです:
このメソッドは、select ステートメントの間、ロックを効果的に無効にします。ただし、これにより非決定的な結果が生じる可能性があることに注意することが重要です。
別の提案は、次の構文を使用することです。
このオプションは、 select ステートメントを使用して、分離期間中に行われた変更が直ちにコミットされるようにします。このアプローチは、以前の方法と比較してパフォーマンスに影響を与える可能性があることに注意してください。さらに、分離レベルはコミット時に自動的にリセットされるため、明示的に REPEATABLE READ に戻す必要はありません。
これらのアプローチを採用することで、MySQL で選択クエリを実行する際のロックを回避できます。パフォーマンスが向上し、競合が減少します。ただし、適切な方法を選択するときは、データの精度と一貫性に対する潜在的なトレードオフと影響を考慮することが重要です。
以上がロックを発生させずに MySQL で SELECT ステートメントを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。