MySQL パーティション テーブルの基本入門チュートリアル

MySQL パーティション テーブルの基本入門チュートリアル

序文

最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエリの効率を向上させ、期限切れのデータを迅速に削除するために、MySQL パーティショニング メカニズムを選択しました。データを時間ごとに分割します。

パーティションタイプ

  • 範囲パーティション分割: 最も一般的に使用され、指定された連続間隔に属する列の値に基づいて複数の行をパーティションに割り当てます。最も一般的なものは、時間フィールドに基づいています。パーティション ベースの列は、整数であることが望ましいです。日付型の場合は、関数を使用して整数に変換できます。
  • リスト パーティション: リスト パーティションは RANGE パーティションに似ていますが、違いは、リストが列挙値リストのコレクションであるのに対し、RANGE は連続した間隔値のコレクションである点です。
  • ハッシュ パーティション分割: 指定されたパーティション数に基づいて、データが異なるパーティションに割り当てられます。ハッシュ パーティション分割では、整数に対してのみハッシュ操作を実行できます。整数以外のフィールドは、式を通じてのみ整数に変換できます。
  • キー パーティション: KEY パーティションは HASH パーティションに似ていますが、次の違いがあります。
    • KEY パーティションでは複数の列が許可されますが、HASH パーティションでは 1 つの列のみが許可されます。
    • 主キーまたは一意キーがある場合、キー内のパーティション列は未指定のままにすることができます。デフォルトは主キーまたは一意キーです。そうでない場合は、列を明示的に指定する必要があります。
    • KEY パーティション オブジェクトは、列に基づく式ではなく、列である必要があります。
    • KEY パーティション分割と HASH パーティション分割のアルゴリズムは異なります。PARTITION BY HASH (expr) では、MOD 値は expr によって返される値ですが、PARTITION BY KEY (column_list) では、列の MD5 値に基づきます。

パーティションコマンド

パーティションを作成する

