序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職の面接でも、必ずデータベースに関する質問がいくつかされます。友人から、MySQL の面接の質問にどう対処するかを尋ねるプライベートメッセージがよく送られてきます。実際、面接の質問は似たようなものが多いので、事前に準備しておく必要があります。この記事では、面接でよく聞かれる質問について簡単に説明します。一緒に学びましょう。 1. リレーショナル データベースとは何ですか? MySQL についての理解について話してください。これは、データベースに対する面接者の理解度をテストする基本的な質問です。一般的に、理解度について簡潔に整理して話すことができます。例えば: リレーショナル データベースは、リレーショナル モデルを使用してデータを整理し、行と列の形式でデータを保存するデータベースです。リレーショナル データベースの最大の特徴は、トランザクションをサポートしていることです。一般的なリレーショナル データベースには、MySQL、Oracle、SQLServer などがあります。 MySQL は最も人気のあるオープンソース データベースです。 MySQL データベースは、サイズが小さく、速度が速く、総所有コストが低いこと、そして特にオープンソースであることから、多くの企業がコスト削減のために MySQL データベースを採用しています。現在、インターネット上の中小規模の Web サイト、特に OLTP 分野で広く使用されています。 2. MySQL の一般的なストレージ エンジンとその違いは何ですか?この質問もよく聞かれますが、「InnoDB エンジンと MyISAM エンジンの違いは何ですか?」という質問に似ています。 一般的なストレージ エンジン:
InnoDB エンジンと MyISAM エンジンにはいくつかの違いがあります。
3. MySQL インフラストラクチャについて説明します。この質問は、面接対象者の MySQL アーキテクチャに関する理解をテストするもので、「SELECT ステートメントの実行フロー」という質問に似ています。 MySQL の論理アーキテクチャは、主に 3 つのレイヤーに分かれています。
選択ステートメントの実行フロー:
4. よく使用されるいくつかのフィールドタイプについて説明します。この質問は、面接対象者の MySQL フィールド タイプに関する理解をテストするもので、char と varchar の違いなど、多くの小さな質問につながる可能性があります。 よく使用されるフィールドタイプの分類: 数値型: 文字列型: 日付と時刻の種類: int(M) の M は最大表示幅を表します。「最大表示幅」に対する最初の反応は、フィールドに格納できる値の最大幅です。int(1) を作成したので、データ 10 は格納できないと思うかもしれません。実際はそうではありません。int(5) と int(10) の格納範囲は同じです。 CHAR 型は固定長であり、MySQL は定義された文字列の長さに基づいて常に十分なスペースを割り当てます。 CHAR 値が格納される際には、指定された長さまで右側にスペースが埋め込まれ、CHAR 値が取得される際には末尾のスペースが削除されます。 VARCHAR 型は可変長文字列を格納する場合に使用します。格納時に文字数が定義した桁数に達しない場合は末尾にスペースは追加されません。 char(M) と varchar(M) の M は、保存できる文字の最大数を表します。1 つの文字、数字、漢字などは 1 文字を占めます。 5. インデックスの役割、構造、使用仕様について説明します。インデックス作成に関する質問は非常に多いため、明確に説明するには数記事以上かかる可能性があります。以下の質問に対する答えを共有してください。 インデックス作成の目的は、クエリの効率を向上させることです。辞書のディレクトリに例えることができます。辞書コンテンツを検索するときに、ディレクトリに基づいてデータの保存場所を見つけ、直接取得することができます。インデックスはテーブル ディレクトリです。コンテンツを検索する前に、まずディレクトリ内のインデックスの場所を検索して、クエリ データをすばやく見つけることができます。 InnoDB エンジンでは、B+ ツリー インデックスが主に使用されます。各インデックスは実際には B+ ツリーです。B+ ツリーは、ディスクやその他のストレージ補助デバイス用に設計されたバランス検索ツリー (バイナリ ツリーではありません) です。B+ ツリーでは、すべてのデータがリーフ ノードにあり、各リーフ ノードには次のノードへのポインターがあり、順序付けられたリンク リストを形成します。 物理ストレージの観点から見ると、InnoDB インデックスはクラスター化インデックスとセカンダリ インデックスまたは補助インデックスに分けられます。クラスター化インデックスのリーフ ノードには、データの行全体が格納されます。クエリでクラスター化インデックスを使用する場合、必要なレコードを取得するには、クラスター化インデックスの B+ ツリーをスキャンするだけで済みます。セカンダリ インデックスを通じて完全なレコードを検索する場合は、テーブルに戻る必要があります。つまり、セカンダリ インデックスを通じて主キー値を検索し、クラスター化インデックスで完全なレコードを検索します。 インデックスの明らかな利点はクエリを高速化できることですが、インデックスの作成にはコストもかかります。まず、インデックスが作成されるたびに、そのインデックス用の B+ ツリーを作成する必要があり、追加のストレージ スペースが必要になります。次に、テーブル内のデータが追加、削除、または変更されると、インデックスも動的に維持する必要があるため、データ維持の速度が低下します。そのため、インデックスの作成と使用には原則があります。一般的に、インデックスは検索、並べ替え、グループ化、結合に使用される列に対してのみ作成されます。選択性の低い列には、できるだけインデックスを作成しないようにします。 6. MySQL トランザクションの特性と分離レベルについて説明します。MySQL トランザクションに関連する質問もよく寄せられますが、いくつかの原則については、まだ詳細に研究する必要があります。 ACID には 4 つの特性があります。
トランザクション分離レベル:
同時トランザクションによって発生する問題:
上記は、MySQL 面接で頻繁に聞かれる質問に対する詳細な回答です。MySQL 面接で頻繁に聞かれる質問の詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: Docker がデータベースのデプロイに適さない 7 つの理由のまとめ
>>: HTML Web ページ リスト タグ学習チュートリアル
目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...
1. 環境バージョンDocker バージョン 19.03.12セントロス7ソル8.6.2 2. Do...
序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...
この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...
Webページを作るときに、区切り線hrを使うことがありますが、IE6やIE7で表示するのは非常に苦痛...
目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...
目次1. ステートメントを挿入する1.1 行を挿入する1.2 複数行を挿入する1.3 クエリステート...
目次1. なぜ vue3 が必要なのでしょうか? 2. vue3の利点3. 応答原則の違い4. ライ...
目次画像をプルするイメージを実行する(コンテナを生成する)コンテナを起動するコンテナに入るすべてのミ...
1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...
innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...
この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...
目次1. カスタムルーティング2. タブナビゲーション3. データの返却要約する1. カスタムルーテ...
目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...
実際のプロジェクト開発プロセスでは、ページがサーバーにアップロードされます。サーバーへの負荷を軽減し...