検索
ホームページデータベースmysql チュートリアルMySQLデータベーストランザクションとストレージエンジンの詳細な説明

MySQLデータベーストランザクションとストレージエンジンの詳細な説明

Nov 27, 2019 pm 06:07 PM
mysql事務ストレージエンジンデータベース

MySQLデータベーストランザクションとストレージエンジンの詳細な説明

1. リレーショナル データベースと非リレーショナル データベース

1. リレーショナル データベースの特徴 :

#1) データはテーブルの形式で表示されます

##2) 各行にはさまざまなレコード名があります

3) 各列はレコード名に対応するデータ フィールドです

4) 多くの行と列がフォームを形成します

# 5) 複数のフォームがデータベースを形成します

2. リレーショナル データベースの利点:

1) 複雑なクエリ: SQL ステートメントを便利に使用できます1 つのテーブルと複数のテーブルの間で非常に複雑なデータ クエリを実行します。

#2) トランザクションのサポート: 高いセキュリティ パフォーマンスを備えたデータ アクセス要件を実現できます。

3. 非リレーショナル データベースの利点:

1) パフォーマンス: NOSQL はキーと値のペアに基づいています。テーブルとして 主キーと値の対応関係を SQL レイヤで解析する必要がないため、パフォーマンスが非常に高くなります。

2) スケーラビリティ: また、キーと値のペアに基づいているため、データ間の結合がないため、水平方向の拡張が非常に簡単です。

質問: 3 つの従来のデータベースの違いは何ですか?

回答: 3 つはデータ間の関係に基づいています。階層データベースはツリー構造を持ち、ネットワーク データベースはリンク ポインタ構造を持ちます。リレーショナル データベースは 2 つです。 -次元テーブル構造。

2. トランザクション (ACID)

トランザクションは、単一の論理単位として実行される一連のトランザクションです。 work オペレーション。これらのオペレーションは全体としてシステムに送信され、すべてが実行されるか、まったく実行されません。

トランザクションは、分割できない論理的な作業単位です。

トランザクションには、ACID 属性と呼ばれる次の 4 つの属性が必要です:

Atomicity

: Aトランザクションは完全な操作です。モノの各操作は分離できません (アトミック); すべてが実行されるか、何も実行されないかのどちらかです;

Consistency (一貫性)

: トランザクションが完了すると、データは一貫した状態である必要があります;

分離 (分離)

: データを変更するすべての同時トランザクションは相互に分離されており、トランザクションが相互に分離されている必要があることを示します。独立している必要があり、いかなる形でも他のトランザクションに依存したり影響を与えたりしてはなりません;

永続性 (耐久性)

: トランザクションの完了後、データベースへの変更は行われません。トランザクション ログは永続的であるため、トランザクションの永続性を維持できます。

トランザクション分離レベル:

コミットされていないコンテンツの読み取り

(ダーティ読み取り読み取りアンコミットとも呼ばれます): すべてのトランザクションが他のコミットされていないトランザクションの実行結果を確認できることを意味します。ダーティ リード、反復不可能な読み取り、ファントム リードの問題が発生する可能性があります。

送信されたコンテンツの読み取り

(コミットされた読み取り): トランザクションは、送信されたトランザクションによって行われた変更のみを確認できます。ダーティ リードは回避できますが、反復不可能な読み取りやファントム リードの問題が発生する可能性があります。

Repeatable read

(repeatable read): これは MySQL のデフォルトのトランザクション分離レベルであり、同じトランザクションの複数のインスタンスが同時にデータを読み取るときに、同じデータ行が表示されます。ダーティ リードと非反復読み取りは回避でき、ファントム リードが発生する可能性があります。

Serializable

(シリアル化可能): 最も高い分離レベルです。各読み取りデータ行に共有ロックを追加して、読み取りを防止します。と競合する可能性があります。相互に連携することで、ファントム読み取りの問題を解決します。ダーティ リード、非反復読み取り、ファントム リードを回避できます。

同時トランザクションによって引き起こされる問題:

1. 更新が失われます

: 2 つのトランザクション T1 と T2 が同じデータを読み取り、変更しました。T2 によって送信された結果が T1 によって送信された結果を上書きし、T1 の変更が失われます。

#2. ダーティ リード

: トランザクション T1 は特定のデータを変更し、ディスクに書き戻しました。トランザクション T2 が同じデータを読み取った後、T1 は、理由は取り消されます。このとき、T1 の変更されたデータは元の値に復元されます。T2 によって読み取られたデータはデータベース内のデータと一致しません。したがって、T2 によって読み取られたデータは「ダーティ」データ、つまり不正なデータになります。データ。

3. 反復不可能な読み取り: トランザクション内で同じデータを複数回読み取ることを指します。このトランザクションが終了する前に、別のトランザクションも同じデータにアクセスしました。その後、最初のトランザクションの 2 回のデータ読み取りの間で、2 番目のトランザクションの変更により、最初のトランザクションで 2 回読み取られたデータが異なる可能性があります。これは、トランザクション内で同じクエリによって 2 回読み取られたデータが異なることを意味するため、非反復読み取りと呼ばれます。

