ホームページ >データベース >mysql チュートリアル >ロックせずに MySQL スレーブ データベースからデータを選択する方法
MySQL でロックせずにデータを選択する
イベントによってアクティブに変更されるテーブルをクエリすると、テーブル ロックが発生する可能性があります。インパクトのあるパフォーマンス。このようなロックを発生させずに MySQL で select ステートメントを実行する方法はありますか?
スレーブ データベースのソリューション
「MYSQL WITH」というタイトルの記事で説明されているソリューションNOLOCK" はスレーブ データベースであるため、この場合には適用されません。さらに、トランザクション分離レベルを READ-UNCOMMITTED に設定すると、STATEMENT ベースのバイナリ ロギング用に構成されたスレーブ データベースでエラーが発生します。
MySQL 固有の方法論
MySQL スレーブ データベースでデータを選択する際のロックを回避するには、次を使用できます。アプローチ:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT COUNT(online.account_id) cnt from online; COMMIT;
このメソッドは、トランザクション分離レベルを一時的に READ UNCOMMITTED に設定します。これにより、ロックを取得せずに select ステートメントを続行できるようになります。ただし、この設定は後続の COMMIT ステートメントを含むトランザクション内でのみ使用できることに注意してください。
改善提案
代わりに、次の使用を検討できます。 Michael Mior が提案した次の構文:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT COUNT(online.account_id) cnt from online; COMMIT;
以上がロックせずに MySQL スレーブ データベースからデータを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。