テーブル `access_log` を作成します (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_time` 日時 NOT NULL、
 主キー (`id`,`access_time`)
) エンジン=InnoDB デフォルト文字セット=utf8
/*!50100 範囲によるパーティション分割 (to_days(access_time))
(パーティション p1 の値は (to_days(20190101) 未満) エンジン = InnoDB、
 パーティション p2 の値は (to_days(20190102)) 未満です エンジン = InnoDB、
 パーティション p3 の値が (to_days(20190103)) より小さい エンジン = InnoDB) */;

作成後、各パーティションがibdファイルに対応していることがわかります。


パーティションテーブル

新しいパーティションを追加する

access_logテーブルを変更してパーティションを追加(
 パーティションp4の値が(to_days('20190105'))より小さい
);

パーティションの削除

access_logテーブルを変更し、パーティションp1を削除します。

パーティションを分割する

access_logテーブルを変更し、パーティションp4を(
 -> パーティションs0の値が(to_days('20190104')より小さい)、
 -> パーティション s1 の値が (to_days('20190105') より小さい)
 -> );

パーティションを結合する

access_logテーブルを変更し、パーティションs0、s1を( 
 パーティションp4の値が(to_days('20190105'))より小さい 
);

予防

  • MySQL パーティションに主キーまたは一意キーがある場合は、パーティション列をそれに含める必要があります (そうでない場合は、主キーまたは一意キーを決定するためにすべてのパーティションをスキャンする必要があります)
  • パーティションフィールドはNULLにできません。そうしないとパーティション範囲が決定されないため、NOT NULLを使用するようにしてください。
  • パーティションの最大数は1024を超えることはできません
  • 外部キーはサポートされていません
  • データテーブルの整数列のみをパーティション化できます。または、パーティション関数を使用してデータ列を整数列に変換できます。
  • パーティションテーブルは自動増分列には影響しません

よくある質問

  • PRIMARY KEY には、テーブルのパーティション関数内のすべての列が含まれている必要があります。これにより、主キーが一意であるかどうかの判断を単一のパーティション内で完了できます。そうでない場合は、すべてのパーティションにわたって完了する必要があります。
  • MAXVALUE は最後のパーティション定義でのみ使用できます。RANGE テーブルは、パーティション分割後に MAXVALUE パーティションを持つことはできません。そうしないと、パーティションを追加できません。または、単にパーティションを再分割することもできます。
テーブル access_log のパーティションを範囲 (to_days(access_time)) で変更します。
パーティションp1の値が(to_days('20191202'))未満である、 
パーティションp2の値が(to_days('20191203'))未満である 
 パーティション po 値が (maxvalue) より小さい
)
  • テーブルには値 737425 のパーティションがありません。パーティション範囲にすべての可能なレコード値が含まれていないためです。

参照する

  • MySQL · ベストプラクティス · パーティションテーブルの基本タイプ
  • インターネット企業はなぜ MySQL パーティション テーブルを使用しないのでしょうか?
  • エラー 1481 (HY000) を解決する方法: MAXVALUE は最後のパーティション定義でのみ使用できます

要約する

これで、MySQL パーティション テーブルの基本的な導入チュートリアルに関するこの記事は終了です。MySQL パーティション テーブルに関するより詳しい内容については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL パーティション テーブルに関するパフォーマンス バグ
  • MySQL テーブルパーティションの使用法と基本原理の詳細な説明
  • MySQL シャーディング入門ガイド
  • MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明
  • MySQLパーティションテーブルの詳細な説明
  • MySQL ベストプラクティス: パーティションテーブルの基本タイプ
  • MySQL パーティションテーブルのベストプラクティスガイド
  • MySQL パーティションテーブルの正しい使用方法
  • MySQL パーティションテーブルの制限と制約の詳細な説明
  • MySQLはデータテーブル内の既存のテーブルを分割します

<<:  JavaScript 配列メソッド - 体系的な概要と詳細な説明

>>:  Alibaba Cloud Serverにプログラムをデプロイし、ドメイン名を使用して直接アクセスする方法の詳細な説明

推薦する

MySQLフィールドのデフォルト値を設定する方法

目次序文: 1. デフォルト値に関する操作2. 使用上の提案要約:序文: MySQL では、テーブル...

ウェブ音楽プレーヤーを実現する js

この記事では、参考までに簡単なHTMLと音楽プレーヤーの制作コードを紹介します。具体的な内容は以下の...

MySQLがブール型を返すいくつかの状況について簡単に説明します。

mysqlはブール型を返します最初のケースでは、直接戻ります select id='22a...

VMware 構成 VMnet8 ネットワーク方法の手順

目次1. はじめに2. 設定手順1. はじめに1. NAT モード (VMnet8) は、仮想マシン...

初心者向け入門チュートリアル⑨:ポータルサイトの構築方法

さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...

JSはショッピングカート効果の単純な加算と減算を実装します

この記事の例では、ショッピングカートの簡単な追加と削除を実現するためのJSの具体的なコードを参考まで...

autoconfを使用してMakefileを生成し、プロジェクトをコンパイルする手順

序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...

Linuxで権限が拒否された場合の解決策の詳細な説明

許可が拒否されました:その理由は、ファイルの読み取り、書き込み、作成、削除などの権限がないためです。...

HTML+CSS ボックスモデルの例 (円、半円など) 「border-radius」はシンプルで使いやすい

多くの友人は、フロントエンドを学習するときに、ボックス モデルがデフォルトで正方形であることに気付き...

実際のプロジェクトでElementUIを使用する手順の詳細な説明

目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...

DeepinでPyenvをインストールする手順

序文これまでは、/bin/ ディレクトリのソフトリンクを変更して Python のバージョンを切り替...

コマンドラインを使用してUbuntuのバージョンを検出する方法

方法1: lsb_releaseユーティリティを使用するlsb_release ユーティリティは、L...

overflow:autoの使い方の詳しい説明

本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...

Vue+Element+Springboot画像アップロードの実装例

最近、たまたま vue+springboot のフロントエンドとバックエンドの分離プロジェクトに触れ...