磨砺技术珠矶,践行数据之道,追求卓越价值

回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页

[作者 高健@博客园  luckyjackgao@gmail.com]

在PostgreSQL中,分区表是无法建立的,或者说是假的分区表。

步骤通常如下:

建立base表,建立继承base表的各个子表,为base表建立rule,建立trigger。

这样,把base表当作分区表的入口,由于insert/update时不断触发trigger,其效率还是很低下的。

可以参见

https://wiki.postgresql.org/wiki/Table_partitioning

http://www.postgresql.org/docs/current/interactive/ddl-partitioning.html

查询的时候,optimizer 到达子表是没有问题的。

Currently we allow the user to create arbitrary nested tables with arbitrary constraints and then the planner tries to detect at run-time which child tables are candidates for the query. See PostgreSQL Partitioning for details.

也可以参考:

http://blog.csdn.net/beiigang/article/details/9056263

http://pgpen.blogspot.com/2013_05_01_archive.html

在PPAS9.0里,建立分区表仍然是一个比较痛苦的工作。

但是PPAS9.1和PPAS9.2里面,带有直接建立分区表的功能,使用起来更方便了:

例如:

edb=# drop table employees cascade;
DROP TABLE
edb=#
edb=# create table employees
edb-# ( empno integer,
edb(# ename varchar(10),
edb(# job varchar(9),
edb(# PRIMARY KEY (empno)
edb(# )
edb-# partition by list (job)
edb-# ( partition emp_mgmt values ('manager'),
edb(# partition emp_sales values ('salesman'),
edb(# partition emp_ops values ('clerk')
edb(# );
CREATE TABLE
edb=# \dt schema | name | type | owner
--------------+---------------------------+----------+--------------
enterprisedb | employees | テーブル | enterprisedb
enterprisedb | employees_emp_mgmt | テーブル | enterprisedb
enterprisedb | employees_emp_ops | テーブル | enterprisedb
enterprisedb | employees_emp_sales | テーブル | enterprisedb
...
(21 rows) edb=#

再看index的状态,那是非常有趣的。

edb=# \di

   schema     |           name           | type      |    owner     |         table
--------------+--------------------------+----- -----+--------------+--------------------------
enterprisedb | employees_emp_mgmt_pkey | index | enterprisedb | employees_emp_mgmt
enterprisedb | employees_emp_ops_pkey | index | enterprisedb | employees_emp_ops
enterprisedb | employees_emp_sales_pkey | index | enterprisedb | employees_emp_sales
enterprisedb | employees_pkey | index | enterprisedb | employees
...
(18 rowa) edb=#

而如果在postgresql里建立分区表,涉及到index就很麻烦了:postgresql不支持跨越表的索引。

http://www.linuxforu.com/2012/01/partitioning-in-postgresql/

[作者 高健@博客园  luckyjackgao@gmail.com]

回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页

磨砺技术珠矶,践行数据之道,追求卓越价值

PPAS可以安装分区表的更多相关文章

  1. PPAS下安装 pg_stat_statements过程记录

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL统计信息索引页     回到顶级页面:PostgreSQL索引页 PostgreSQL中,如何安装pg_stat_sta ...

  2. PostgreSQL基础知识与基本操作索引页

    磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...

  3. IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘

    以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...

  4. 分区表在安装系统(MBR)丢失或损坏

    操作系统能识别出硬盘中的各个不同的分区,是靠硬盘分区表(MBR)来识别的. 硬盘分区表中记录了各个分区的位置和大小以及类型等信息,假设这个分区表破坏了,那么这块硬盘里面的分区就会丢失.系统是无法在浏览 ...

  5. 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决

    问题: 今天我的diy电脑重装系统时,遇到了一个棘手的问题.在选择安装分区的时候,提示有这样的错误. Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows ...

  6. windows 安装操作系统时切换分区表格式

    在出现分区管理界面时,按下shift+F10呼出命令行,输入diskpart 后尝试如下命令将磁盘分区表手动转换到MBR. list disk ---- 显示当前磁盘列表 select disk x ...

  7. Windows无法安装到这个磁盘 选中的磁盘具有MBR分区表解决方法

    在安装 win10的时候,会出现这种提示:Windows 无法安装到这个磁盘.选中的磁 盘具有 MBR 分区表.在 EFI 系统上, Windows 只能安装到 GPT 磁盘.出现这种 情况主要是因为 ...

  8. PostgreSQL分区表实现——pg_pathman安装、配置

    近日由于系统运行时间太长,数据库库表中的数据也是越来越多,为了缩短库表的操作时间,所以对数据库中的部分库表进行分区的操作. 通过研究,决定采用pg_pathman插件对库表进行分区操作.pg_path ...

  9. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

随机推荐

  1. [C#] Microsoft .Net框架SerialPort类的用法与示例

    从Microsoft .Net 2.0版本以后,就默认提供了System.IO.Ports.SerialPort类,用户可以非常简单地编写少量代码就完成串口的信息收发程序.本文将介绍如何在PC端用C# ...

  2. 关于C#线程,线程池和并行运算的简单使用和对比

    转自:https://www.cnblogs.com/jeffwongishandsome/archive/2010/11/12/1876137.html 先大概看一下控制台应用程序的Main方法的主 ...

  3. AIX常用命令学习(一)

    1.prtconf命令 查看AIX主机的结构特征状态 语法: prtconf [ -c ] [ -k ] [ -L ] [ -m ] [ -s ] [ -v ] Flags: -c  Displays ...

  4. asp.net --- Menu控件\CSS 和样式

    几乎 Menu 控件外观的各个方面都可以使用 Menu 控件的属性或级联样式表 (CSS) 来管理.通过了解哪些属性控制呈现的哪些方面,可以定制菜单的外观.本主题介绍由 Menu 控件公开的样式类型, ...

  5. JS 触发不同ifram控件,实现刷新,关闭标签(H+框架)

    例: //前台页面事件处理模块var EventOperation = { Refresh: function (data_id) { var a = (window.top); var ele = ...

  6. android-eclips中logcat不显示信息的问题解决

    time:2015/11/20 1. logcat窗口不显示问题 解决: 参考[1] 2. logcat中不显示信息 (1)红米手机 (2)解决问题 * 有些文章提到重启eclipse,或者重启手机. ...

  7. consul日常操作命令

    #开发模式运行agent consul agent -dev #查看consul 集群成员 consul members [-detailed] members命令的输出基于gossip协议,并最终一 ...

  8. Apache2.2 + tomcat7 服务器集群配置

    1.软件安装 1.1下载和安装apache Apache 2.2 :http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 1.2下载和安装 ...

  9. 对象在hibernate中的状态

    首先hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate().get().load() ...

  10. 对于socket发送数据时是否要加锁及write read的阻塞非阻塞

    偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...