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

推薦する

Vue のスロットとフィルターの詳細な説明

目次スロットスロットとは何ですか?スロットの内容コンパイルスコープフォールバックコンテンツ名前付きス...

MySQLユーザー権限管理の詳細な説明

目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...

Centos6.5 に zabbix2.4 をインストールするチュートリアル図

centos-DVD1バージョンシステムの固定IPアドレスは192.168.159.128で、cen...

Docker を使用して開発環境を構築する方法 (Windows および Mac)

目次1. Dockerを使用する利点2. Dockerをインストールする1) LinuxにDocke...

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

HTML 編集の基礎 (初心者必読)

DREAMWEAVER を開き、新しい HTML を作成します。 。ボディの特性: bgcolor...

Vue 3 での watch と watchEffect の新しい使い方

目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...

HTMLおよびJSPページがキャッシュされ、Webサーバーから再取得されるのを防ぎます。

ユーザーがログアウトした後、ブラウザの戻るボタンがクリックされると、Web アプリケーションは保護さ...

中国語ウェブコンテンツを紹介する10の経験

<br /> テキスト、シンボル、リンクの 3 つの側面に焦点を当て、主に中国語で、私の...

時間を節約できる Linux コマンド エイリアス 15 個

序文Linux システムの管理と保守のプロセスでは、多数のコマンドが使用されます。非常に長いコマンド...

process.env.NODE_ENV 本番環境モードを設定する方法

始める前に、process.env.NODE_ENV にはデフォルトで開発と本番の 2 つの状態しか...

CentOS7でFTPサーバーを設定する方法

FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...

MySQL の concat 関数についての簡単な説明。MySQL でフィールドの前または後に文字列を追加する方法

MySQL で concat 関数を使用する方法: CONCAT(文字列1、文字列2、…)戻り値は、...

画像の下部の空白部分の問題を解決する

最近のプロジェクトに取り組んでいるとき、下の図に示すように、画像を参照すると常に下部に空白スペースが...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...