この記事では、トランザクション、インデックス、ロックなどの 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データベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: リアクトルーティングガード(ルーティングインターセプション)の実装
mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...
プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...
目次背景DHCPの設定DHCP ファイル (動的ホスト構成プロトコル) の編集tftp 設定sysl...
目次これを Vue.$store.state.xx.xxストアからデータを取得する私のプロジェクトフ...
すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...
この記事では主に、CSS3 アニメーションで簡単な指クリックアニメーションを実装する例を紹介し、皆さ...
1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...
明らかな HTML、隠された「公開スクリプト」 Web ページのダウンロード時間を短縮する鍵は、フ...
1. 公式ウェブサイトにアクセスして、jdk-8u162-linux-x64.tar.gzなどのLi...
1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...
1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...
UCenter Homeは、ComsenzがリリースしたSNSサイト構築システムです。最新バージョン...
ステップ 1: メモ帳を使用して、MySQL インストール ディレクトリの「my.ini」ファイルを...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...
日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...