pgsql 分区表:

--主表
create table test(id integer, name varchar(32));
create index idx_test_id on test using btree(id); --分表
create table test_b (like test including constraints including defaults including indexes) inherits(test);
create table test_c (like test including constraints including defaults including indexes) inherits(test); alter table test_b add constraint con_test_c check(id >=1001 and id <= 2000);
alter table test_c add constraint con_test_b check(id >=2001 and id <= 3000); create table test_d( check(id >=3001 and id <= 4000))inherits (test); --插数据
insert into test_b select generate_series(1001,2000),'bbb';
insert into test_c select generate_series(2001,3000),'ccc';
insert into test_d select generate_series(3001,4000),'ddd'; --分析表,加入计划
analyze test_a; analyze test_b; analyze test_c;
analyze test_d; --测试查询计划 constraint_exclusion
set constraint_exclusion = off/partition;
show constraint_exclusion; explain select * from test where id = 1; --测试Insert
insert into test values (11,'aaaaa'); select * from test where name = 'aaaaa' select * from test_a; insert into test values(1,'a'),(1111,'v'),(2222,'vv'); select * from test_c; --创建触发器函数
create function tb_partition_insert()
returns trigger as
$$
begin
if (id >=1 and id <= 1000) then
insert into test_a values(NEW.*);
elseif (id >=1001 and id <= 2000) then
insert into test_b values(NEW.*);
elseif (id >=2001 and id <= 3000) then
insert into test_c values (new.*);
else
raise exception 'Date out of range. Fix the tbl_partition_insert_trigger() function!';
end if ;
return null;
end
$$
language plpgsql; --触发器
create trigger insert_test_parition
before insert on test
for each row execute procedure tb_partition_insert(); --测试Insert
insert into test values(1,'a'),(1111,'v'),(2222,'vv'); select pg_size_pretty(pg_relation_size('test')); insert into test select generate_series(1,1000),'aa';
select count(1) from test_a; select pg_size_pretty(pg_relation_size('test')); select pg_table_size('test')

参考:

  1. 为主:http://www.cnblogs.com/mchina/archive/2013/04/09/2973427.html
  2. 为辅:http://my.oschina.net/Kenyon/blog/59455 ,http://www.postgres.cn/docs/9.4/ddl-partitioning.html#DDL-PARTITIONING-CONSTRAINT-EXCLUSION
  3. 例子参考:http://francs3.blog.163.com/blog/static/4057672720112422436937/
  4. 结合:http://www.cnblogs.com/stephen-liu74/archive/2012/04/27/2291814.html
  5. 查看表大小等操作:http://www.cnblogs.com/liuyuanyuanGOGO/p/3224554.html
  6. 分区表通过继承实现,在对表进行清除数据操作时,要注意是否会同时清除父表和字表:
  7. http://francs3.blog.163.com/blog/static/40576727201011203725668/

PostgreSQL建立分区表示例的更多相关文章

  1. ubuntu server下建立分区表/分区/格式化/自动挂载(转)

    link:http://www.thxopen.com/linux/2014/03/30/Linux_parted.html 流程为:新建分区-->格式化分区-->挂载分区 首先弄明白分区 ...

  2. MSSQL中建立分区表(转载备忘)

    转载自CSDN地址:http://bbs.csdn.net/topics/330087045 SQL Server 2005 分区表实践——建立分区表(partition table) 问题:有一个订 ...

  3. oracle_根据ID(字符型)建立分区表

    方案思路:有一张暴增的数据表(10亿级别),以后需求需要提高单条查询性能, 这个表有个唯一ID, 假设是UUID,采用区分首字母的方法,不同字母的数据入到不同的物理文件中. 第一步: 查找数据库服务器 ...

  4. hive之建立分区表和分区

    1. 建立分区表 create table 单分区表:其中分区字段是partdate,注意分区字段不能和表字段一样,否则会报重复的错 create table test_t2(words string ...

  5. PostgreSQL PARTITION 分区表

    PostgreSQL 分区表,操作性相当便捷. 但只能在创建时决定是否为分区表,并决定分区条件字段,普通表创建后,不能在修改为分区表. Note:通过其他方法也可转化为分区表. 和其他数据库一样,分区 ...

  6. SQL Server 2008 建立分区表 脚本

    /*第一步:创建分区函数*/Create partition function Part_func_Bag(varchar(20)) as range right /*正式区间for values(N ...

  7. Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在

    #!/bin/bash source /etc/profile; ################################################## # Author: ouyang ...

  8. SQL分区表示例

    -- Create tablecreate table TT_FVP_OCR_ADDRESS( id NUMBER not null, waybill_no VARCHAR2(32) not null ...

  9. jchdl - 初次使用建立项目示例

    https://mp.weixin.qq.com/s/HaarKjpHan08RUTlEX0XHg   一. 下载并安装JDK 8   下载链接:https://www.oracle.com/tech ...

随机推荐

  1. 【poj3237】 Tree

    http://poj.org/problem?id=3237 (题目链接) 树链剖分模板题,然而这150+行的程序我调了一天,历经艰辛,终于ac.. 题意 给出一个n个节点的带权树,要求维护操作:1. ...

  2. 素材收集(icon/images/javascript)

    icon: http://www.easyicon.net/ http://www.iconpng.com/ images: http://www.58pic.com/tupian/fenxiangt ...

  3. Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)

    通常我们在h5前端调用后台接口时,一般是ajax,那么接口的安全成了一个问题. 这里可以肯定的说,前端调用的接口一定要验证! 然后剖析了微信网页版.京东网页版这些,也都是通过接口的形势绑定数据,所以在 ...

  4. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  5. 文件内容统计——Linux wc命令

    有了该命令,就可以得到当前目录下所有符合条件的文件总数,如下: find -type f | wc -l 这个命令的功能也很好记,因为它功能很有限: wc -c filename:显示一个文件的字节数 ...

  6. dedeCMS /plus/ad_js.php、/plus/mytag_js.php Vul Via Injecting PHP Code By /plus/download.php Into DB && /include/dedesql.class.php

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对于这个漏洞,我们可以简单概括如下 . "/plus/download. ...

  7. 为什么 SharedPreferences 可以直接 调用,前面却没有对象

    获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两 ...

  8. python中%和format

    两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些 % In [22]: print '%s' % 'hello world' hello world In [23]: pr ...

  9. Parallel Computing–Cannon算法 (MPI 实现)

    原理不解释,直接上代码 代码中被注释的源程序可用于打印中间结果,检查运算是否正确. #include "mpi.h" #include <math.h> #includ ...

  10. 20个命令行工具监控Linux系统性能

    作为Linux/Unix 系统管理员需要掌握一些常用的工具用于检测系统性能.在这里,dodo为大家推荐非常20个有用的并且最常用的命令行系统监视工具: 1. top -Linux系统进程监控 top ...