MySQLの実行原理、論理階層化、データベース処理エンジンの変更について詳しく説明します

MySQLの実行原理、論理階層化、データベース処理エンジンの変更について詳しく説明します

長い間 MySQL を使ってきたので、SQL 文はすでに覚えていると思います。そこで、その実行原理を理解しようとしました。以下は、学習過程でまとめた重要なポイントです。

B/S アーキテクチャである限り、クライアントとサーバーが存在し、MySQL も例外ではありません。

まず、クライアントはリクエストを送信します。これはクエリ リクエスト (Select) であり、リクエストの対象はサーバーです。サーバーはこのクエリ機能をどのように処理するのでしょうか。

論理階層化

まず、サーバーは 4 層構造の大きなコンテナであると想像できます。リクエストが届くと、これらの 4 層が実行され、1 回の実行後にのみ目的の結果が返されます。

第1層: 接続層

つまり、クライアントが Select を送信すると、処理のために接続層に直接渡され、その役割はクライアントに接続するためのサービスを提供することです。

接続層はクライアントとの接続を確立し、リクエスト (Select) を取得するだけですが、接続を行うだけなので、それ自体は処理しません。では、誰がそれを処理するのでしょうか?そのまま歩き続けます。

第2層: サービス層

サービス層は次の 2 つのことを行うことができます。

1. ユーザーにさまざまなインターフェースを提供する

たとえば、先ほどのクエリでは、一般的な CRUD (作成、削除、変更、クエリ) 操作がすべてここにあります。接続層はこの Select を取得し、それをサービス層に直接渡します。ユーザーにインターフェイスを提供するだけでなく、SQL オプティマイザーと呼ばれるものも提供します。

2. MySQL オプティマイザー

実行する SQL 文を記述すると、ここで実行した後 (第 2 層)、オプティマイザは記述した SQL 文のパフォーマンスが十分ではないと判断します。このとき、オプティマイザは実行後に記述したものと同等の SQL 文を記述して置き換えます。この同等の記述方法は、記述した SQL 文をこのオプティマイザを通して最適化するものです。SQL 文のパフォーマンスが低すぎると判断したため、SQL 文を最適化します。この最適化操作は、オプティマイザが行うことです。

明らかに、オプティマイザーは SQL ステートメントを最適化できるため、パフォーマンスに一定の利点がありますが、欠点もあります。例えば:

「自分で最適化すると a になりますが、実際の実行は a にはなりません。最適化プログラムは最適化が不十分であると判断するため、結果として a が b になります。つまり、明らかに a と記述しましたが、プログラムは b を実行します。」

これはすでに最適化されているため、開発プロセスに混乱を引き起こすことになります。あなたが書いた内容は、以前書いた内容と一致しなくなりました。

3番目の層: エンジン層

さまざまなデータ保存方法を提供しますが、最も一般的なものは、lnnoDB、MylSAMです。

主な違い:

lnnoDB [MySQL のデフォルト]: 設計されたときは、トランザクション ファーストでした [高同時実行操作に適しています] 原則: 行ロックなので、すべてのデータをロックする必要があります。ロックしすぎると、パフォーマンスが低下します。パフォーマンスは低下しますが、高同時実行に適しており、エラーが発生しにくいです。

MylSAM: パフォーマンス優先の原則: テーブルロックなので、テーブル内の10個のデータは影響を受けず、10個のロックが一度に完了するため、パフォーマンスが高速です。

パフォーマンスの優先順位は分かりやすいです。例えば、データが 10,000 個ある場合、処理が速いほど効率が高くなります。

いくつかの同時操作を防ぐためのものです。同時操作が多すぎるとエラーが発生する可能性があるため、同時操作が多い場合に適しています。

なので、プロジェクトを行う際、データベースを構築する際、パフォーマンスを優先する場合はMySAMエンジンを選択します。同時実行性の高い操作の場合はlnnoDBエンジンを選択します。以下ではエンジンの変更方法についてお話します。

レイヤー4: ストレージレイヤー

これは分かりやすいですね。最終的なデータはストレージ層に保存されます。

4つの層について話した後、考えを明確にしましょう

