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にプログラムをデプロイし、ドメイン名を使用して直接アクセスする方法の詳細な説明

推薦する

CentOS7にPostgreSQL11をインストールする方法

CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...

HTML入門チュートリアル HTMLタグ記号をすぐにマスター

補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...

Javascript サンプル プロジェクトでの虫眼鏡効果の実装プロセス

目次序文事例: JD.com の虫眼鏡効果の模倣オフセットシリーズクライアントシリーズスクロールシリ...

MySQL の一般的な SQL ステートメントの概要

1. mysqlエクスポートファイル: SELECT `pe2e_user_to_company`....

Windows サービス 2012 Alibaba Cloud サーバーで MySQL をビルドするときに msvcr100.dll ファイルが見つからないという問題を解決します

解決策1: msvcr100.dll ファイルをダウンロードし (インターネットからソース ファイル...

泡の小さな鋭角効果を実現するCSS

効果画像(境界線の色が薄すぎるので、{} で囲みます): { }参考リンク Pure CSS バブル...

Linux での MySQL 5.6.27 インストール チュートリアル

この記事では、LinuxでのMySQL 5.6.27のインストールチュートリアルを参考までに紹介しま...

MySQL 5.7.18 リリース インストール ガイド (bin ファイル バージョンを含む)

インストール プロセスは、コンパイル手順を除いて、基本的にソース バージョンと同じです。この記事では...

W3C チュートリアル (10): W3C XQuery アクティビティ

XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...

データベースを削除して逃げる?xtraback を使用して MySQL データベースをバックアップする方法

1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バック...

MySQL における USING と HAVING の使用法の簡単な分析

この記事では、例を使用して MySQL での USING と HAVING の使用方法を説明します。...

10 種類のモダンなレイアウトを実現するための CSS コード

序文日曜日に自宅で web.dev の 2020 3 日間ライブを視聴したところ、興味深い点がたくさ...

Vue の自動書式設定の改行保存の詳細な説明

ネットで変更方法をいろいろ調べたのですが、うまくいきませんでした。後で大物から見て削除しました。フォ...

Reactでwindow.print()を使用した際にページが応答しなくなる問題の解決記録について

目次1. 問題の背景: 2. 問題の原因: 3. 問題解決:要約: 1. 問題の背景: window...