4. ファントム読み取り: 例: 現在、給与 5,000 の従業員が 10 人いて、トランザクション A は給与 5,000 の従業員 10 人全員を読み取ります。このとき、トランザクション B は給与 5,000 のレコードを挿入しました。このとき、トランザクション A は給与 5,000 の従業員を再度読み取り、レコードは 11 になります。このときファントムリードが発生します。

#ノンリピートリードとファントムリードの違いは何ですか? 非反復読み取りの焦点は変更であり、ファントム読み取りの焦点は追加または削除です。

MVCC (マルチバージョン同時実行制御メカニズム): InnoDB の MVCC は、レコードの各行の後に渡されます。これは、2 つの非表示列を保存することによって実現されます。行の作成時刻と行の削除時刻がそれぞれ保存されます (ここに保存されるのは実際の時間値ではなく、システムのバージョン番号です)。新しいトランザクションが開始されるたびに、システムのバージョン番号が自動的に増加します。トランザクション開始時のシステム バージョン番号は、クエリされたレコードの各行のバージョン番号と比較するためのトランザクション ID として使用されます。MVCC を使用すると、反復読み取り分離レベルではファントム読み取りが発生しなくなります。

3. ストレージ エンジン

ストレージ エンジンはデータベースの基盤となるソフトウェア組織であり、データベース管理システム (DBMS) はデータを使用します。データの作成、クエリ、更新、削除を行うエンジン。

1. InnoDB (クラスター化インデックス方式)

innodb の基礎となるストレージ構造は B ツリーであり、ツリーの各ノードは対応します。 innodb. のページに、ページ サイズは固定されており、通常は 16K に設定されます。非リーフ ノードにはキー値のみが含まれ、リーフ ノードには完全なデータが含まれます。

使用シナリオ: 1) 頻繁に更新されるテーブルは複数の同時更新リクエストを処理します;

2) トランザクションセーフなテーブル (ACID) をサポートします。行ロックと外部キー;

3) bin-log ログなどを通じて復元できます。

innodb主キーが設定されていない場合, 6 バイトの主キーが自動的に生成されます (ユーザーには表示されません)。

2. MyISAM (非クラスター化インデックス モード)

MyISAM は、パフォーマンスを重視した MySQL 5.1 より前のデフォルトのストレージ エンジンでした。ただし、トランザクションはサポートされておらず、行ロックや外部キーもサポートされていません。テーブル ロックはサポートされていますが、データの挿入または更新時にはテーブル全体をロックする必要があり、効率が低下します。実際のデータではなく、インデックスのみがキャッシュされます。 MyISAM はデータを非常に速く読み取り、多くのメモリとストレージ リソースを占有しません。

MyISAM は主キーの存在を許可せず、静的なインデックス構造です。

質問: MySQL の MyISAM と InnoDB の違いは何ですか?

回答: MySQL データベースでは、最も一般的に使用される 2 つのエンジンは innodb と myisam です。現在、InnoDB は MySQL のデフォルトのストレージ エンジンです。

1) トランザクション: MyISAM はパフォーマンスを重視しており、クエリ速度は InnoDB 型よりも高速ですが、トランザクションはサポートしていません。 InnoDB はトランザクション サポートを提供します。

2) 外部キー: MyISAM は外部キーをサポートしませんが、InnoDB は外部キーをサポートします。

3) ロック: MyISAM はテーブル レベルのロックのみをサポートします。InnoDB は行レベルのロックとテーブル レベルのロックをサポートします。デフォルトは行レベルのロックです。行ロックによりパフォーマンスが大幅に向上します。マルチユーザーの同時操作のパフォーマンス。 innodb は挿入および更新操作が多数ある状況に適しており、myisam はクエリが頻繁に行われる状況に適しています。さらに、innodb テーブルの行ロックは絶対的ではありません。SQL ステートメントの実行時に MySQL がスキャンする範囲を決定できない場合、innodb はテーブル全体もロックします。例: update table set num=1 where name like " �a%"。

4) フルテキスト インデックス: MyISAM はフルテキスト インデックスをサポートしますが、Innodb はフルテキスト インデックスをサポートしません。 innodb は、MySQL 5.6 以降でフルテキスト インデックスのサポートを提供します。

5) テーブルの主キー: Myisam は主キーのないテーブルの存在を許可します; innodb: 主キーが設定されていない場合、6 バイトの主キーが自動的に生成されます (ユーザーには表示されません)。ユーザー)。

6) テーブル内の特定の行数: myisam: select count(*) from table。myisam は単に保存された行の数を読み取ります。 myisam にはカウンタが組み込まれているため、カウントするときにカウンタから直接読み取ります(*)。

innodb:不保存表格的具體行數,也就是說,執行select count(*) from table 時,innodb要掃描一遍整個表來計算有多少行。

推薦學習:MySQL教學

#

以上がMySQLデータベーストランザクションとストレージエンジンの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcnblogsで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

MySQLの役割:WebアプリケーションのデータベースMySQLの役割:WebアプリケーションのデータベースApr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQL:最初のデータベースを構築しますMySQL:最初のデータベースを構築しますApr 17, 2025 am 12:22 AM

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQL:データストレージに対する初心者向けのアプローチMySQL:データストレージに対する初心者向けのアプローチApr 17, 2025 am 12:21 AM

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

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

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール