我们经常会需要删除表的一些历史数据,一般做法是delete,但是这会导致undo和redo的信息快速增长,而且影响数据库整体性能。这时我们就可以利用drop某个分区来完成此任务,例如: alter table tab_a drop partition yy01; 当一个表的分区被删除,对应的local索引也同时被删除。如果还存在着global索引,那么它会变成unusable状态。
CREATE TABLE students (id INTEGER, status character varying(30), grade INTEGER) PARTITION BY HASH(id); CREATE TABLE stu_part1 PARTITION OF students FOR VALUES WITH (modulus 3, remainder 0); CREATE TABLE stu_part2 PARTITION OF students FOR VALUES WITH (modulus 3, remainder 1); CREATE TABLE...
ALTERTABLEpartitioned_tableDROPPARTITIONFOR(partition_key='value'); 1. 2. 6.2 批量清除大数据表 对于大表,直接使用DELETE或TRUNCATE可能导致锁争用或性能问题。以下是解决方案: 分批删除: DELETEFROMlarge_tableWHEREconditionLIMIT10000; 1. 2. 3. 结合循环删除,减少锁定时间。 使用分区表:分区表允许单独清除分...
使用 DROP TABLE 或执行 ALTER TABLE DETACH PARTITION 删除单个分区比批量操作快得多。这些命令还完全避免了由批量 DELETE 引起的 VACUUM 开销。 很少使用的数据可以迁移到更便宜、更慢的存储介质上。 PostgreSQL 为以下分区形式提供内置支持: Range Partitioning 该表被划分为由一个键列或一组列定义的“范围”,分配...
ALTERTABLE[IFEXISTS]nameDETACHPARTITIONpartition_name; 删除分区及其中数据(与删除表方法相同) DROP TABLE [ IF EXISTS ] partition_name [, ...] [ CASCADE | RESTRICT ] RESTRICT:缺省选项,如果有任何对象依赖该表则拒绝删除该表。 CASCADE:自动删除依赖于表的对象(例如视图),然后自动删除依赖于那些对象的所有...
ALTERTABLE[ IFEXISTS] name DETACHPARTITIONpartition_name; 删除分区及其中数据(与删除表方法相同) DROP TABLE [ IF EXISTS ] partition_name [, ...] [ CASCADE | RESTRICT ] RESTRICT:缺省选项,如果有任何对象依赖该表则拒绝删除该表。 CASCADE:自动删除依赖于表的对象(例如视图),然后自动删除依赖于那些对象...
create table trip_agg_data_2019 as select * from trip_agg_data where 1=0; alter table trip_agg_data_2019 alter column time_key set not null; -- 2, create_range_partition select create_range_partitions('trip_agg_data_2019'::regclass,'time_key',0::bigint,1::bigint,0,false) ; ...
alter table trip_agg_data alter column time_key set not null; select create_range_partitions('trip_agg_data'::regclass,'time_key',0::bigint,1::bigint,0,false) ; select add_range_partition('trip_agg_data'::REGCLASS,0,2019010100,'trip_agg_data_lt_20190101'); select add_range_partition...
drop table orders_backup; 现要某个分区重新拆分,并且将分区数据重新插入新的分区表,如果要将某些分区合并,也类似操作 --拆分分区--1、将子分区表与主表脱离 alter table orders detach partition orders_current;--2、将子分区表重命名 alter table orders_current rename to orders_current_backup;--3、主表...
digoal=# alter table c1 drop constraint pl_cl_check; //删除 pl_cl_check 约束,即 CHECK(c1>0); ALTER TABLE digoal=# alter table cl inherit pl; ERROR: child table is missing constraint"pl_cl_check" //当此时再将该表加入继承时,系统报错。因为在加入继承时,系统会对该表的非空约束以及普通约...