网站推广的图片,南宁制作网站服务商,做网站用什么语言快,销售app软件大概需要多少钱目录
一、需求分析
二、实施流程 2.1、创建以日期分区的临时表 2.2、循环创建每日的分区 2.3、单语句新增分区 2.4、删除特定分区
三、其他 一、需求分析 如标题所示#xff0c;现在需要建一张临时表来存储每日增量的流水数据。存储周期为近两年#xff0c;其中日增量约10…
目录
一、需求分析
二、实施流程 2.1、创建以日期分区的临时表 2.2、循环创建每日的分区 2.3、单语句新增分区 2.4、删除特定分区
三、其他 一、需求分析 如标题所示现在需要建一张临时表来存储每日增量的流水数据。存储周期为近两年其中日增量约1000W ~ 1200W一年约40亿数据两年90亿左右。经过讨论决定用日分区的方式来建流水分区表。 则分区表维持在近两年内即可每日先增后删。取n-2天数据
二、实施流程 2.1、创建以日期分区的临时表
CREATE TABLE my_partitioned_table
(id INT,data_dt date
)
PARTITION BY RANGE (id)
;2.2、循环创建每日的分区
其中inclusive代表包括exclusive代表不包括。所以下一条语句衔接的时候一定要注意如漏掉那么在插入当天数据的时候会提示分区找不到等错误。
-- do语句嵌套循环解决批量创建分区的问题
DO $$
DECLAREpartition_date DATE : 2021-07-01; -- 起始日期end_date DATE : 2025-01-01; -- 结束日期
BEGINWHILE partition_date end_date LOOPpartition_name : to_char(partition_date, YYYYMMDD); -- 格式化日期为字符串例如20230101EXECUTE alter table my_partitioned_table add partition p_ || partition_name || start (dateto_char(current_date))partition_date : partition_date interval 1 day; -- 增加一天END LOOP;
END;
$$; 2.3、单语句新增分区
alter table aa add partition p_20210701 start (20210701) inclusive end (20210702) exclusive2.4、删除特定分区
-- 两种方式
-- 1、单个分区删除
-- 2、批量分区删除-- 删除一个特定分区
ALTER TABLE my_partitioned_table DROP PARTITION partition_name;-- 删除多个特定分区
ALTER TABLE my_partitioned_table DROP PARTITION partition_name1, partition_name2; 三、其他 新建分区后可以单独访问分区表里某一天分区数据。默认的分区名称是schema.xxx_xxx_xxx_1_part_partition_name。(其中xxx_xxx_xxx为表名)
-- 如果分区名称partition_name为20220101
-- 那么查询出来的数据是2022-01-01那一天的数据select *
from schema.xxx_xxx_xxx_1_part_partition_name
;