序文: 多くの同僚は長年働いていますが、MySQL の習熟度は表面的な CRUD に限られています。MySQL の深い原理や技術的な知識についてはほとんど知りません。勤務年数が長くなるにつれて、職場での競争力は低下し続けます。面接に出かけると、面接官に殴られることがよくあるようになりました。たとえば、MySQL の面接で最もよく聞かれる質問は次のとおりです。
一つずつ挙げていくと、おそらく MySQL に関する面接でよく聞かれる質問は何百もあるでしょう。あなたはそれらすべてを知っていますか? これは単なる面接ではありません。低レベルのプログラマーからシニアエンジニア、アーキテクトなどへと昇進したいのであれば、MySQL の基本的な原理とテクノロジーを習得する必要があります。 注: Binghe は今後、MySQL の基礎原理と技術に関する記事を随時連載する予定です。彼は友人たちと力を合わせて、自分が習得した MySQL の基礎技術をみんなに伝え、面接で面接官に勝ち、仕事で他の友人に勝つよう努力します。 1. MySQL アーキテクチャまず、以下に示す MySQL アーキテクチャ図を見てみましょう。 MySQL アーキテクチャ図から、MySQL アーキテクチャは上から順に、ネットワーク接続層、データベース サービス層、ストレージ エンジン層、システム ファイル層の 4 つの部分に大まかに分けられることがわかります。次に、各パートの構成情報について簡単に説明します。 2. ネットワーク接続層ネットワーク接続層は、MySQL アーキテクチャ全体の最上位に位置し、主にクライアント コネクタとして機能します。 MySQL サーバーとの接続を確立する機能を提供し、 3. データベースサービス層データベース サービス層は、データベース サーバー全体の中核であり、主にシステム管理および制御ツール、接続プール、SQL インターフェイス、パーサー、クエリ オプティマイザー、キャッシュが含まれます。 4. 接続プール主に、クライアントとデータベース間の接続情報を保存および管理する役割を担います。接続プール内のスレッドは、クライアントからデータベースへの接続情報を管理します。 5. システム管理および制御ツールデータベース内のデータのバックアップと復元、データベース全体のセキュリティの確保、セキュリティ管理の提供、データベース クラスター全体の調整と管理など、データベース システムの管理および制御機能を提供します。 6. SQLインターフェース主な役割は、クライアントから送信されたさまざまな SQL コマンドを受信し、その SQL コマンドを他の部分に送信し、他の部分から返された結果データを受信し、結果データをクライアントに返すことです。 7. 構文解析ツリー主な役割は、要求された SQL を「解析ツリー」に解析し、さらに MySQL のいくつかのルールに従って「解析ツリー」を文法的に検証して、それが正当かどうかを確認することです。 クエリオプティマイザーMySQL では、「解析ツリー」がパーサーの構文チェックに合格すると、オプティマイザーによって実行プランに変換され、ストレージ エンジンと対話し、ストレージ エンジンを介して基礎となるデータ ファイルと対話します。 9. キャッシュMySQL のキャッシュは、一連の小さなキャッシュで構成されています。たとえば、MySQL テーブル キャッシュ、レコード キャッシュ、MySQL の権限キャッシュ、エンジン キャッシュなどです。 MySQL のキャッシュにより、データ クエリのパフォーマンスが向上します。クエリ結果がキャッシュにヒットした場合、MySQL は結果情報をキャッシュに直接返します。 10. ストレージエンジン層MySQL のストレージ エンジン層は、主にデータの書き込みと読み取り、および基礎となるファイルとのやり取りを担当します。 MySQL のストレージ エンジンはプラグイン ベースであることは注目に値します。サーバー内のクエリ実行エンジンは、関連するインターフェイスを介してストレージ エンジンと通信します。同時に、インターフェイスは異なるストレージ エンジン間の違いを隠します。 MySQL で最もよく使用されるストレージ エンジンは InnoDB と MyISAM です。 InnoDB と MyISAM ストレージ エンジンは、学生が習得しておくべき重要なものです。これらは面接で頻繁にテストされ、アーキテクトになるために知っておく必要のある知識でもあります。 11. システムファイル層システム ファイル レイヤーには主に、MySQL にデータを保存し、上位レベルのストレージ エンジンと対話する基礎となるファイルが含まれ、ファイルの物理的なストレージ レイヤーとなります。主に保存されるファイルには、ログ ファイル、データ ファイル、構成ファイル、MySQL pid ファイル、ソケット ファイルなどが含まれます。 12. ログファイルMySQL のログには主に、エラー ログ、一般クエリ ログ、バイナリ ログ、スロー クエリ ログなどが含まれます。 1. エラーログ主にMySQLの動作中に生成されたエラー情報を保存します。 MySQL でエラー ログを表示するには、次の SQL ステートメントを使用できます。 '%log_error%' のような変数を表示します。 2. 一般的なクエリログ主に MySQL 操作中の一般的なクエリ情報を記録します。次の SQL ステートメントを使用して、MySQL で一般的なクエリ ログ ファイルを表示できます。 '%general%' のような変数を表示します。 3. バイナリログ主にMySQLデータベースに対して実行された挿入、変更、削除操作を記録し、SQL文の実行時間と実行期間も記録します。ただし、バイナリログにはselectやshowなどデータベースを変更しないSQL文は記録されません。主にデータベース データを復元し、MySQL マスター スレーブ レプリケーションを実装するために使用されます。 バイナリ ログが有効になっているかどうかを確認します。 '%log_bin%' のような変数を表示します。 バイナリログパラメータを表示する '%binlog%' のような変数を表示する ログファイルの表示 バイナリログを表示します。 4. スロークエリログスロークエリは主に、実行時間が指定された時間を超える SQL ステートメントを記録します。デフォルトの時間は 10 秒です。 スロークエリログが有効になっているかどうかを確認する '%slow_query%' のような変数を表示します。 低速クエリ設定の期間を表示する '%long_query_time%' のような変数を表示する 13. データファイルデータ ファイルには、主に db.opt ファイル、frm ファイル、MYD ファイル、MYI ファイル、ibd ファイル、ibdata ファイル、ibdata1 ファイル、ib_logfile0 ファイル、ib_logfile1 ファイルなどが含まれます。 1.db.opt ファイル主に現在のデータベースで使用されている文字セットや検証ルールなどの情報を記録します。 2. frmファイルデータ テーブルの構造情報、主にデータ テーブルに関連するメタデータ情報、データ テーブルのテーブル構造定義情報などを格納します。各テーブルには frm ファイルがあります。 MySQL 8 バージョンの innodb ストレージ エンジンのテーブルには frm ファイルがないことに注意してください。 (MySQL 8 の新機能については、使用方法から基本原理、MySQL 5 との違いまで、後ほど記事を書く予定です)。 3. MYDファイルMyISAM ストレージ エンジン専用のファイル形式です。主に MyISAM ストレージ エンジン データ テーブルにデータを格納します。各 MyISAM ストレージ エンジン テーブルは .MYD ファイルに対応します。 4. MYIファイルMyISAM ストレージ エンジン専用のファイル形式で、主に MyISAM ストレージ エンジン データ テーブルに関連するインデックス情報が格納されます。各 MyISAM ストレージ エンジン テーブルは .MYI ファイルに対応します。 5.ibdファイルInnodb ストレージ エンジンのデータ ファイルとインデックス ファイルを格納します。主に専用テーブルスペースのデータとインデックスを格納します。各テーブルは .ibd ファイルに対応します。 6. ibdataファイルInnodb ストレージ エンジンのデータ ファイルとインデックス ファイルを格納します。主に共有テーブルスペースのデータとインデックスを格納します。すべてのテーブルは 1 つ (または複数) の .ibdata ファイルを共有します。共有 .ibdata ファイルの数は、構成に応じて指定できます。 7. ibdata1 ファイルMySQL システム テーブルスペース データ ファイルには、主に MySQL データ テーブル メタデータ、Undo ログ、その他の情報が格納されます。 8. ib_logfile0 および ib_logfile1 ファイルMySQL データベースの Redo ログ ファイルは、主に MySQL でトランザクションの永続性を実装するために使用されます。ある時点で MySQL に障害が発生し、データベースの ibd ファイルに書き込まれていないダーティ ページがある場合、MySQL を再起動すると、MySQL は Redo ログ情報に基づいてデータをやり直し、Redo ログに書き込まれているがデータ テーブルにまだ書き込まれていないデータを永続化します。 14. 設定ファイルすべての MySQL 構成情報を保存するために使用されます。Unix/Linux 環境では my.cnf ファイル、Windows 環境では my.ini ファイルです。 1.pidファイルpid ファイルは、MySQL プロセスの実行時にそのプロセス ID を保存するファイルです。主に Unix/Linux 環境に存在します。具体的な保存ディレクトリは、my.cnf または my.ini ファイルで設定できます。 2. ソケットファイルソケット ファイルは、pid ファイルと同様に、MySQL が Unix/Linux 環境で実行されている場合にのみ存在するファイルです。 Unix/Linux 環境では、クライアントはソケットを介して直接 MySQL に接続できます。 MySQL アーキテクチャの詳細に関するこの記事はこれで終わりです。MySQL アーキテクチャに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次1. データベースの概要1.1 開発の歴史2. MySQL の紹介2.1. MySQLの概要2....
序文metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うで...
<meta http-equiv="x-ua-compatible" コン...
この記事では主にボタンのスタイルについて説明します。 1. オプション2. サイズ3. 活動状況4....
序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...
序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...
当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...
RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...
まずは栗を見てみましょう EXPLAIN select * from employees where...
HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...
MyISAM と InnoDB は、MySQL で最も一般的なストレージ エンジンです。前回の記事で...
目次1. データベースとは何ですか? 2. データベースの分類は? 3. データベースとデータ構造の...
私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...
目次序文1. 少ない2. コンポーネントをインポートする3. 設定ファイルを変更するステップ1: l...
3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...