2つの列でパーティション分割する必要がある非常に大きなテーブルがあります。 1つの列はIDであり、パーティショニングは非常に単純です。 2番目のパーティション分割は、日付列で毎日行う必要があります。このテーブルには最大30日間のデータを保持する必要があり、30日より古いパーティションは削除する必要があります。このシナリオでパーティショニングを行うための最良の方法は何ですか。
ありがとう
「30日後にパージ」の使用例は、PARTITIONing
の優れた使用法です。 (私が知っているのは、わずか4つのユースケースの1つです。)
PRIMARY KEY(id, date)
...
PARTITION BY RANGE (TO_DAYS(date))
(...)
その後、毎日行います
ALTER TABLE .. DROP PARTITION ...
ALTER TABLE .. REORGANIZE PARTITION future INTO
PARTITION ..., -- preparing for tomorrow
PARTITION future ...; -- this partition should stay empty.
パーティションの詳細 -これは、@ mootmootが提供する@jkavalikの「必須のリーディング」の続きです。
注:サブパーティションはありません。 id
によるパーティションはありません。 account_idによるパーティションはありません。大きな利点は、大きな夜間DELETE
をDROP PARTITION
経由で即座に実行できることです。
おそらくaccount_id
に何らかのインデックスが必要です。複合インデックスを検討してください。
これについてさらに説明する必要がある場合は、SHOW CREATE TABLE
(パーティション化の有無にかかわらず)およびメインクエリを提供してください。