1

私はマスターとスレーブのレプリケーションデータベースを持っています。 私は10m行のテーブルを持っています。私はp_201701、p_201702、..などの毎月の鳴動でパーティションを設定し、 'p_future'をインクルードします。マスターでは、パーティション 'p_future'を 'p_201711'と 'p_future'に再編成する予定です。私は以下のクエリで再編成する予定です。MariaDBテーブルパーティションを再編成すると、どのような影響がありますか?

  • このクエリを実行すると、私のデータベースにどのような影響がありますか?
  • テーブルが挿入、更新されないようにしますか?
  • 私の複製スレーブにはどのような影響がありますか?

...

ALTER TABLE tbl_history 
    REORGANIZE PARTITION p_future INTO(
    PARTITION p_201711 VALUES LESS THAN (TO_DAYS('2017-12-01')), 
    PARTITION p_future VALUES LESS THAN MAXVALUE 
    ); 

は、あなたの答えを感謝しています。

答えて

1

(あなたは私のhttp://mysql.rjweb.org/doc.php/partitionmaintを読むような音)

あなただけLESS THAN '2017-12-01'パーティションを必要とする前に、REORGANIZEを実行した場合、実質的には影響があるはずです。これは、p_futureが空でなければならず、新しいパーティションにまだ何も格納されていないためです。

私は「実質的に影響なし」と言っているのは、テーブルなどにいくつかの簡単なメタロックがあるためですが、シャベルするデータはありません。

このテクニックは、「フェイルセーフ」のようなものです。なぜなら、クエリの実行に失敗した場合、すべてが機能し続けるからです。新しい行は(間違って)p_futureに入り、SELECTsはそれらを見つけるでしょう。最終的には、新しいパーティションを作成してp_futureからそのパーティションに行を移動するために、スクリプトを実行する必要があります(それは遅くなります)。

[レプリケーション]でタグ付けしましたが、レプリケーションのオン/バイには影響しません。 Galeraの場合、TOIはALTERの正しい方法です。

+0

お返事ありがとうございます –

関連する問題