首页 > 数据库 >PostgreSQL10 内置分区表

PostgreSQL10 内置分区表

时间:2024-02-01 21:58:09浏览次数:37  
标签:par 内置 log 分区 01 PostgreSQL10 分区表 TABLE CREATE

创建分区表的主要语法包含两部分:创建主表和创建分区。

建主表语法如下:

CREATE TABLE table name ( ... ) 
[ PARTITION BY { RANGE I LIST ) ( { column name I ( expression ) ) 

创建主表时须指定分区方式,可选的分区方式为 RANGE 范围分区或 LIST 表分区,并指定宇段或表达式作为分区键。

创建分区的语法如下:

CREATE TABLE table name 
PARTITION OF parent_table [ ( 
) ] FOR VALUES partition_bound_spec 

创建分区时必须指定是哪张表的分区,同时指定分区策略 partition_bound_spec,如果是范围分区,partition_bound_spec 须指定每个分区分区键的取值范围 ,如果是列表分区 partition_bound_spec,需指定每个分区的分区键值。

例子:

CREATE TABLE log_par(
id serial,
user_id int4, 
create_time timestamp(0) without time zone 
) PARTITION BY RANGE(create_time);

表 log_par 指定了分区策略为范围分区,分区键为 create_time 宇段。

创建分区,并设置分区的分区键取值范围,如下所示:

CREATE TABLE log_par_his PARTITION OF log_par FOR VALUES FROM ('2000-01-01') TO ('2024-01-01');
CREATE TABLE log_par_202401 PARTITION OF log_par FOR VALUES FROM ('2024-01-01') TO ('2024-02-01'); 
CREATE TABLE log_par_202402 PARTITION OF log_par FOR VALUES FROM ('2024-02-01') TO ('2024-03-01'); 
...
CREATE TABLE log_par_202412 PARTITION OF log_par FOR VALUES FROM ('2024-12-01') TO ('2025-01-01'); 

注意分区的分区键范围不要有重叠,定义分区键范围实质上给分区创建了约束。给所有分区的分区键创建索引,如下所示:

CREATE INDEX idx_log_par_his_ctime ON log_par_his USING btree(create_time); 
CREATE INDEX idx_log_par_202401_ctime ON log_par_202401 USING btree(create_time); 
CREATE INDEX idx_log_par_202402_ctime ON log_par_202402 USING btree(create_time); 
...
CREATE INDEX idx_log_par_202412_ctime ON log_par_202412 USING btree(create_time);

以上三步完成了内置分区表的创建。

内置分区表原理探索

内置分区表原理实际上和传统分区表一样,也是使用继承方式,分区可称为子表,通过以下查询很明显看出表 log_par 和其分区是继承关系:

\d+ log_par

添加分区

添加分区的操作比较简单,例如给 log_par 增加一个分区,如下所示:

CREATE TABLE log_par_202501 PARTITION OF log_par FOR VALUES FROM ('2025-01-01') TO ('2025-02-01'); 

之后给分区创建索引,如下所示:

CREATE INDEX idx_log_par_202501_ctime ON log_par_202501 USING btree(create_time); 

删除分区

删除分区有两种方法,第一种方法通过 DROP 分区的方式来删除,如下所示:

DROP TABLE log_par_202501;

DROP 方式直接将分区和分区数据删除,删除前需确认分区数据是否需要备份,避免数据丢失。另一种推荐的方法是解绑分区,如下所示:

ALTER TABLE log_par DETACH PARTITION log_par_202501;

解绑分区只是将分区和父表间的关系断开,分区和分区数据依然保留,这种方式比较稳妥,如果后续需要恢复这个分区,通过连接分区方

式恢复分区即可,如下所示:

ALTER TABLE log_par ATTACH PARTITION log_par_202501 FOR VALUES FROM ('2025-01-01') TO ('2025-02-01');

连接分区时需要指定分区上的约束。

标签:par,内置,log,分区,01,PostgreSQL10,分区表,TABLE,CREATE
From: https://www.cnblogs.com/jl1771/p/18002188

相关文章

  • `glob`和`fnmatch`都是Python的内置模块,用于文件名的匹配,但它们的功能和使用场景有所
    `glob`和`fnmatch`都是Python的内置模块,用于文件名的匹配,但它们的功能和使用场景有所不同²。1.**fnmatch**:`fnmatch`模块提供了一种简单的方式来匹配Unixshell风格的模式,如`*.py`,`Dat[0-9]*`,`Dat[!0-9]*`等²。它只是将一个文件名与模式进行比较,返回True或False²。例如,......
  • shelve模块——python内置关系型数据库
    介绍python内置的关系型数据库,key-value的方式进行存储,使用的时候可以像字典一样调用,一般数据需要持久化的时候会用到此数据库,比如测试环境的一些基本不会更改的配置信息,可以使用shelve库存储,后续调用的时候不必每次都从接口拉取使用导入importshelve写入#writeback参数......
  • (2A)ADM7172ACPZ-2.5低压差线性稳压器 (LDO),AD5684BRUZ内置SPI接口的四通道、12位DAC
    一、ADM71726.5V、2A、超低噪声、高PSRR、快速瞬态响应CMOSLDOADM7172ACPZ-2.5超低噪声、高PSRR、快速瞬变响应CMOS低压差线性调节器采用2.3V到6.5V电压提供高达500mA的输出电流。这些高输出电流LDO适用于调节6V至1.2V供电轨的高性能模拟和混合信号电路。该......
  • 面向对象之内置方法
    面向对象之内置方法​Python的Class机制内置了很多特殊的方法来帮助使用者高度定制自己的类这些内置方法都是以双下划线开头和结尾的,会在满足某种条件时自动触发__init__ :初始化类时触发__del__ :删除类时触发__new__ :构造类时触发__str__ :str函数或者print函数触发__......
  • SQL Server 内置函数实现MD5加密
    一、MD5加密 HASHBYTES('加密方式','待加密的值')  加密方式=MD2|MD4|MD5|SHA|SHA1  返回值类型:varbinary(maximum8000bytes) 二、MD5加密示例selectHASHBYTES('MD5','123456') HASHBYTES生成的结果为:0xE10ADC3949BA59ABBE56E057F20F8......
  • java中内置锁
    1.概述Java内置锁是一个互斥锁,最多只有一个线程能够获得该锁,当线程B尝试去获得线程A持有的内置锁时,线程B必须等待或者阻塞,直到线程A释放这个锁,如果线程A不释放这个锁,那么线程B将永远等待下去。Java中每个对象都可以用作锁,这些锁被称为内置锁。线程进入同步代码块或方法时会自......
  • python之内置函数
    内置函数                    1.absdefabs(*args,**kwargs):#realsignatureunknown"""Returntheabsolutevalueoftheargument."""pass翻译:返回参数的绝对值1#!/usr/bin/python2print(abs(-2))#绝对值View......
  • PostgreSQL性能优化之分区表
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPartitionTable,学完本课程可以掌握PostgreSQL分区表基础知识,什么是分区表,声明式表分区与继承式的区别,PostgreSQL分区表技术的发展,PostgreSQL分区表创建与使用,PostgreSQL范围分区表创建,PostgreSQLHASH分区......
  • PG DBA培训24:PostgreSQL性能优化之分区表
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPartitionTable,学完本课程可以掌握PostgreSQL分区表基础知识,什么是分区表,声明式表分区与继承式的区别,PostgreSQL分区表技术的发展,PostgreSQL分区表创建与使用,PostgreSQL范围分区表创建,PostgreSQLHASH分区......
  • 细说JavaScript内置对象(JavaScript内置对象详解)
    ![细说JavaScript内置对象(JavaScript内置对象详解)](https://img-blog.csdnimg.cn/direct/69e530474ccf4835b58ecf810db1f348.png#pic_center)一、String对象任何一门语言都会有关于js字符串的介绍,一连串的字符组成一串,就构成了字符串。字符串的处理不存在生活中还是在计算机应......