六面アリが負けます!MySQLの基礎と基礎となる最適化を学び、Meituanのオファーを受けました

MySQLはバックエンド開発者として、最も一般的に使用されているリレーショナルデータベースの1つです。モバイルインターネットの急速な発展に伴い、クラスターアーキテクチャが主流になり、データベースの高い同時実行性と高可用性の要件がますます高まっています。

申請者が基礎となるメカニズムと原則を制御する能力を持っているかどうかは、インターネット企業が才能を選別するための重要な評価基準となっています。データベースの構築、テーブルの作成、追加、削除、およびチェックの基本操作レベルだけにとどまる場合、遅かれ早かれ、企業によって排除されます。

3つの栗を与える(面接官から頻繁に尋ねられる):

  • クエリのパフォーマンスを向上させる方法は?
  • 単一のライブラリのパフォーマンスのボトルネックを打破するにはどうすればよいですか?
  • データベースの高い同時実行性と高可用性を実現するにはどうすればよいですか?

以下では、あなたが質問につまずくのを防ぐために、MySQLの一般的なインタビュー用のPDFドキュメントをまとめて、全員が空席をチェックして記入できるようにしています。

  • ドキュメントの機能:明確な構成、グラフィックスとテキストの組み合わせ、理解しやすい
  • このドキュメントの内容を体系的に研究する必要がある場合、すべての人にとってより良い読書体験を得るために、各知識ポイントの内容の一部のみがここに表示されます

1.データベースの基礎知識

1.データベースを使用する理由

2. SQLとは何ですか?

SQLと呼ばれる構造化クエリ言語(Structured Query Language)は、データベースクエリ言語です。

役割:データへのアクセス、クエリ、更新、およびリレーショナルデータベースシステムの管理に使用されます。

3. MySQLとは何ですか?

MySQLは、Oracleの傘下にあるスウェーデンの会社MySQL ABによって開発されたリレーショナルデータベース管理システムです。

製品。MySQLは最も人気のあるリレーショナルデータベース管理システムの1つです。Webアプリケーションに関しては、MySQLが最も人気があります。

優れたRDBMS(リレーショナルデータベース管理システム、リレーショナルデータベース管理システム)アプリケーション

ソフトウェアの1つ。MySQLはオープンソースであり、無料で拡張が容易なため、Javaエンタープライズレベルの開発で非常によく使用されています。

4、…

2、データ型

1. mysqlにはどのようなデータ型がありますか

3.エンジン

1. MySQLストレージエンジンMyISAMとInnoDBの違い

ストレージエンジン:MySQLのデータ、インデックス、その他のオブジェクトの保存方法はセットです

ファイルシステムの実装。

一般的に使用されるストレージエンジンは次のとおりです。

** Innodbエンジン:** Innodbエンジンは、データベースACIDトランザクションのサポートを提供します。また、行レベルのロックも提供します

そして、外部キーの制約。その設計の目標は、大容量のデータベースシステムを処理することです。

MyIASMエンジン:(元々はMysqlのデフォルトエンジン):トランザクションサポートを提供せず、行レベルのロックと外部キーもサポートしません。

**メモリエンジン:**すべてのデータはメモリ内にあり、データ処理速度は高速ですが、セキュリティは高くありません。

2. MyISAMとInnoDBの違い

3. InnoDBエンジンの4つの主要な機能

  • バッファを挿入
  • 二重書き
  • 適応ハッシュインデックス(ahi)
  • 预读(先読み)

4.ストレージエンジンの選択

特別な要件がない場合は、デフォルトのInnodbを使用してください。

MyISAM:ブログシステムやニュースポータルなど、読み書きに重点を置いたアプリケーション。

Innodb:更新(削除)操作の頻度も高い、またはデータの整合性を確保するため、高い同時実行性、トランザクションのサポート、および

外部キー。OA自動化オフィスシステムなど。

4、インデックス

1.インデックスとは何ですか?

2.インデックスの利点と欠点は何ですか?

3.インデックスの使用シナリオ(重点)

4.インデックスのタイプは何ですか?

