ホームページ データベース mysql チュートリアル MySQL の基本的なスケジューリング方法の簡単な分析

MySQL の基本的なスケジューリング方法の簡単な分析

Aug 10, 2017 am 10:52 AM
mysql 戦略

[はじめに] MySQL では、ステートメントのスケジューリング特性に影響を与えることができます。これにより、複数のクライアントからのクエリがより適切に連携し、単一のクライアントが長時間ロックされないようになります。スケジューリング特性を変更すると、特定のクエリがより速く処理されるようにすることもできます。まず MySQL のデフォルトのスケジューリング ポリシーを見て、次に

を見てみましょう。MySQL では、ステートメントのスケジューリング特性に影響を与えることができます。これにより、複数のクライアントからのクエリがより適切に連携し、単一のクライアントが長時間ロックアウトされることがなくなります。長い間。スケジューリング特性を変更すると、特定のクエリがより速く処理されるようにすることもできます。まず MySQL のデフォルトのスケジュール ポリシーを見て、次にこのポリシーを変更するために利用できるオプションを見てみましょう。この説明では、検索 (SELECT) を実行するクライアント プログラムがリーダー プログラムであると仮定します。テーブル変更操作 (DELETE、INSERT、REPLACE、または UP DATE) を実行する別のクライアント プログラムがライターです。

MySQL の基本的なスケジューリング戦略は次のように要約できます:

◆書き込みリクエストは到着した順に処理される必要があります。

◆書くことは読むことよりも優先されます。

テーブルロックを利用してスケジューリング戦略を実装します。クライアント プログラムがテーブルにアクセスする場合は、まずテーブルのロックを取得する必要があります。これは、LOCK TABLES を使用して直接実行できますが、通常は、サーバーのロック マネージャーが必要に応じて自動的にロックを取得します。テーブルのロックは、クライアントがテーブルの処理を終了すると解放できます。直接取得したロックは UNLOCK TABLES で解放できますが、サーバーは取得したロックも自動的に解放します。

書き込み操作を実行するクライアントは、テーブルに対して排他的アクセスロックを持っている必要があります。書き込み操作の進行中は、テーブル上のデータ レコードが削除、追加、または変更されるため、テーブルは不整合な状態になり、それに応じてテーブルのインデックスも更新する必要がある場合があります。テーブルが常に変更されている場合、現時点で他のクライアントにテーブルへのアクセスを許可すると問題が発生する可能性があります。 2 つのクライアントが同時に同じテーブルに書き込むことは明らかに良くありません。テーブルがすぐに使用できなくなるからです。また、クライアントが変更中のテーブルを読み取ることを許可することも良いことではありません。テーブルを読み取った瞬間にテーブルに変更が加えられている可能性があり、結果が不正確になるためです。読み取り操作を実行するクライアントには、テーブルの読み取りプロセス中にテーブルが変更されないように、他のクライアントがテーブルに書き込むことを防ぐロックが必要です。ただし、ロックは読み取り操作に対する排他的アクセスを提供する必要はありません。このロックにより、他のクライアントが同時にテーブルから読み取ることもできます。読み取りによってテーブルは変更されないため、他のクライアントによるテーブルの読み取りを妨げる必要はありません。

MySQL では、いくつかのクエリ制限修飾子の助けを借りて、そのスケジューリング戦略に影響を与えることができます。そのうちの 1 つは、DELETE、INSERT、LOAD DATA、REPLACE、および UP DATE ステートメントの LOW_PRIORITY キーワードです。もう 1 つは、SELECT ステートメントの HIGH_PRIORITY キーワードです。 3 番目は、INSERT ステートメントと REPLACE ステートメントの DELAYED キーワードです。

LOW_PRIORITYキーワードは、次のようにスケジューリングに影響します。通常、テーブルの読み取り中にテーブルへの書き込みが到着した場合、クエリが開始されると中断できないため、ライターはリーダーが完了するまでブロックされます。ライターの待機中に別の読み取り要求が到着すると、デフォルトのスケジューリング ポリシーによりライターにリーダーよりも高い優先順位が与えられるため、リーダーもブロックされます。第1の読み出しプログラムの終了後、書き込みプログラムが継続し、この書き込みプログラムの終了後に第2の読み出しプログラムが開始される。

書き込みリクエストが LOW_PRIORITY リクエストの場合、書き込み操作は読み取り操作よりも高い優先順位を持つとは見なされません。この場合、ライターの待機中に 2 番目の読み取り要求が到着した場合は、2 番目の読み取り操作を待機中の書き込み操作の前にキューに入れます。ライターは、他の読み取りリクエストがない場合にのみ実行を許可されます。スケジューリングにおけるこの変更の理論的な意味は、LOW_PRIORITY 書き込みが永久にブロックされる可能性があるということです。前の読み取りリクエストの処理中に別の読み取りリクエストが到着すると、この新しいリクエストは LOW_PRIORITY 書き込みの前にキューに入れられます。

SELECTクエリのHIGH_PRIORITYキーワードにも同様の効果があります。これにより、書き込み操作が通常の優先順位を持っている場合でも、保留中の書き込み操作の前に SELECT が挿入されます。 INSERT の ELAYED 修飾子は次のように機能します。テーブルに対する INSERT DELAYED リクエストが到着すると、サーバーは対応する行をキューに入れ、すぐにクライアント プログラムにステータスを返します。これにより、クライアント プログラムは実行を継続できます。 rows まだテーブルに挿入されていません。リーダーがテーブルから読み取りを行っている場合、キュー内の行は保留中になります。読み取りがない場合、サーバーは遅延行キューへの行の挿入を開始します。サーバーは時々停止して、新しい読み取りリクエストが到着したかどうかを確認し、待機します。そうである場合、遅延行キューは一時停止され、リーダーは続行できます。他に読み取り操作がない場合、サーバーは遅延行の挿入を再び開始します。このプロセスは、遅延キューが空になるまで継続されます。

これは、すべての MySQL バージョンに表示されるわけではありません。次の表に、これらの修飾子とそれらをサポートする MySQL バージョンを示します。この表を使用して、使用している MySQL バージョンにどのような機能があるかを判断できます:

INSERT DELAYED は、他のクライアントが長い SELECT ステートメントを実行する可能性があり、挿入が完了するまで待ちたくない場合に便利です。 INSERT DELAYED を発行するクライアントは、サーバーが挿入対象の行を挿入するだけなので、より迅速に実行を続行できます。ただし、通常の INSERT と INSERT DELAYED のパフォーマンスの違いに注意する必要があります。 INSERT DELAYED に構文エラーがある場合、クライアントにエラーが送信され、正常であればメッセージは送信されません。たとえば、このステートメントが返されたときに取得される AUTO_INCREMENT 値は信頼できません。また、一意のインデックスの重複の数を取得することもできません。これは、挿入操作が実際の挿入が完了する前にステータスを返すために発生します。また、INSERT DELAYED ステートメントの行が挿入待ちのキューに入れられ、サーバーがクラッシュするか (kill -9 で) 終了される場合、これらの行は失われることを示す人もいます。通常の TERM 終了ではこれは行われません。サーバーは終了する前にこれらの行を挿入します。

以上がMySQL の基本的なスケジューリング方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

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

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

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

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLデータベースの構築方法 SQLデータベースの構築方法 Apr 09, 2025 pm 04:24 PM

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。

See all articles