MySQLはデータテーブル内の既存のテーブルを分割します

MySQLはデータテーブル内の既存のテーブルを分割します

既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移行します。テーブルは時間別にパーティション分割できます。ただし、このテーブルはリアルタイムで更新されず、1 日に 1 回の挿入操作が行われます。
時間はたっぷりありますが、サーバー上には他のアプリケーションもあるため、より小さなリソースを使用することが主なアプローチです。

操作方法

@1 ALTER TABLE を使用して、テーブルをパーティション テーブルに変更できます。この操作により、パーティション テーブルが作成され、データが自動的にコピーされてから、元のテーブルが削除されます。
サーバーのリソース消費が比較的大きいと思われます。

同様の操作

ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))
(   
パーティション p_Apr 値が (TO_DAYS('2012-05-01')) より小さい
パーティション p_May の値は (TO_DAYS('2012-06-01')) より小さい 
PARTITION p_Dec 値が MAXVALUE 未満です);

@2 元のテーブルと同じ新しいパーティション テーブルを作成し、元のテーブルからデータをエクスポートして、新しいテーブルにインポートします。
(元のテーブルの主キーは id のみで、パーティション フィールドは stsdate です。ここで、主キーを id、stsdate の共同主キーに変更する必要があります。パーティション テーブルでは、パーティション フィールドが主キーまたは主キーの一部である必要があります。)

操作プロセス

2番目のオプションを採用します。まずパーティション テーブルを作成し、次に元のテーブル データをエクスポートし、新しいテーブル名を元のテーブル名に変更して挿入し、最後に通常のインデックスを作成します。

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

テーブル `apdailysts_p` を作成します (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `ap_id` INT(11) NULLではない、
  `mac` VARCHAR(17) NOT NULL、
  `liveinfo` LONGTEXT NULLではありません。
  `livetime` INT(11) NOT NULL,
  `stsdate` 日付がNULLではありません。
  `lastmodified` DATETIME NULLではありません、
   主キー (`id`, `stsdate`)
) 
範囲列によるパーティション(stsdate) (
    パーティション p0 の値は ('2016-06-01') より小さいです。
    パーティション p1 の値は ('2016-07-01') より小さいです。
    パーティション p2 の値が ('2016-08-01') より小さい。
    パーティション p3 の値が ('2016-09-01') より小さい。
    パーティション p4 の値が ('2016-10-01') より小さい。
    パーティション p5 の値は ('2016-11-01') より小さいです。
    パーティション p6 の値は ('2016-12-01') より小さいです。
    パーティション p7 の値は ('2017-01-01') より小さいです。
    パーティション p8 の値は ('2017-02-01') より小さいです。
    パーティション p9 の値は ('2017-03-01') より小さいです。
    パーティション p10 の値が ('2017-05-01') より小さい
    パーティション p11 の値は ('2017-06-01') より小さいです。
    パーティション p12 の値が ('2017-07-01') より小さい。
    パーティション p13 の値は ('2017-08-01') より小さいです。
    パーティション p14 の値が ('2017-09-01') より小さい。
    パーティション p15 の値が MAXVALUE 未満です
);

データのエクスポート

mysqldump -u データベース名 -p --no-create-info データベース名 apdailysts > apdailysts.sql

テーブル名を変更し、データをインポートし (200 万件のデータをインポートするのに 10 分かかりました。8 GB 強です)、テストして問題がなければ、元のテーブルを削除します。

テストは正常に動作しており、2日間観察します。 。

– 10.16
2日間の観察で、ページのクエリ速度が開けない状態から数秒で開ける状態に改善され、この最適化は効果的であることがわかりました。

これで、MySQL で既存のテーブルをパーティション分割する方法に関するこの記事は終了です。MySQL で既存のテーブルをパーティション分割する方法についての詳細は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLパーティションテーブルは月別に分類されています
  • MySQL パーティション テーブルに関するパフォーマンス バグ
  • Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明
  • MySQLパーティションテーブルの詳細な説明
  • MySQL ベストプラクティス: パーティションテーブルの基本タイプ
  • MySQL パーティション テーブルのパーティション キーが主キーの一部である必要があるのはなぜですか?

<<:  Firebug ツールを使用して iPad でページをデバッグする

>>:  HTMLで細い線のテーブルを作成する簡単な例

推薦する

モバイル端末の適応に関する簡単な説明

序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...

vite2.0+vue3 モバイルプロジェクトの詳細な説明

1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...

Vue で className として空の文字列を使用することはなぜ推奨されないのですか?

目次空の文字列 '' と null を比較するケース1: 空の文字列を使用する &#...

CocosCreator で http と WebSocket を使用する方法

目次1. HTTPGET 2. HTTP POSTウェブソケット4. Egretのhttpとwebs...

Vueモバイル端末の適応化問題の詳細説明

1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...

Mysql SQL ステートメントのコメント

MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

加算、減算、乗算、除算の機能を実現するには、HTML に 2 つの数値を入力します。

1. parseFloat() 関数Web ページ上に簡単な計算機を作成し、テキスト ボックスに ...

Dockerコンテナの構築と実行のプロセスの詳細な説明

イメージをプルし、コンテナを作成してコンテナを実行するだけです。 docker run -d --r...

22 Vue 最適化のヒント (プロジェクトの実践)

目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...

HTML検証 HTML検証

HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...

Vue+WebSocket ページでの長時間接続のリアルタイム更新

最近、Vue プロジェクトではデータをリアルタイムで更新する必要があります。折れ線グラフは 1 秒ご...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...