この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法を例を使用して説明します。ご参考までに、詳細は以下の通りです。 取引
トランザクションは、一連のアトミック SQL クエリ、または独立した作業単位です。データベース エンジンが一連の操作ステートメントを実行すると、すべての操作が実行されます。いずれかの操作がクラッシュしたり、その他の理由で実行できない場合は、すべてのステートメントは実行されません。つまり、トランザクション内のすべてのステートメントは、正常に実行されるか、すべて失敗します。
索引
インデックスは、ストレージエンジンのユーザーがレコードを素早く見つけられるようにするデータ構造です。例えば、 userId = 1 の場合、userName を user から選択します。 userId 列にインデックスを追加すると、MySQL はインデックスを使用して userId の行を検索します。つまり、MySQL は最初に値でインデックスを検索し、次にその値を含むすべてのデータ行を返します。
ロックここでは主にダウンリンクレベルのロックについて説明します。
MyISAM エンジンは、テーブル全体をロックするものと理解できます。同時に読み取ることはできますが、同時に書き込むことはできません。ロック期間中、他のプロセスはテーブルに書き込むことができません。書き込みロックの場合、他のプロセスは読み取りできません。
エンジン INNODB では、レコードの 1 行がロックされ、同時に読み取ることはできますが、同時に書き込むことはできません。行レベルのロックはオーバーヘッドが高く、ロックが遅く、デッドロックが発生する可能性があります。ロックの粒度は最小で、ロック競合の可能性は最も低く、同時実行性は最も高くなります。
InnoDB はデフォルトで行レベル ロックを実行するため、MySQL は主キーが明示的に指定されている場合にのみ行ロックを実行します。それ以外の場合、MySQL はテーブル ロックを実行します。 例1: (主キーを明示的に指定し、そのようなレコードがある場合は行ロック) SELECT * FROM products WHERE id='3' FOR UPDATE; SELECT * FROM products WHERE id='3' and type=1 FOR UPDATE; 例 2: (主キーを明示的に指定します。そのようなレコードが見つからない場合は、ロックは実行されません) SELECT * FROM products WHERE id='-1' FOR UPDATE; 例 3: (主キーなし、テーブルロック) SELECT * FROM products WHERE name='Mouse' FOR UPDATE; 例 4: (主キーが不明、テーブルロック) SELECT * FROM products WHERE id<>'3' FOR UPDATE; 例 5: (主キーが不明、テーブルロック) SELECT * FROM products WHERE id LIKE '3' FOR UPDATE; 注 1: FOR UPDATE は InnoDB にのみ適用可能であり、有効にするにはトランザクション ブロック (BEGIN/COMMIT) で実行する必要があります。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL インデックス操作スキルの概要」、「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: リアクトルーティングガード(ルーティングインターセプション)の実装
HTML を学ぶメリットは何ですか? 1: ウェブサイトやブログのウェブ構造を簡単に変更できます。...
1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...
この記事では、最新バージョンの MySQL データベース、つまり MySQL 5.7.17 圧縮バー...
最初の方法: デモとしてボタンをクリックしてテキストを表示または非表示にするクラスを動的に追加します...
目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...
システムの起動時に読み込む必要がある設定ファイル/etc/profile、/root/.bash_p...
1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...
目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...
0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...
1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...
デプロイに docker-compose を使用すると、出力ログと関連イベントが検証されて出力される...
開発中にこのような問題に遭遇しましたビデオ視聴記録が 100 に更新されると、視聴されたことを意味し...
以前、上司からログイン後にチェックマークを表示できるプログラムを作るように言われたのですが、Baid...
mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...
この記事の例では、ログインと登録の効果を実現するためのvueプロジェクトの具体的なコードを共有してい...