5.インデックスデータ構造(bツリー、ハッシュ)

6.索引付けの基本原則

7.索引付けアルゴリズムとは何ですか?

8.インデックス設計の原則は?

9、インデックス作成の原則(最優先)

10.インデックスを作成する3つの方法、インデックスを削除する

11.インデックスを作成するときに注意すべきことは何ですか?

12.インデックスクエリはクエリのパフォーマンスを確実に向上させることができますか?どうして?

13.数百万以上のデータを削除する方法

14.プレフィックスインデックス

15.左端の接頭辞の原則とは何ですか?左端のマッチング原理は何ですか

16. BツリーとB +ツリーの違い

17. Bツリーを使用する利点

18. B +ツリーを使用する利点

19.ハッシュインデックスとB +ツリーの違いまたは長所と短所は何ですか?

20.データベースがBツリーではなくB +ツリーを使用するのはなぜですか?

21. B +ツリーは、クラスター化インデックスとカバリングインデックスを満たしたときに、データをクエリするためにテーブルに戻る必要はありません。

22.クラスタ化インデックスとは何ですか?クラスター化インデックスと非クラスター化インデックスを使用する場合

23.結合指数とは何ですか?なぜ共同インデックスの注文に注意を払う必要があるのですか?

5、事務

1.データベーストランザクションとは何ですか?

2.物事の4つの特性(ACID)は何ですか?

3.ダーティリーディングとは何ですか?ファントムリーディング?再現性はありませんか?

4.トランザクションの分離レベルは何ですか?MySQLのデフォルトの分離レベルは何ですか?

6、ロック

1. MySQLロックを理解していますか?

データベースに同時トランザクションがある場合、データの不整合が発生する可能性があります。現時点では、アクセスの順序を保証するために何らかのメカニズムが必要です。ロックメカニズムはそのようなメカニズムです。

ホテルの部屋のように、誰もが自由に出入りする場合、同じ部屋を奪う人が複数いて、部屋に鍵がかけられており、鍵を申請した人が部屋にチェックインして鍵をかけることができます。他の人が鍵を使うのを待つ必要があります。再度使用できます。

2.分離レベルとロックの関係

3.ロックの粒度に応じたデータベースロックは何ですか?ロックメカニズムとInnoDBロックアルゴリズム

4.デッドロックとは何ですか?それをどう扱うか?

デッドロックとは、2つ以上のトランザクションが同じリソース上で互いに占有し、互いのリソースをロックするように要求する現象を指し、悪循環につながります。

デッドロックを解決する一般的な方法:

1.異なるプログラムが複数のテーブルに同時にアクセスする場合は、同じ順序でテーブルにアクセスすることに同意してください。これにより、デッドロックを大幅に削減できます。

会議。

2.同じトランザクションで、必要なすべてのリソースを一度にロックして、デッドロックの可能性を減らします。

3.デッドロックが非常に発生しやすいビジネスパーツの場合は、ロックの粒度をアップグレードして、テーブルレベルのロックによってそれを減らすことができます。

デッドロックの可能性が少ない。

ビジネス処理が適切でない場合は、分散トランザクションロックを使用するか、楽観的ロックを使用できます。

5、…

セブン、ビュー

1.ビューを使用する理由 ビューとは何ですか?

複雑なSQLステートメントの再利用性とテーブル操作のセキュリティを向上させるために、MySQLデータベース管理システムはビューを提供します

特性。いわゆるビューは、本質的には物理的に存在しない仮想テーブルであり、その内容は実際のテーブルに似ています。

名前付きの列と行の一連のデータが含まれます。ただし、ビューは保存されたデータ値としてデータベースに存在しません。

また、列データは、定義されたビューのクエリによって参照される基本テーブルから取得され、ビューが具体的に参照されるときに動的に生成されます。

このビューにより、開発者は自分が担当する特定の特定のデータと特定のタスクのみに関心を持ち、ビューで定義されているものだけを確認できます。

ビューによって参照されるテーブル内のデータではなく、データ。これにより、データベース内のデータのセキュリティが向上します。

