MySQL は定期的にパーティションを追加します

        MySQL がパーティションを作成した後、場合によってはパーティションを自動的に作成する必要があります。たとえば、一部のテーブルのデータ量が非常に多く、一部のデータがホット データである場合、日付でパーティション分割した後も業務量が継続しており、再度パーティションを作成するのに時間がかかります。プログラマとして、これを手動で作成するのは耐えられません。

        まず、パーティションを自動的に追加できるストアド プロシージャを作成します (パーティションを自動的に削除する必要がある場合は、この記事も適用されます)。

DELIMITER $$
USE `me`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `add_schedule_log_partition`()
BEGIN
set @pname = concat('p',date_format(curdate(),'%Y%m%d'));
set @nexttodays = to_days(date_add(curdate(), INTERVAL 1 DAY));
set @executeStr = concat('alter table s_schedule_log add partition (PARTITION ',  @pname, ' VALUES LESS THAN (', @nexttodays, ' ))');
prepare stmt from @executeStr;
execute stmt;
deallocate prepare stmt;
select @executeStr;
END$$

DELIMITER ;
;

        ストアドプロシージャは手動で呼び出すことができますが、問題ありませんか? 次に、時間制限のあるタスクを書きます

DELIMITER ||
CREATE EVENT add_schedule_log_partition_event
          ON SCHEDULE
          EVERY 1 day STARTS '2022-05-15 01:00:00'
          DO
      BEGIN
          call `me`.`add_schedule_log_partition`;
 END ||
DELIMITER ;

注: スケジュールされたタスクでは、event_scheduler パラメーターを有効にする必要があります。ステータスを表示するには、sql: show 変数 ('%schedule%' など) を使用してください。

 タスクステータスを有効にする: グローバルevent_scheduler = 'ON'を設定します。

おすすめ

転載: blog.csdn.net/u011471105/article/details/124778370