まず、クライアントが選択操作を送信します---> 接続層がそれを受信し、サービス層に送信します---> サービス層はクエリを最適化し、最適化結果をエンジン層に渡します---> 現在のデータベースのエンジンを選択します。エンジンを選択した後、エンジンは最終データをストレージ層に送信します---> ストレージ層はストレージ層を使用してデータを保存します。

ビューエンジン

エンジンを表示; MySQL でサポートされているすべてのエンジンを表示します

実行結果:

Yes はサポートを意味します。InnoDB サポート オプションでは DEFAULT (デフォルト) であり、これはデータベースを作成するときにデフォルトのエンジンが InnoDB であることを意味します。

データベースで現在使用されているエンジンを表示する

'%storage_engine%' のような変数を表示します。

実行結果:

明らかに、現在InnoDBを使用しています

データベースオブジェクトのエンジンを指定します

今、テーブルを作成しています。このテーブルにはInnoDBではなくMySAMを使用しています。パフォーマンスを優先したいからです。次に、mysqlコマンドラインを使用してテーブルを作成します。

1. データベースコマンドを指定する: データベース名を使用する

2. 指定されたデータベースに単純なテーブルを作成する

テーブルtbを作成(

id int (4)、

名前varchar(5),

主キー(ID)

)ENGINE=MyISAM;

実行結果:

これは、作成が成功し、テーブルのエンジンがデフォルトのものではなく、手動で指定したものであることを示しています。

以上がMySQLの実行原理、論理階層化、データベース処理エンジンの変更に関する知識ポイントです。123WORDPRESS.COMをご愛読いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • 重複したMySQLレコードを現場でチェックし、処理する実践的な記録
  • MySQL の重複データの処理方法 (防止と削除)
  • 重複データの処理に関するMySQL学習ノート
  • MySQLデータの同時更新を処理する方法
  • MySQLが大量のデータを処理する際にクエリ速度を最適化するいくつかの方法
  • MySQLデータ処理のソートと追加、削除、変更の操作の説明

<<:  テキストの円形スクロールアニメーションを実装するミニプログラム

>>:  Windows 10 サブシステム Ubuntu (WSL) に Docker をインストールするチュートリアル (画像とテキスト付き)

推薦する

js は複数の画像を zip にパッケージ化します

目次1. ファイルをインポートする2. HTMLページ3. メインコード4. 画像をbase64に変...

Dockerアーキテクチャ入門

Docker には 3 つの基本概念が含まれています。イメージ: Docker イメージはルート フ...

VMware Workstation に Windows Server 2019 をインストールする (グラフィック チュートリアル)

キーの入力を求められた場合は、[キーがありません]を選択します。デスクトップエクスペリエンスを選択す...

Linux Centos でスクリプトを使用して Docker をインストールする方法

Dockerの主な機能は何ですか?現在、Docker には少なくとも次のアプリケーション シナリオが...

JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較

目次概要パフォーマンス.nowコンソール.time時間精度を短縮注意事項分割して征服する入力値に注意...

MySQLチュートリアルDMLデータ操作言語の例の詳細な説明

目次1. データ操作言語 (DML) 2. データを追加する(挿入) 3. 既存のテーブルをコピーし...

MySql のグループ化と各グループからランダムに 1 つのデータを取得する

アイデア: 最初にランダムに並べ替えてからグループ化します。 1. テーブルを作成します。 テーブル...

MySQL 5.7.16 無料インストール版のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.16のインストールと設定方法を記録します。具体的な内容は以下のとおり...

CentOS 6.2 に MySQL 5.7.28 をインストールするチュートリアル (mysql ノート)

1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...

初心者向けの MySQL のインストール方法 (効果が実証済み)

1. ソフトウェアのダウンロードMySQL のダウンロードとインストール:公式サイトのダウンロード...

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...

歴史的な Linux 画像処理および修復ソリューション

従来の Linux イメージで作成された ECS クラウド サーバーには、NTP と YUM が設定...

MySQL 5.7.13 のインストールと設定方法のグラフィック チュートリアル (win10 64 ビット)

この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

SCSS スタイルのコードを 50% 削減する 14 の実践的な経験

序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...