2019独角兽企业重金招聘Python工程师标准>>>

--新建主表
create table part_test(id int, info text, crt_time timestamp not null);
--插入测试数据
insert into part_test select id,md5(random()::text),clock_timestamp() + (id||' hour')::interval from generate_series(1,10000) t(id);
--所有数据都在主表
select * from part_test limit 10;
--创建分区表(range分区)
--建议
--1. 分区列必须有not null约束
--2. 分区个数必须能覆盖已有的所有记录
--3. 建议使用非堵塞式迁移接口
--4. 建议数据迁移完成后,禁用主表
select create_range_partitions('part_test'::regclass,      -- 主表OID'crt_time',                        -- 分区列名'2016-10-25 00:00:00'::timestamp,  -- 开始值interval '1 month',                -- 间隔;interval 类型,用于时间分区表24,                                -- 分多少个区false) ;                -- 是否转移数据
---自动扩展分区,新插入的数据不在已有的分区范围内,会自动创建分区
select set_auto('part_test'::regclass, true);--生成100条数据
select id,md5(random()::text),clock_timestamp() + (id||' hour')::interval from generate_series(1,100) t(id);--转移数据
--注意:
--1. 分区列必须有not null约束
--2. 分区个数必须能覆盖已有的所有记录
select partition_table_concurrently('part_test'::regclass,10000,1.0);--查看迁移任务
select * from pathman_concurrent_part_tasks;--停止迁移数据
select stop_concurrent_part_task('part_test'::regclass)--设置主表不可用
select set_enable_parent('part_test'::regclass, false);--查看查询走分区
explain select * from part_test where crt_time = '2017-8-25 00:00:00'::timestamp;--指定两个需要合并分区,必须为相邻分区(不是相邻分区,报错),合并后,会删掉其中一个分区表
select merge_range_partitions('part_test_2'::regclass, 'part_test_12'::regclass) ;--分区分裂select split_range_partition('part_test_1'::regclass,      -- 分区oid'2016-11-10 00:00:00'::timestamp,     -- 分裂值'part_test_1_2');              -- 分裂后的表名--删除分区,数据移动到主表
select drop_range_partition('part_test_2',false);--删除分区,数据也删除,不迁移到主表
select drop_range_partition('part_test_3',true);--删除所有分区,数据移动到主表
select drop_partitions('part_test'::regclass, false);--将分区从主表的继承关系中删除, 不删数据,删除继承关系,删除约束(指定分区名,转换为普通表)
select detach_range_partition('part_test_2');--hash分区
--注意:分区列必须有not null约束
--1. 分区列必须有not null约束
--2. 建议使用非堵塞式迁移接口
--3. 建议数据迁移完成后,禁用主表
--4. pg_pathman不会受制于表达式的写法,所以select * from part_test where crt_time = '2016-10-25 00:00:00'::timestamp;这样的写法也是能走哈希分区的。
--5. hash分区列不局限于int类型的列,会使用hash函数自动转换。
select create_hash_partitions('part_test'::regclass,       -- 主表OID'crt_time',                        -- 分区列名128,                               -- 打算创建多少个分区false) ;                           -- 不迁移数据--查询每个分区表初次创建时的 interval
select * from pathman_config;--添加分区,支持指定表空间(在后面追加)
append_range_partition(parent         REGCLASS,            -- 主表OIDpartition_name TEXT DEFAULT NULL,   -- 新增的分区表名, 默认不需要输入tablespace     TEXT DEFAULT NULL)   -- 新增的分区表放到哪个表空间, 默认不需要输入--例子(默认根据分区规则往后延一个分区)
select append_range_partition('part_test'::regclass);--在头部追加分区
select prepend_range_partition('part_test'::regclass);--分区字段要被更新,需要创建更新触发器
select create_range_update_trigger('part_test'::regclass);--永久禁止分区表,禁用pg_pathman后,继承关系和约束不会变化,只是pg_pathman不介入custom scan 执行计划。
---disable_pathman_for没有可逆操作,请慎用
select disable_pathman_for('part_test');--1. 如果在建初始分区时,需要设置分区表的表空间,可以设置会话或事务的参数
set local default_tablespace='tbs1';--2. disable_pathman_for函数没有可逆操作,请慎用。--3. 不建议关闭pg_pathman.enable--4. 不建议开启自动扩展范围分区,一个错误的分区值可能导致创建很多分区。--5. 推荐使用set_enable_parent禁用主表。--6. 由于pg_pathman使用了custom scan接口,所以只支持9.5以及以上版本。--7. 传统哈希分区需要输入分区键值的约束条件,才能正确选择分区。pg_pathman只要输入键值即可。--8. 目前使用prepared statement会造成性能下降,跟踪到与LWLOCK有关,并不是不支持过滤分区造成的

