mysqlの共有ロックと排他ロックの詳しい説明
mysql のロック メカニズムはテーブル レベルのロックと行レベルのロックに分かれています。この記事では、mysql の行レベルのロックにおける共有ロックと排他的ロックの共有と交換について共有します。
共有ロックは、読み取りロック、または短縮して S ロックとも呼ばれます。名前が示すように、共有ロックは、複数のトランザクションが同じデータのロックを共有でき、すべてのトランザクションがデータにアクセスできることを意味します。読み取りのみが可能で、変更はできません。
排他ロックは書き込みロックとも呼ばれ、他のロックには共有ロックと排他ロックが含まれますが、排他ロックを取得したトランザクションはデータの読み取りと変更ができます。
共有ロックについては誰もがよく理解しているかもしれません。つまり、複数のトランザクションはデータの読み取りのみが可能で、データの変更はできません。しかし、排他ロックについては人によって理解が異なる可能性があります。最初に間違えました。排他ロック データ行が保存された後は、他のトランザクションはそのデータ行を読み取ったり変更したりすることはできないと考えられていますが、そうではありません。排他的ロックとは、トランザクションがデータ行に排他的ロックを追加した後は、他のトランザクションがその行に他のロックを追加できないことを意味します。 Mysql InnoDB エンジンのデフォルトのデータ変更ステートメント、更新、削除、挿入は、関係するデータに排他ロックを自動的に追加します。デフォルトでは、select ステートメントはロック タイプを追加しません。排他ロックを追加したい場合は、select ステートメントを使用できます。 ...for update ステートメント。共有ロックを追加するには、select ... lock in share mode ステートメントを使用できます。したがって、排他ロックが設定されたデータ行は他のトランザクションで変更できず、共有モード ロックで更新やロックを行うためにデータをクエリすることはできませんが、データは select...from... を通じて直接クエリできます。クエリにはロック機構がありません。
ここまで述べたので、次の簡単な例を見てみましょう:
次のテスト データがあります
これで、id=1 のデータ行に対する排他的なクエリができました。ここでは、トランザクションを開くために begin を使用しますが、トランザクションを閉じるのは表示されません。トランザクションをコミットするかローリングするため、これはテスト用です。戻るとトランザクションがロックを解放します。
クエリ ウィンドウを開く
データの一部がクエリされます。今度は別のクエリ ウィンドウを開いて、同じデータに対して排他クエリと共有ロック クエリを使用します。クエリの方法
排他クエリ
共有クエリ
排他的なクエリであることがわかります。ロックがオンになっている id=1 のデータは排他ロックでロックされており、ここでのブロッキングは排他ロックが解除されるのを待っているため、クエリと共有ロック クエリは両方ともブロッキング状態になります。
次のクエリを直接使用するとどうなるか
#データをクエリできることがわかります。
共有ロックを取得するトランザクションをもう一度見てみましょう。他のクエリでは、共有ロックを追加するかどうかのみが可能です。
データはクエリできることがわかりますが、排他的メソッドでは見つけることができません。 lock. 、排他ロックと共有ロックは同じデータに存在できないためです。
最後に、上記の mysql InnoDb エンジンの update、delete、insert ステートメントに排他ロックを自動的に追加する問題を検証します。今回、共有クエリはブロッキング状態にあり、排他ロックの解放を待っていますが、ロックメカニズムは排他ロックと相互排他的ではないため、通常のクエリを使用してデータを見つけることができますが、見つかったデータは古いデータですデータが変更される前。
次に、データを送信し、排他ロックを解除し、変更されたデータを確認します。このとき、排他クエリ、共有クエリ、および通常のクエリが使用できます。行データはトランザクションが送信された後に解放され、排他ロック、通常のクエリのみが下に表示され、他の学生が自分で確認できます。
結果が期待どおりであることがわかります。
推奨チュートリアル: 「Mysql チュートリアル 」
以上がmysqlの共有ロックと排他ロックの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

Theliaを使用してeコマースWebサイトを開発するとき、私はトリッキーな問題に遭遇しました:MySQLモードが適切に設定されていないため、いくつかの機能が適切に機能しません。いくつかの調査の後、TheliamysQlModescheckerというモジュールを見つけました。これは、Theliaが必要とするMySQLパターンを自動的に修正できるため、問題を完全に解決できます。
