MySQL のロックに関する問題

MySQL のロックに関する問題

ロックの分類:

データ操作の粒度から:

テーブルロック:操作時にテーブル全体がロックされます。行ロック: 操作時に、現在の操作行がロックされます。

データ操作の種類に応じて:

読み取りロック (共有ロック): 複数の読み取り操作を、互いに影響を与えることなく、同じデータに対して同時に実行できます。書き込みロック(排他ロック):現在の操作が完了するまで、他のクライアントによる書き込みをブロックします。

ここに画像の説明を挿入


行テーブルロック機能:

ここに画像の説明を挿入


MyISAM テーブルロック:

テーブルロックを追加する方法
MyISAM は、クエリ ステートメント (SELECT) を実行する前に、関係するすべてのテーブルに読み取りロックを自動的に追加します。
INSERT などの操作を実行すると、関連するテーブルに書き込みロックが自動的に追加されます。このプロセスではユーザーの介入は必要ありません。したがって、通常、ユーザーは LOCK を直接使用する必要はありません。
TABLE コマンドは MyISAM テーブルを明示的にロックします。

ここに画像の説明を挿入

つまり、読み取りロックは書き込みをブロックしますが、読み取りはブロックしません。書き込みロックは読み取りと書き込みの両方をブロックします。

さらに、MyISAM の読み取り/書き込みロックのスケジュールは書き込み優先であるため、MyISAM は書き込みが中心のテーブルのストレージ エンジンとしては適していません。書き込みロックが取得されると他のスレッドは操作を実行できなくなるため、更新回数が多すぎるとクエリがロックを取得するのが困難になり、永続的にブロックされることになります。


InnoDB 行ロック

行ロックの概要 行ロックの特徴: InnoDB ストレージ エンジンに偏っており、オーバーヘッドが高く、ロックが遅く、デッドロックが発生する可能性があり、ロックの粒度が最小で、ロック競合の可能性が最も低く、同時実行性が最も高くなります。
InnoDB と MyISAM には 3 つの最大の違いがあります。1 つはトランザクションをサポートしていること、2 つ目は行レベルのロックを使用していること、3 つ目は外部キーをサポートしていることです。

取引:
トランザクションは、SQL ステートメントのグループで構成される論理的な処理単位です。

トランザクションの 4 つの主要な特性 (ACID):

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

これで、MySQL ロック関連の問題に関するこの記事は終了です。MySQL ロック問題の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL のロック待機とデッドロック問題の分析
  • MySQL ロックブロッキングの詳細な分析
  • MySQL ロックの知識ポイントのまとめ

<<:  Dockerを使用してMQTTサーバーを構築するプロセスの詳細な説明

>>:  JavaScript でクールなマウス テーリング効果を実装

推薦する

docker compose を使用して consul クラスタ環境を構築する例

領事の基本概念サーバーモードとクライアントモードサーバー モードとクライアント モードは、consu...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

nginxリバースプロキシを使用するときに長時間接続を維持する方法

・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...

Vue3 トランジションアニメーションの落とし穴記録について

目次背景問題の場所さらなる分析要約する背景私のコース「Vue 3 エンタープライズレベルの音楽アプリ...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...

WeChat アプレット計算機の例

WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...

ブラウザのスクロールバーのスタイルを変更するための純粋な CSS の例

CSSを使用してブラウザのスクロールバーのスタイルを変更する ::-webkit-スクロールバー{ ...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...

And キーワードを使用した MySQL の複数条件クエリ ステートメント

AND キーワードを使用した MySQL 複数条件クエリ。MySQL では、AND キーワードを使用...

MySQL で指定した桁数の乱数を生成する方法と、バッチで乱数を生成する方法

1. まず、よく使われるMySQL関数をいくつか紹介しますRAND() は 0 から 1 (0<...

CSS でリスト スタイル属性を設定する方法 (この記事を読むだけ)

リストスタイルのプロパティHTMLには、順序なしリストと順序ありリストの2種類のリストがあります。仕...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

Vue/React シングルページ アプリケーションをリフレッシュなしで復元するソリューション

目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...