序文: 多くの同僚は長年働いていますが、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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次レンダリングインストールコードの実装カスタムスタイル要約する効率的に要件を満たし、車輪の再発明を...
目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...
目次解決、要約: vue プロジェクト。 .vue ファイルのテンプレート内に記述されたコードは、w...
ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...
各浮動小数点型のストレージ サイズと範囲は、次の表に示されています。タイプサイズ範囲(符号付き)範囲...
Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...
問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...
1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...
この記事は主に、初心者に XHTML の基本的な知識と、XHTML と HTML の違いを理解しても...
1. マスタースレーブレプリケーションとは何ですか?マスタースレーブレプリケーションは、スレーブデー...
効果画像: html: <div class='site_bar'>ホー...
目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...
ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...
<div class="サイドバー"> <div> &...
関数を使用する前にパラメータのプロパティを理解して、関数の使い方をより深く理解する必要があることは誰...