翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
分割テーブルへのデータのアーカイブ
MySQL はサポートしています分割
次のコード例を考えてみましょう。TABLE orders
内に存在するorderprocessing
スキーマ。その履歴データはパーティションにありますphistorica
l には、2021 年以前のデータが含まれています。同じ表では、アプリケーションレベルのホットデータが、2022年の各月のライブパーティションにあります。パーティション内のデータをアーカイブするにはphistorical
、アーカイブを作成できますtable orders_2021_and_older
同じ構造でarchive
スキーマ。その後、MySQL を使用できます。パーティションの交換phistorical
そのテーブルに アーカイブテーブルは分割されていないことに注意してください。アーカイブ後、データを検証して Amazon S3 に移動できます。
CREATE TABLE orders ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)) PARTITION BY RANGE (TO_DAYS(order_date)) ( PARTITION pstart VALUES LESS THAN (0), PARTITION phistorical VALUES LESS THAN (TO_DAYS('2022-01-01')), PARTITION p2022JAN VALUES LESS THAN (TO_DAYS('2022-02-01')), PARTITION p2022FEB VALUES LESS THAN (TO_DAYS('2022-03-01')), PARTITION p2022MAR VALUES LESS THAN (TO_DAYS('2022-04-01')), PARTITION p2022APR VALUES LESS THAN (TO_DAYS('2022-05-01')), PARTITION p2022MAY VALUES LESS THAN (TO_DAYS('2022-06-01')), PARTITION p2022JUN VALUES LESS THAN (TO_DAYS('2022-07-01')), PARTITION p2022JUL VALUES LESS THAN (TO_DAYS('2022-08-01')), PARTITION p2022AUG VALUES LESS THAN (TO_DAYS('2022-09-01')), PARTITION p2022SEP VALUES LESS THAN (TO_DAYS('2022-10-01')), PARTITION p2022OCT VALUES LESS THAN (TO_DAYS('2022-11-01')), PARTITION p2022NOV VALUES LESS THAN (TO_DAYS('2022-12-01')), PARTITION p2022DEC VALUES LESS THAN (TO_DAYS('2023-01-01')), PARTITION pfuture VALUES LESS THAN MAXVALUE ); CREATE TABLE orders_2021_and_older ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)); mysql> alter table orderprocessing.orders exchange partition phistorical with table archive.orders_2021_and_older; Query OK, 0 rows affected (0.33 sec)
使用する場合EXCHANGE PARTITION
履歴データをアーカイブする機能については、以下のベストプラクティスをお勧めします。
-
アプリケーションにアーカイブデータを保存するための別のスキーマを作成します。このスキーマには、アーカイブされたデータを格納するアーカイブテーブルが含まれます。アーカイブスキーマのアーカイブテーブルは、インデックスと主キーを含め、ライブテーブルと同じ構造でなければなりません。ただし、ターゲットアーカイブテーブルを分割テーブルにすることはできません。MySQL では、2 つのパーティションテーブル間でパーティションを交換することは許可されていません。
-
アーカイブテーブルには、保存されている履歴データを識別しやすい命名規則に従ってください。これは、このデータを Amazon S3 に移動する監査タスクや設計ジョブを実行する場合に便利です。
-
を実行してください
EXCHANGE PARTITION
Aurora MySQL 互換ライター、MySQL 用 Amazon RDS、または MariaDB 用の Amazon RDS インスタンスにトラフィックが入らない場合に、ダウンタイムウィンドウに表示されるデータ定義言語 (DDL) ステートメント。実行できるかもしれません
EXCHANGE PARTITION
アプリケーションまたはマイクロサービスのトラフィックの少ない時間帯に ただし、パーティションテーブルには書き込みや選択は行わないか、ごくわずかであるはずです。実行時間の長い既存の select クエリが原因でEXCHANGE PARTITION
DDL が待機しているため、データベース上でリソース競合が発生しています。実行前にこれらの条件がすべて満たされていることを確認するデザインスクリプトEXCHANGE PARTITION
お使いのシステム上。
アプリケーションの設計が分割データに対応していて、現在分割されていないテーブルがある場合は、データのアーカイブをサポートするためにデータを分割テーブルに移動することを検討してください。詳細については、MySQL ドキュメント