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で細い線のテーブルを作成する簡単な例

推薦する

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

Linuxの一般的なコマンドでLinuxのmoreコマンドを使用する方法

more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...

制限を使用すると、MySQL のページングがどんどん遅くなるのはなぜですか?

目次1. テスト実験2. 制限ページング問題に対するパフォーマンス最適化手法2.1 テーブルをカバー...

HTML文書の基本構造(Webページ作成の基礎知識)

HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...

どのような種類の MYSQL 接続クエリを知っていますか?

序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

Ubuntu ターミナル マルチウィンドウ 分割画面 ターミネーター

1. インストールターミネーターの最大の特徴は、1つのウィンドウで複数のターミナルを開くことができる...

MySQL InnoDB テーブルスペース暗号化の例の詳細な説明

序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...

mysql 3つのテーブルを接続してビューを作成する

3 つのテーブルが接続されています。テーブル A のフィールド a はテーブル B のフィールド b...

CSS セレクターの重みの理解(個人テスト)

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

Dockerコンテナの入退出方法の詳細な説明

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

Vue で配列をクリアするいくつかの方法 (要約)

目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...

ウェブページのFOUC問題によるウェブページの混乱の解決策

FOUC は Flash of Unstyled Content の略で、FOUC と略されます。簡...

Vueはシンプルなタイマーコンポーネントを実装します

プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...