1. 事務:
バッチでSQL文のグループを実行する 取引の 4 つの主な特徴:ACID原則 1. 原子性: トランザクションは最小の実行単位であり、分割できません。トランザクションのアトミック性により、アクションは完全に完了するか、まったく影響がないかのいずれかになります。 2. 一貫性:トランザクションの実行前と実行後にデータの一貫性が維持され、同じデータを読み取る複数のトランザクションの結果は同じになります。 3. 独立性: データベースに同時にアクセスする場合、ユーザーのトランザクションは他のトランザクションによって干渉されず、同時トランザクション間のデータベースは独立しています。 4. 耐久性: トランザクションがコミットされた後。データベース内のデータに加えられた変更は永続的であり、データベースに障害が発生しても影響を受けません。 --------トランザクションコミット 同時トランザクションはどのような問題を引き起こしますか? (孤立によって生じるいくつかの問題)一般的なアプリケーションでは、複数のトランザクションが同時に実行され、多くの場合、それぞれのタスクを完了するために同じデータに対して操作が行われます (複数のユーザーが同じデータに対して操作を行います)。並行性は必要ですが、次のような問題が発生する可能性があります。 ダーティ リード: トランザクションがデータにアクセスしてデータを変更し、この変更がデータベースにコミットされていない場合、別のトランザクションもデータにアクセスしてデータを使用します。このデータはコミットされていないため、別のトランザクションによって読み取られたデータは「ダーティ データ」となり、「ダーティ データ」に基づいて実行される操作は不正確になる可能性があります。 変更の損失: 1 つのトランザクションがデータの一部を読み取ると、別のトランザクションもそのデータにアクセスします。その後、最初のトランザクションでデータが変更されると、2 番目のトランザクションもそのデータを変更します。このように、最初のトランザクションでの変更結果は失われるため、変更の消失と呼ばれます。たとえば、トランザクション 1 はテーブル内のデータ A=20 を読み取り、トランザクション 2 も A=20 を読み取り、トランザクション 1 は A=A-1 を変更し、トランザクション 2 も A=A-1 を変更し、最終結果は A=19 となり、トランザクション 1 の変更は失われます。 反復不可能な読み取り:トランザクション内で同じデータを複数回読み取ることを意味します。このトランザクションが終了する前に、別のトランザクションもデータにアクセスします。その後、最初のトランザクションでの 2 回の読み取りの間で、最初のトランザクションによって 2 回読み取られたデータは、2 番目のトランザクションの変更により異なる可能性があります。これは、トランザクションで 2 回読み取られるデータが異なることを意味するため、非反復読み取りと呼ばれます。 ファントム リード: ファントムリードは、反復不可能なリードに似ています。これは、1 つのトランザクション (T1) が数行のデータを読み取り、次に別の同時トランザクション (T2) がデータを挿入するときに発生します。後続のクエリでは、最初のトランザクション (T1) によって、元々存在しなかった追加のレコードが、まるで錯覚のように見つかるため、ファントム リードと呼ばれます。 非反復読み取りとファントム読み取りの違い。 非反復読み取りの焦点は、レコードを複数回読み取り、一部の列の値が変更されたことが見つかるなどの変更です。ファントム読み取りの焦点は、レコードを複数回読み取り、レコードの数が増えたか減ったかが見つかるなどの追加または削除です。 トランザクション分離レベルとは何ですか? REPEATABLE MySQL のデフォルトの分離レベル: MySQL InnoDB ストレージ エンジンでサポートされるデフォルトの分離レベルは、REPEATABLE-READ (再読み取り可能) です。 SELECT@@tx_isolation;コマンドで確認できる。 2. 索引:MySQL のインデックスの公式定義は次のとおりです: インデックスは、MySQL がデータを効率的に取得するのに役立つデータ構造です。文の主幹を抽出することで、インデックスの本質、つまりインデックスがデータ構造であることがわかります。 MySQL インデックスで使用されるデータ構造には、主に BTree インデックスとハッシュ インデックスが含まれます。ハッシュ インデックスの場合、基礎となるデータ構造はハッシュ テーブルです。したがって、ほとんどの要件が単一レコード クエリである場合は、クエリ パフォーマンスが最も高速なハッシュ インデックスを選択できます。その他のほとんどのシナリオでは、BTree インデックスが推奨されます。 MySQL の BTree インデックスは B ツリー内の B+Tree を使用しますが、2 つの主要なストレージ エンジンの実装方法は異なります。 MyISAM: B+Tree リーフ ノードのデータ フィールドには、データ レコードのアドレスが格納されます。インデックスの取得中、まず B+Tree 検索アルゴリズムに従ってインデックスが検索されます。指定されたキーが存在する場合は、そのデータ フィールドの値が取得され、次にデータ フィールドの値をアドレスとして使用して対応するデータ レコードが読み取られます。これは「非クラスター化インデックス」と呼ばれます。 InnoDB: データ ファイル自体がインデックス ファイルです。 MyISAM と比較すると、インデックス ファイルとデータ ファイルが分離されており、テーブル データ ファイル自体は B+Tree によって編成されたインデックス構造であり、ツリーのリーフ ノード データ フィールドに完全なデータ レコードが格納されます。このインデックスのキーはデータ テーブルの主キーであるため、InnoDB テーブル データ ファイル自体が主インデックスになります。これはクラスター化インデックスと呼ばれます。残りのインデックスは補助インデックスとして使用されます。補助インデックスのデータフィールドには、MyISAM とは異なり、アドレスではなく、対応するレコードの主キーの値が格納されます。主インデックスに基づいて検索する場合は、キーが配置されているノードを直接見つけてデータを取得できます。補助インデックスに基づいて検索する場合は、まず主キーの値を取得してから、主インデックスを調べる必要があります。したがって、テーブルを設計するときには、長すぎるフィールドを主キーとして使用したり、非単調なフィールドを主キーとして使用したりすることはお勧めしません。主インデックスが頻繁に分割される原因となるためです。 インデックスの役割:
インデックス分類:
一意の識別子、主キーは繰り返すことができず、主キーとして使用できる列は 1 つだけです。
重複する列は避けてください。一意のインデックスは繰り返すことができます。複数の列を一意のインデックスとして識別できます。
デフォルトでは、インデックスまたはキーキーワードを使用して設定します。
特定のデータベースエンジン、MylSAMでのみ利用可能 データを素早く見つける インデックス基準:
インデックスのデータ構造:-- 上記のインデックスを作成するときに、インデックスの種類を指定できます。ハッシュ タイプのインデックスには、単一クエリ用の高速インデックスと範囲クエリ用の低速インデックスの 2 種類があります。Btree タイプのインデックス: B+ ツリー。レイヤーが増えるほど、データ量が指数関数的に増加します (InnoDB がデフォルトでサポートしているため、これを使用します) -- 異なるストレージ エンジンは異なるインデックス タイプをサポートします。InnoDB はトランザクション、行レベルのロック、B ツリー、フルテキストなどのインデックスをサポートしますが、ハッシュ インデックスはサポートしません。 MyISAM はトランザクションをサポートしていませんが、テーブル レベルのロック、B ツリー、フルテキスト、およびその他のインデックスをサポートしていますが、ハッシュ インデックスはサポートしていません。 メモリはトランザクションをサポートしていませんが、テーブル レベルのロック、B ツリー、ハッシュ、およびその他のインデックスをサポートしていますが、フルテキスト インデックスはサポートしていません。 NDB はトランザクション、行レベルのロック、ハッシュ インデックスをサポートしますが、B ツリー、フルテキスト、その他のインデックスはサポートしません。 アーカイブはトランザクションをサポートしていませんが、テーブル レベルのロックはサポートしています。B ツリー、ハッシュ、フルテキスト、およびその他のインデックスはサポートしていません。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: 検索ボックスと検索ボタンの境界線が重なり合わない問題を解決
>>: HTML テーブルタグと関連する改行の問題の詳細な分析
1つ。まず、アイデアとしてパッケージ化する必要があります。私はSpringbootフレームワークプロ...
目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...
この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...
目次1. 解体のヒント2. デジタルセパレーター3. try...catch...finally が...
1. MySQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...
目次スプレッド演算子とレスト演算子とは何ですか?配列スプレッド演算子残り演算子(コレクション関数)ス...
この記事では、参考までにメッセージボードを実装するためのJavaScriptの具体的なコードを紹介し...
一般的なNginx構成ではクロスドメインが可能 サーバー{ 11111 を聞いてください。 serv...
環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...
目次1. インスタンスをインストールして作成する2. vue-router4の新機能2.1 動的ルー...
背景説明: 既存の負荷分散装置には、付加価値状態にある指標があります (増加するだけで減少しないため...
目次1. CentOS 7.9 20にDockerをインストールする2. MySQL クラスターをデ...
js 日付時刻形式日付と時刻を指定された形式に変換します。例: YYYY-mm-dd HH:MM は...