参考:https://yq.aliyun.com/articles/62314

转载于:https://my.oschina.net/duo8523/blog/860560

postgreSQl pathman 用法语句总结相关推荐

  1. PostgreSQL REGEXP_REPLACE用法及代码示例

    PostgreSQL REGEXP_REPLACE用法及代码示例: 原文链接:https://vimsky.com/examples/usage/postgresql-regexp_replace-f ...

  2. 【学习笔记】一些postgreSQL常用sql语句

    [学习笔记]一些postgreSQL常用sql语句 1.序列自增id 2.将从一个表中查出来的数据插入到另一个表中 3.sql更新替换字段中某个字 4.统计一个字段多个值的次数 5.统计某个字段重复项 ...

  3. 查询mysql和postgresql服务器端版本语句:select version();

    一.使用场景 想知道服务器端安装的数据库的版本,用来: 1.确认测试环境:已有的数据库版本是否与测试项目要求数据库版本一致 2.编写测试报告:测试使用数据库版本 3.下载对应版本驱动:使用jmeter ...

  4. fofa的简单用法语句

    fofa的简单用法 fofa的简单用法语句**** https://www.fofa.so/ 简介 官网这样描述:FOFA是白帽汇推出的一款网络空间资产搜索引擎.它能够帮助用户迅速进行网络资产匹配.加 ...

  5. postgreSQL的update语句

    postgreSQL的update语句 这里作者用的是DBeaver新建一个SQL语句进行示范: 首先申明下,由于当我们查询一个语句时候,输入表名后,查询语句后边会有一个表名的缩写: 所以在下边,我们 ...

  6. PostgreSQL INSERT INTO 语句

    PostgreSQL INSERT INTO 语句 PostgreSQL INSERT INTO 语句用于向表中插入新记录. 我们可以插入一行也可以同时插入多行. 语法 INSERT INTO 语句语 ...

  7. PostgreSQL DISTINCT用法

    2019独角兽企业重金招聘Python工程师标准>>> PostgreSQL的DISTINCT关键字用于与SELECT语句消除所有重复的记录,并获取唯一记录.有可能的情况下,当你有多 ...

  8. PostgreSQL hint用法(兼容oracle)

    Hint是Oracle数据库中很有特色的一个功能,pg和oracle的优化器一样也是CBO(基于成本的).但是在pg中是没有hint的,但是我们可以去通过设置成本因子,设置优化器开关等方式来" ...

  9. html连接sql基本语句,PostgreSQL 常用SQL语句

    PostgreSQL 简介[1] PostgreSQL 可以说是目前功能最强大.特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备.这个起源于加州大学伯克利分校的数据库, ...

最新文章

  1. stm32-USART1重映射
  2. 23种设计模式C++源码与UML实现--组合模式
  3. hdu 1042 N!(大数)
  4. 【渝粤教育】国家开放大学2018年春季 8625-22T老年心理健康 参考试题
  5. 为什么我要重新开始数据科学
  6. HTML DOM console.table() 方法
  7. kendoui固定宽度_KendoUi 学习笔记(二) Grid
  8. 为黑苹果解锁AirDrop功能和蓝牙以及WI-FI
  9. 机器学习理论之(1):概率分布,信息熵,朴素贝叶斯
  10. matlab水汽通量,降水成因诊断分析水汽通量水汽通量散度可降水量.pptx
  11. D38 Java智能电话项目本————创建实体类
  12. AMBA协议笔记(APB)
  13. 4110:圣诞老人的礼物-Santa Clau’s Gifts
  14. 如何在vue项目中引入html页面
  15. 简历石沉大海?程序员简历到底该怎么写?
  16. 电声测试仪 音频分析仪 rta噪声频谱分析仪 噪音计 声压级表 麦克风录音系统动态范围 音频采集系统输入动态范围 噪声 最大声压级 放大器增益
  17. mac详细的系统版本怎么查看?
  18. Python——蟒蛇图形绘制(turtle绘图体系)
  19. 项目开发工作总结(工具类、图表组件等)
  20. 办公室白墙文化墙设计_设计对文化敏感的人工智能设备

热门文章

  1. MySQL教程(三)—— MySQL的安装与配置
  2. /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15 not found
  3. C++ class、struct区别
  4. 面向对象重写(override)与重载(overload)区别
  5. 【起航计划 011】2015 起航计划 Android APIDemo的魔鬼步伐 10 App-Activity-Reorder Activities 后退栈 Intent FLAG...
  6. JQuery 文本框高亮显示插件
  7. @ViewChild 的三种常用方法
  8. 数据库系统原理(第6章:数据库安全与保护)
  9. 引用Nuget包Microsoft.EntityFrameworkCore.Tools.DotNet报错
  10. 大数据项目中的QA需要迎接新的挑战