ホームページ >データベース >mysql チュートリアル >ロックせずに MySQL スレーブ データベースからデータを選択する方法

ロックせずに MySQL スレーブ データベースからデータを選択する方法

DDD
DDDオリジナル
2024-12-13 05:02:09534ブラウズ

How to Select Data from a MySQL Slave Database Without Locking?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。