MySQL の行レベルのロック、テーブルレベルのロック、ページレベルのロックの中で、行レベルのロックが MySQL で最も詳細なロックであることを紹介しました。行レベルのロックはデータベース操作の競合を大幅に軽減します。 。行レベルのロックは共有ロックと排他ロックに分けられ、共有ロックと排他ロックの概念や使い方、注意点について詳しく紹介します。
共有ロック
読み取りロックとも呼ばれる共有ロックは、読み取り操作によって作成されるロックです。他のユーザーは同時にデータを読み取ることができますが、すべての共有ロックが解放されるまで、トランザクションはデータを変更する (データの排他的ロックを取得する) ことはできません。
トランザクション T
がデータ A
に共有ロックを追加した場合、他のトランザクションは共有ロックを A
にのみ追加でき、排他ロックを追加できません。 。共有ロックが付与されたトランザクションはデータの読み取りのみが可能で、データを変更することはできません。 T
对数据A
加上共享锁后,则其他事务只能对A
再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
用法
SELECT ... LOCK IN SHARE MODE;
在查询语句后面增加LOCK IN SHARE MODE
,MySQL 就会对查询结果中的每行都加共享锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请共享锁,否则会被阻塞。其他线程也可以读取使用了共享锁的表,而且这些线程读取的是同一个版本的数据。
排他锁(Exclusive Lock)
排他锁又称写锁、独占锁,如果事务T
对数据A
加上排他锁后,则其他事务不能再对A
加任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
用法
SELECT ... FOR UPDATE;
在查询语句后面增加FOR UPDATE
,MySQL 就会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。
意向锁(Intention Lock)
意向锁是表级锁,其设计目的主要是为了在一个事务中揭示下一行将要被请求锁的类型。InnoDB 中的两个表锁:
意向共享锁(IS):表示事务准备给数据行加入共享锁,也就是说一个数据行加共享锁前必须先取得该表的
IS
锁;意向排他锁(IX):类似上面,表示事务准备给数据行加入排他锁,说明事务在一个数据行加排他锁前必须先取得该表的
IX
锁。
意向锁是 InnoDB 自动加的,不需要用户干预。
对于INSERT
、UPDATE
和DELETE
,InnoDB 会自动给涉及的数据加排他锁;对于一般的SELECT
语句,InnoDB 不会加任何锁,事务可以通过以下语句显式加共享锁或排他锁。
共享锁:SELECT ... LOCK IN SHARE MODE;
排他锁:SELECT ... FOR UPDATE;
SELECT ... LOCK IN SHARE MODE;
🎜🎜クエリ ステートメントの後に LOCK IN SHARE MODE
を追加すると、MySQL はクエリ結果セットの各行に共有ロックを追加します。他のスレッドがクエリ結果セットの行に対して排他ロックを使用していない場合は、共有ロックを正常に適用できます。そうでない場合は、ブロックされます。他のスレッドも共有ロックを使用してテーブルを読み取ることができ、これらのスレッドは同じバージョンのデータを読み取ります。 🎜🎜排他ロック🎜🎜排他ロックは、書き込みロックおよび排他ロックとも呼ばれます。トランザクション T
がデータ A
に排他ロックを追加すると、他のトランザクションはいかなる種類のロックも追加できなくなります。 A
を封鎖します。排他的ロックが付与されたトランザクションは、データの読み取りと変更の両方が可能です。 🎜🎜使用法🎜🎜SELECT ... FOR UPDATE;
🎜🎜クエリ ステートメントの後に FOR UPDATE
を追加すると、MySQL がクエリ結果を更新します。排他ロックは各行に追加されます。他のスレッドがクエリ結果セット内の行に対して排他ロックを使用していない場合は、排他ロックを正常に適用できます。そうでない場合は、ブロックされます。 🎜🎜インテンション ロック (インテンション ロック) 🎜🎜 インテンション ロックはテーブルレベルのロックであり、その主な設計目的は、トランザクションの次の行に要求されるロックのタイプを明らかにすることです。 InnoDB の 2 つのテーブル ロック: 🎜- 🎜意図共有ロック (IS): トランザクションがデータ行に共有ロックを追加する準備をしていることを示します。 1 つのデータ行が共有されます。 ロックする前にテーブルの
IS
ロックを取得する必要があります。 🎜 - 🎜意図的な排他ロック (IX): 上記と同様、トランザクションが共有されていることを示します。データ行に排他ロックを追加する準備をしています。トランザクションが開始されていることを示します。 データ行に排他ロックを追加する前に、まずテーブルの
IX
ロックを取得する必要があります。 🎜
INSERT
、UPDATE
、および DELETE
の場合、InnoDB は一般的な SELECT
に関連するデータに排他ロックを自動的に追加します。 > code> ステートメントを使用すると、InnoDB はロックを追加しません。トランザクションは次のステートメントを通じて共有ロックまたは排他ロックを明示的に追加できます。 🎜🎜共有ロック: SELECT ... LOCK IN SHARE MODE;
🎜🎜排他ロック: SELECT ... FOR UPDATE;
🎜以上がMySQL の共有ロックと排他ロックの使用法を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

データベースの最適化では、クエリ要件に従ってインデックス作成戦略を選択する必要があります。1。クエリに複数の列が含まれ、条件の順序が固定されている場合、複合インデックスを使用します。 2。クエリに複数の列が含まれているが、条件の順序が修正されていない場合、複数の単一列インデックスを使用します。複合インデックスは、マルチコラムクエリの最適化に適していますが、単一列インデックスは単一列クエリに適しています。

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQL非同期マスタースレーブレプリケーションにより、BINLOGを介したデータの同期が可能になり、読み取りパフォーマンスと高可用性が向上します。 1)マスターサーバーレコードはBinlogに変更されます。 2)スレーブサーバーは、I/Oスレッドを介してBINLOGを読み取ります。 3)サーバーSQLスレッドは、BINLOGを適用してデータを同期させます。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MySQLのインストールと基本操作には、次のものが含まれます。1。mysqlをダウンロードしてインストールし、ルートユーザーパスワードを設定します。 2。sqlコマンドを使用して、createdatabaseやcreateTableなどのデータベースとテーブルを作成します。 3. CRUD操作を実行し、挿入、選択、更新、コマンドを削除します。 4.パフォーマンスを最適化し、複雑なロジックを実装するためのインデックスとストアドプロシージャを作成します。これらの手順を使用すると、MySQLデータベースをゼロから構築および管理できます。

Innodbbufferpoolは、データとインデックスページをメモリにロードすることにより、MySQLデータベースのパフォーマンスを向上させます。 1)データページは、ディスクI/Oを削減するためにBufferPoolにロードされます。 2)汚れたページは、定期的にディスクにマークされ、リフレッシュされます。 3)LRUアルゴリズム管理データページの排除。 4)読み出しメカニズムは、可能なデータページを事前にロードします。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
