postgreSQl pathman 用法语句总结

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

--新建主表
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle查询笔记

-- tanslate(str,from_str,to_str) -- 将str中的from_str替换成to_str select translate(hello,e,o) t from dual;-- instr(str,des_str) -- 可以实现like功能 select instr(hello,g),instr(hello,h),instr(hello,l) from dual; -- decode(value,s1,r1,s2,r2,default) -- 类似于…

全排列算法及实现

转载: 1.http://blog.csdn.net/hackbuteer1/article/details/6657435 2.http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html 3.http://www.slyar.com/blog/stl_next_permutation.html 4.http://www.cplusplus.com/reference/algorithm/next_permutation/ 5…

ssh配置文件详解

配置“/etc/ssh/sshd_config”文件 “/etc/ssh/sshd_config”是OpenSSH的配置文件,允许设置选项改变这个daemon的运行。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词&#xff0…

EC+VO+SCOPE for ES3

词法环境 词法作用域 词法作用域(lexcical scope)。即JavaScript变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码。 词法环境 用于定义特定变量和函数标识符在ECMAScript代码的词法嵌套结构上的关联关系&#xff0…

你真的会写二分检索吗?

转载:http://blog.chinaunix.net/uid-1844931-id-3337784.html 前几天在论坛上看到有统计说有80%的程序员不能够写对简单的二分法。二分法不是很简单的吗? 这难道不是耸人听闻? 其实,二分法真的不那么简单,尤其是二…

android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

Android Listview异步动态加载网络图片详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html标签: Android SDK代码片段(5)[代码] (1)定义类MapListImageAndText管理ListViewItem中控件的内容01 package com.google.zxing.client.android.AsyncL…

C#-面向对象的多态思想 ---ShinePans

总结: 多态是面向对象的核心.---------能够理解为一个方法,多种实现, 在这里能够用虚方法,抽象类,接口能够实现多态 1.首先利用接口来实现多态: 接口相当于"功能,"接口能够实现多继承,分为 显式实现接口和隐式实现接口 keyword为interface格式: interface 接口名 { …

wxpy 0.1.2微信机器人 / 优雅的微信个人号API

微信机器人 / 优雅的微信个人号API,基于 itchat,全面优化接口,更有 Python 范儿。用来干啥一些常见的场景控制路由器、智能家居等具有开放接口的玩意儿跑脚本时自动把日志发送到你的微信加群主为好友,自动拉进群中跨号或跨群转发消…

c++中try catch的用法

在c中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在任何自己得到不想要的结果的时候进行中断,比如在进行数据库事务操作的时候,如果某一个语句返回SQL_ERROR则直接抛出异常,在catch块…

const in c and cpp

http://c-faq.com/ansi/constasconst.html 转载于:https://www.cnblogs.com/invisible/p/3333575.html

android ndk调用出错,由于Android-NDK应用程序的权限问题,为什么fopen在本地方法中失败?...

errno 0;FILE *fp;fp fopen("jigar.txt","wb");if(fp NULL)__android_log_print(ANDROID_LOG_ERROR, APPNAME, "FOPEN FAIL with %d",errno);else__android_log_print(ANDROID_LOG_ERROR, APPNAME, "FOPEN pass ");它得到失败&…

循环队列

什么是队列? 队列(Queue)也是一种运算受限的线性表。它仅仅同意在表的一端进行插入,而在还有一端进行删除。同意删除的一端称为队头(front),同意插入的一端称为队尾(rear)。 FIFO原则 队列具有先进先出原则,与栈的先进后出形成对照…

T(n) = 25T(n/5)+n^2的时间复杂度 计算方法

对于T(n) a*T(n/b)c*n^k;T(1) c 这样的递归关系&#xff0c;有这样的结论&#xff1a; if (a > b^k) T(n) O(n^(logb(a)));logb(a)b为底a的对数 if (a b^k) T(n) O(n^k*logn); if (a < b^k) T(n) O(n^k); a25; b 5 ; k2 ab^k 故T(n)O(n^k*logn)O(n^2*logn)…

android jar导出,Android项目导出jar包的小技巧

我们知道&#xff0c;可以通过如下设置将一个普通的Android工程转换成Android Library工程设置前后工程变化如下使用Ant编译时(通过android.bat update project 命令生成 build.xml)&#xff0c;普通的Android工程会生成apk文件&#xff0c;而Android Library工程只生成jar文件…

(五十九)iOS网络基础之UIWebView简易浏览器实现

【UIWebView网络浏览器】 通过webView的loadRequest方法可以发送请求显示相应的网站&#xff0c;例如&#xff1a; NSURL *url [NSURL URLWithString:"http://m.baidu.com"];// 创建请求数据NSURLRequest *request [NSURLRequest requestWithURL:url];// 向服务器发…

无心插柳OR志在必得?阿里推“来往”的意图

近年来&#xff0c;阿里巴巴在外围的动作确实不少&#xff0c;投资新浪微博、投资陌陌&#xff0c;配合阿里自身的一些战略调整&#xff0c;让人觉得这家公司似乎正在经历一场前所未有的“蜕变”。其实这也不难理解&#xff0c;在BAT三国演义中&#xff0c;任何一方都不能对其他…

wampserver的mysql启动与环境变量设置

安装好wampserver以后&#xff0c;mysql服务默认已经启动了。但是直接在命令行里输入"mysql"&#xff0c;系统会提示说 mysql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 这是因为没有增加“mysql”环境变量,请跳到第3步阅读。 如果之前已经安…

华为mate30怎么申请鸿蒙内测,华为新系统启动内测,mate30系列尝鲜,网友:羡慕...

原标题&#xff1a;华为新系统启动内测&#xff0c;mate30系列尝鲜&#xff0c;网友&#xff1a;羡慕一款手机是否好用&#xff0c;其实取决于两个方面&#xff0c;一个是硬件&#xff0c;另一个则是软件&#xff0c;大家在购机的时候往往最关注的就是硬件配置&#xff0c;因为…

VMware 11完全安装Mac OS X 10.10

----------------------------------------- 引用原文如下&#xff1a; VMware 11安装Mac OS X 10.10_百度经验 http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html VM11安装Mac OS X 10.10 工具/原料 1.VMware Workstation 11 2.unlocker 203&#xff08;for OS…

两个二进制数异或的结果

【面试题目 -亢龙有悔整理】两个二进制数异或结果是多少? a^b |a-b| (按位相减取绝对值&#xff0c;再按位累加) 两个二进制数异或结果 是 这两个二进制数差的绝对值&#xff0c;即表达为如下&#xff1a; a^b |a-b| &#xff08;按位相减取绝对值&#xff0c;再按位累加&am…