技術共有

インタビュー - Mysql-3 クラスター データベースとテーブル

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


序文

MySQL クラスターをご存知ですか? マスター/スレーブ レプリケーション プロセスを理解していますか?この記事は面接の質問を紹介することに重点を置いており、すべてのプログラマーが参加できることを願っています。 ! !


1.MySQLクラスター

オンライン環境では、通常、Mysql の高可用性と読み取り/書き込み分離を実現するために、1 つのマスターと 1 つのスレーブ、または 1 つのマスターと複数のスレーブを持つ Mysql インスタンスをデプロイします。Mysql のマスターとスレーブの同期は、binlog ログを通じて実行されます。

1.1 MySQL クラスターの構築:

Mysqlマスタースレーブクラスタの構築については、ブロガーによる以下の記事を参照してください。

1.2 マスターとスレーブの同期プロセス:

ここに画像の説明を挿入します

2. Mysql は大規模なデータ ストレージにどのように対処しますか?

リレーショナル データのストレージとして、単一のテーブルのデータ量が 3,000 万を超えると、MySQL にはパフォーマンスのボトルネックが発生します。同様に、単一の MySQL インスタンスによってサポートされるクライアント接続と同時実行性にも、現時点ではシステムが一定のボトルネックを抱えることになります。サブデータベースやサブテーブルの技術を利用して実装することを検討してください。

2.1 垂直分割

2.1.1 垂直サブライブラリ:

たとえば、今日のマイクロサービスは、それぞれのマイクロサービス モジュールが独自の MySQL データベース インスタンスに接続されており、ビジネスに応じて異なるテーブルを異なるライブラリに分割していることが特徴です。さまざまなレベルでデータを拡張し、同時実行性が高い場合はディスク I0 とデータ ボリュームの接続を増加します。
ここに画像の説明を挿入します

2.1.2 垂直テーブル:

フィールドに基づいて、さまざまなフィールドがフィールド属性に従ってさまざまなテーブルに分割されます。ホット データとコールド データを分離し、IO 遷移の競合を減らし、2 つのテーブルが相互に影響を与えないようにすることができます。

ここに画像の説明を挿入します

2.2 水平分割:

2.2.1 水平サブライブラリ:

1 つのライブラリのデータを複数のライブラリに分割します。これにより、多数の単一ライブラリと高い同時実行性によるパフォーマンスのボトルネック問題が解決され、システムの安定性と可用性が向上します。
ここに画像の説明を挿入します

2.2.2 水平テーブル:

1 つのテーブルのデータを複数のテーブルに分割します (同じライブラリ内に含めることもできます)。単一テーブル内の過剰なデータ量によって引き起こされるパフォーマンスの問題を最適化し、IO 競合を回避し、テーブル ロックの可能性を減らします。
ここに画像の説明を挿入します

2.3 プロジェクトでサブライブラリとサブテーブルを使用しますか?

spring-cloudで管理するspring-boot上に業務に応じたデータベースインスタンスを構築し、垂直パーティショニングを実施しました。大量のデータの保存に対処するために、私たちのプロジェクトでは Mycat ミドルウェアを使用してデータベースとテーブルを分割しています。

Mycat のインストールと Spring-Boot の統合:

2.4 データベースとテーブルを分割するときに技術的な問題に遭遇したことがありますか?

データベースがテーブルに分割されると、データが複数のデータベースの複数のテーブルに保存されるため、分散トランザクション、分散グローバル ID、ルーティング ルール設定、およびクロスノード ページングの問題が発生します。


要約する

この記事では、Mysql クラスター、サブデータベース、テーブルに関するインタビューの質問をいくつか整理します。