2.ビューの特徴は何ですか?

  • ビューの列は、テーブルの抽象化と論理的な意味で確立された新しい関係である、さまざまなテーブルから取得できます。
  • ビューは、基本テーブル(実際のテーブル)から生成されたテーブル(仮想テーブル)です。
  • ビューの作成と削除は、基本テーブルには影響しません。
  • ビューのコンテンツの更新(追加、削除、変更)は、基本テーブルに直接影響します。
  • ビューが複数の基本テーブルからのものである場合、データの追加と削除は許可されません。

ビューの操作には、ビューの作成、ビューの表示、ビューの削除、およびビューの変更が含まれます。

3.ビューの使用シナリオは何ですか?

ビューの基本的な目的:SQLクエリを簡素化し、開発効率を向上させます。別の用途がある場合、それは古い時計と互換性があることです

構造。

以下は、ビューの一般的な使用シナリオです。

  • SQLステートメントを再利用します。
  • 複雑なSQL操作を簡素化します。クエリを記述した後は、その基本的なクエリの詳細を知らなくても簡単に再利用できます。
  • テーブル全体ではなく、テーブルの一部を使用します。
  • データを保護します。ユーザーには、テーブル全体へのアクセスではなく、テーブルの特定の部分へのアクセスを許可できます。
  • データ形式と表示を変更します。ビューは、基になるテーブルの表現および形式とは異なるデータを返す可能性があります。

4、…

8つのストアドプロシージャと関数

1.ストアドプロシージャとは何ですか?長所と短所は何ですか?

ストアドプロシージャは事前にコンパイルされたSQLステートメントであり、モジュール式の設計が可能であるという利点があります。つまり、一度作成するだけで済みます。

後でプログラムで複数回呼び出すことができます。特定の操作でSQLを複数回実行する必要がある場合、ストアドプロシージャの使用は純粋なものではありません

SQLステートメントの実行は高速でなければなりません。

利点:

1)ストアドプロシージャは事前にコンパイルされており、実行効率が高い。

2)ストアドプロシージャのコードはデータベースに直接格納され、ストアドプロシージャ名はネットワーク通信を減らすために直接呼び出されます。

3)高度なセキュリティ。ストアドプロシージャを実行するには、特定の権限を持つユーザーが必要です。

4)ストアドプロシージャを再利用できるため、データベース開発者の作業負荷を軽減できます。

短所:

1)デバッグは面倒ですが、PL / SQL Developerを使用したデバッグは非常に便利です。この欠点を補います。

2)移植の問題、データベース側のコードはもちろんデータベースに関連しています。ただし、エンジニアリングプロジェクトの場合、基本的に

移植の問題で。

3)再コンパイルの問題。バックエンドコードは実行前にコンパイルされるため、参照関係を持つオブジェクトが変更された場合、

影響を受けるストアドプロシージャとパッケージは再コンパイルする必要があります(ただし、実行時に自動的にコンパイルされるように設定することもできます)。

4)プログラムシステムで多数のストアドプロシージャが使用されている場合、プログラムが使用のために配信されると、ユーザーの需要が増加します。

追加すると、データ構造が変更され、システムに関連する問題が発生します。最後に、ユーザーがシステムを保守したい場合は、

それは非常に難しく、価格は前例のないものであり、維持するのはさらに面倒です。

実際には、データベースとインタビューの質問に関する知識が豊富ですが、スペースの制限により、読書体験に影響を与えないように、次のコンテンツはスクリーンショットの形式で共有されています。

クイックスタートチャネル:(ここをクリック)ダウンロードしてください!誠意あふれる!

Javaインタビュー、アーキテクチャ、および実際のドキュメントポータルの選択された質問:https : //docs.qq.com/doc/DRW1nUkdhZG5zeGVi

整理するのは簡単ではありません、役立つと感じる友人は編集者を好きになり、共有し、サポートすることができます〜

あなたのサポート、私のモチベーション、皆さんに明るい未来と絶え間ない提供を願っています!

おすすめ

転載: blog.csdn.net/weixin_45784983/article/details/108669567