ホームページ >よくある問題 >ファントムリーディングとは何ですか?

ファントムリーディングとは何ですか?

Guanhui
Guanhuiオリジナル
2020-06-11 11:35:509110ブラウズ

ファントムリーディングとは何ですか?

ファントムリーディングとは何ですか?

ファントムリードとは、トランザクション A が条件付きインデックスに基づいて N 個のデータを取得し、その後トランザクション B がその N 個のデータ以外の M 個のデータを変更または追加する M 個のデータを意味します。その結果、トランザクション A が再検索して N M 個のデータが見つかり、ファントム リードが発生します。

ファントム・リーディングを解決するにはどうすればよいですか?

  • ネクストキーロックで解決しました。

  • ファントム読み取りの理由は、行ロックでは行のみをロックできますが、新しいレコードを挿入するときに更新する必要があるのはレコード間の「ギャップ」であるためです。したがって、ファントム読み取りを解決するために、InnoDB はギャップ ロックを導入します。

  • ギャップ ロック ギャップ ロックは反復読み取りレベルでのみ有効です

  • ギャップ ロックと行ロックは総称してネクスト キー ロックと呼ばれます。 next-key ロックは、開いた間隔と閉じた間隔です。

データベースに定義されている 4 つの分離レベルのうち、

最も高い分離レベル SERIALIZABLE_READ では、ファントム読み取りの問題が発生しないことが保証されます。

Repeatable Read (RR)

現在の読み取りでは、RR 分離レベルにより、読み取りレコードがロック (レコード ロック) され、読み取り範囲がロックされることが保証されます。 . 、クエリ条件を満たす新しいレコードは挿入できません (ギャップ ロック)、ファントム リード現象はありません。


推奨チュートリアル: 「MySQL チュートリアル

以上がファントムリーディングとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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