MySQL がファントム読み取り問題をどのように解決するかを簡単に分析した記事
MySQL はファントム リードの問題をどのように解決しますか?この問題については次の記事で解説していますので、疑問を持ちながら記事を読んでみましょう!
トランザクション特性 (ACID): Atomicity (
Atomicity##) #)、分離
(分離
)、一貫性
(一貫性
)および永続性
: READ UNCOMMITTED(READ UNCOMMITTED
), READ COMMITTED
(READ COMMITTED
), Repeatable Read
(REPEATABLE READ
)、 Serializable
(SERIALIZABLE
) そして、それぞれの種類の分離 レベルによって引き起こされる問題は次のとおりです。 :
- READ UNCOMMITTED
- 分離レベルでは、
ダーティ読み取り
、非反復読み取り
および##が発生する可能性があります。 #phantom readproblem
READ COMMITTED
分離レベルでは、 - non-repeatable read
および
phantom readの問題が発生する可能性がありますが、これらは問題です。不可能です
ダーティ リード問題
REPEATABLE READ
分離レベルでは、 - ファントム リード
問題が発生する可能性がありますが、
ダーティ リード#は発生しません## およびNon-repeatable read
問題SERIALIZABLE
分離レベルでは、さまざまな問題は発生しません -
MySQL InnoDB の場合ストレージ エンジンでサポートされるデフォルトの分離レベルは
REPEATABLE-READ (反復可能) です。上記の SQL 標準の 4 つの分離レベルの定義から、
となります。 ファントム リード を防ぐことは不可能ですが、MySQL InnoDB ストレージ エンジンがファントム リードの問題を解決することは誰もが知っています。では、どのようにしてそれを解決するのでしょうか? 1. 行フォーマット
本題に入る前に、まず行フォーマットとは何かを一般的に理解すると、次の MVCC を理解するのに役立ちます。行フォーマットは、テーブル内の行レコードがディスクに保存される方法です。Innodb ストレージ エンジンには、合計 4 つの異なるタイプの行フォーマットがあります:
compact、redundant
, dynamic
, compress
; 行フォーマットには多くの種類がありますが、原理的には基本的に同じで、次のように、 compact
行フォーマット: As図からわかるように、完全なレコードは実際には 2 つの部分に分けることができます:
記録された追加情報 と
記録された実際のデータ .
記録された追加情報
はそれぞれ changes. 長いフィールド長リスト
、NULL 値リスト
および レコード ヘッダー情報
、および 記録された実際のデータ
独自に定義した列に加えて、 MySQL は、各レコードにいくつかのデフォルトの列を追加します。これらのデフォルトの列は、隠し列
とも呼ばれます。特定の列は次のとおりです:
Description | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
一意の行 ID 1 つの Record | transaction_id | |||||||||||||||||||||||||||||||||||||||||||||
トランザクション ID | roll_pointer | |||||||||||||||||||||||||||||||||||||||||||||
ロールバック ポインタ |
非表示列の値について心配する必要はありません。
#2. MVCC の詳細な説明# を見つけることができます。 #2.1 バージョン チェーン次のようなレコードがあるとします。レコードに挿入された トランザクション ID
が記録されます。各 、古いバージョンのレコードであっても、更新の数が増えると、すべてのバージョンが # データベースの 4 つの分離レベル: 1) read uncommitted; 2)read committed
creator_trx_id
|
以上がMySQL がファントム読み取り問題をどのように解決するかを簡単に分析した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

スタックは、LIFO(最後の、最初のアウト)の原則に従うデータ構造です。言い換えれば、スタックに最後に追加する要素は、削除される最初の要素です。要素をスタックに追加(またはプッシュ)すると、それらは上に配置されます。つまり、とりわけ

Intellijのアイデアは、Spring Boot開発を簡素化し、Java開発者の間でお気に入りになります。 その慣習と構成アプローチは、ボイラープレートコードを最小限に抑え、開発者がビジネスロジックに集中できるようにします。このチュートリアルでは、2つのメトーを示しています
