ロックの概念 ①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータにおいて、複数のプロセスやスレッドが同時にリソースにアクセスできるように調整する仕組み。 ③ データベースでは、従来のコンピューティングリソース(CPU、RAM、I/Oなど)の競合に加えて、データは多くのユーザーによって共有され、アクセスされるリソースでもあります。 ④. 同時データアクセスの一貫性と有効性をどのように確保するかは、すべてのデータベースが解決しなければならない問題です。 ⑤. ロック競合もデータベースの同時アクセス性能に影響を与える重要な要素です。 MySQL ロックの概要 他のデータベースと比較すると、MySQL のロック メカニズムは比較的単純です。最も注目すべき特徴は、異なるストレージ エンジンが異なるロック メカニズムをサポートしていることです。たとえば、MyISAM および MEMORY ストレージ エンジンはテーブル レベルのロックを使用します。 BDB ストレージ エンジンはページ レベルのロックを使用しますが、テーブル レベルのロックもサポートします。 InnoDB ストレージ エンジンは行レベルのロックとテーブル レベルのロックの両方をサポートしていますが、デフォルトでは行レベルのロックが使用されます。 テーブル レベル ロック: テーブル レベル ロックは、MySQL で最も細かいロックであり、現在の操作のテーブル全体をロックすることを意味します。オーバーヘッドが低く、ロックが高速で、デッドロックは発生せず、ロックの粒度が大きく、ロック競合の可能性が最も高く、同時実行性が最も低くなります。 行レベル ロック: 行レベル ロックは MySQL で最も細かい粒度のロックであり、現在操作中の行のみがロックされます。オーバーヘッドが高く、ロックが遅く、デッドロックが発生する可能性があります。ロックの粒度は最小で、ロック競合の可能性は最低で、同時実行性は最高です。 ページ レベル ロック: ページ レベル ロックは、MySQL のロックの一種で、ロックの粒度は行レベル ロックとテーブル レベル ロックの中間です。テーブルレベルのロックは高速ですが、競合が多く発生します。行レベルの競合は少なくなりますが、速度は遅くなります。したがって、隣接するレコードのグループを一度にロックするために、妥協的なページ レベルが採用されます。 BDB はページレベルのロックをサポートしています。オーバーヘッドとロック時間はテーブル ロックと行ロックの間であり、デッドロックが発生する可能性があります。ロックの粒度はテーブル ロックと行ロックの間であり、同時実行性は平均的です。 上記の特性から、どのロックが優れているかを一概に言うのは難しいことがわかります。特定のアプリケーションの特性に基づいて、どのロックがより適しているかを言うことしかできません。 !ロックの観点からのみ見ると、テーブル レベルのロックは、Web アプリケーションなど、クエリ指向でインデックス条件に基づいて少量のデータのみを更新するアプリケーションに適しています。行レベルのロックは、一部のオンライン トランザクション処理 (OLTP) システムなど、インデックス条件と同時クエリに基づいて少量の異なるデータを大量に同時に更新するアプリケーションに適しています。 例 ①商品を購入する際、在庫が1つしかなく、2人が同時に購入しようとした場合、誰が受け取るのでしょうか? ②. トランザクションを使用して、まず在庫テーブルから商品データを取得し、次に注文を挿入し、支払い後に支払いテーブル情報を挿入します。 ③. 商品の数量を更新します。このプロセスでは、ロックを使用することで限られたリソースを保護し、分離性と同時実行性の矛盾を解決できます。 ロックの分類 操作別:
粒子サイズ別:
上記は、MySQL ロックに関するすべての関連知識ポイントです。123WORDPRESS.COM をお読みいただき、サポートしていただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: Linux でファイアウォールがオフになっているかどうかを確認する方法
目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...
React 16の内容です。最新技術ではありませんが、ドキュメントで調べるまであまり話題に上がらなか...
CPU 権限の制限により、Linux ユーザー状態とカーネル状態間の通信は、プロセス間通信を使用した...
最近、仕事中に問題が発生しました。Docker コンテナがホストの redis にアクセスできず、t...
この記事では、CSS3 の transform を使用して子要素の固定配置を絶対配置に変更する方法を...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
ネットワークリクエストを送信すると、次の保存情報が表示されます。おめでとうございます。ドメインを越え...
目次01 k8sの一般的なコントローラーRCコントローラーデプロイメント コントローラーステートフル...
ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...
自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...
デザイナーは心理学を理解する必要があるデザイナーが知るべき心理学という本は非常に興味深いです。まず、...
この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...
SQL を最適化する必要があるのはなぜですか?当然ですが、SQL ステートメントを記述する場合、次の...
この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...
html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...