ホームページ > データベース > mysql チュートリアル > MySQL パフォーマンス チューニング パーティション テーブル (概要共有)

MySQL パフォーマンス チューニング パーティション テーブル (概要共有)

WBOY
リリース: 2022-04-30 09:00:17
転載
2388 人が閲覧しました

この記事では、mysql に関する関連知識を提供します。主にパフォーマンス チューニングに関する関連問題を紹介し、主にパーティション テーブルの関連内容を紹介します。ユーザーにとって、テーブルは独立した論理テーブルですが、最下層は複数の物理サブテーブルで構成されていますので、一緒に見ていきましょう。

MySQL パフォーマンス チューニング パーティション テーブル (概要共有)

推奨学習: mysql ビデオ チュートリアル

ユーザーにとって、パーティション テーブルは独立した論理テーブルですが、最下層は複数の物理サブテーブルで構成されます。パーティション テーブルは、基盤となる実装を完全にカプセル化し、ユーザーに対して透過的なブラック ボックスです。ファイル システムからは、 # を使用して区切られた名前が付けられた複数のテーブル ファイルが表示されます。
Mysql は、テーブルの作成時に、partition by 句を使用して、各パーティションに格納されるデータを定義します。クエリを実行するとき、オプティマイザは、パーティション定義に基づいて、必要なデータを持たないパーティションをフィルタリングします。クエリではすべてのパーティションをスキャンする必要はありません。
パーティション分割の主な目的は、データを異なるテーブルに分割して、関連するデータを一緒に保存できるようにすることです。
次に、パーティション テーブルの適用シナリオ、パーティション テーブルの制限、パーティション テーブルの原理、パーティション テーブルの種類、パーティション テーブルの作成方法という 6 つの側面からパーティション テーブルについて説明します。パーティションテーブルの使い方、パーティションテーブルの使い方、テーブル作成時の注意点。

1. パーティション テーブルのアプリケーション シナリオ

1. テーブルが大きすぎてすべてをメモリに配置できないか、テーブルの最後の部分にホット データしか存在しません。残りは履歴データです。

2. パーティション化されたテーブルのデータは保守が容易です

(1) 大量のデータをバッチで削除するには、パーティション全体をクリアする方法を使用できます

(2) 独立したパーティションの最適化、チェック、修復などの操作

3. パーティションテーブルのデータを異なる物理デバイスに分散させることで、複数のハードウェアデバイスを効率的に活用できます

4。パーティション テーブルを使用すると、特定の特殊なボトルネックを回避できます。

#(1) innodb の単一インデックスへの相互排他的アクセス

#(2) ext3 ファイル システムの Inode ロック競合

5. 個別にバックアップと復元が可能 パーティション

2. パーティション テーブルの制限

1. テーブルには最大 1024 個のパーティションしか含めることができません。バージョン 5.7 では、 8196 パーティション

2. 初期の MySQL では、パーティション式は整数または整数を返す式である必要があります。MySQL 5.5 では、一部のシナリオでパーティション化にカラムを直接使用できます。

3. パーティション フィールドに主キー列または一意のインデックス列がある場合は、すべての主キー列と一意のインデックス列を含める必要があります。

4. パーティション テーブルでは外部キー制約を使用できません

3. パーティション テーブルの原則

パーティション テーブルは、複数の関連する基礎となるテーブルによって実装されます。基礎となるテーブルもハンドル オブジェクトによって識別され、各パーティションに直接アクセスできます。ストレージ エンジンは、通常のテーブルを管理するのと同じ方法で、パーティションの各基礎テーブルを管理します (すべての基礎テーブルが同じストレージ エンジンを使用する必要があります)。パーティション テーブルのインデックス知識により、各基礎テーブルに同一のインデックスが追加されます。ストレージ エンジンの観点から見ると、基礎となるテーブルは通常のテーブルと何ら変わりません。また、ストレージ エンジンは、それが通常のテーブルであるか、パーティション テーブルの一部であるかを認識する必要はありません。パーティション テーブルの操作は、次の操作ロジックに従って実行されます:

1. クエリの選択

パーティション テーブルをクエリする場合、最初にパーティション レイヤーが開き、すべてロック 基礎となるテーブルについて、オプティマイザは最初に一部のパーティションをフィルタリングできるかどうかを判断し、次に対応するストレージ エンジン インターフェイスを呼び出して各パーティションのデータにアクセスします

#2. 挿入操作

書き込み時 レコードが入力されると、パーティション レイヤーはまず基礎となるすべてのテーブルを開いてロックし、次にどのパーティションがレコードを受け入れるかを決定し、対応する基礎となるテーブルにレコードを書き込みます。

3. 削除操作

レコードを削除する場合、パーティション レイヤーはまず基礎となるすべてのテーブルを開いてロックし、次にデータに対応するパーティションを決定し、最後に次の操作を実行します。対応する基礎となるテーブルを削除します。

4. 更新操作

レコードを更新するときは、まずパーティション レイヤーを開いて基礎となるすべてのテーブルをロックし、mysql が最初にレコードを更新する必要があるパーティションを判断します。次に、データを取り出して更新し、更新されたデータをどのパーティションに配置するかを決定し、最後に基になるテーブルに書き込み、ソース データが配置されている基になるテーブルを削除します。

一部の操作ではフィルタリングがサポートされています。たとえば、レコードを削除する場合、MySQL は最初にレコードを見つける必要があります。where 条件がたまたまパーティション式と一致した場合、このレコードを含まないすべてのパーティションが「すべて」になる可能性があります。フィルターで除外されます。これは更新にも有効です。挿入操作の場合、1 つのパーティションのみがヒットし、他のパーティションはフィルターで除外されます。 MySQL は最初にこのレコードがどのパーティションに属しているかを判断し、次に他のパーティションでは操作せずに、対応するパーティション テーブルにレコードを書き込みます。

各操作は「まず基礎となるすべてのテーブルを開いてロックします」が、これは、パーティション テーブルが処理中にテーブル全体をロックするという意味ではありません。ストレージ エンジンが innodb など、独自に行レベルのロックを実装できる場合、対応するテーブルのロックはパーティション レベルで解放されます。

推奨学習: mysql ビデオ チュートリアル

以上がMySQL パフォーマンス チューニング パーティション テーブル (概要共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート