文章目录

PostgreSQL 10 引入了声明式分区(declarative partitioning)特性,但是实现的功能有限。PostgreSQL 11 为此带来了许多关于分区的增强功能。首先就是增加了 HASH 分区。哈希分区基于分区键的哈希值计算数据所在的分区。

CREATE TABLE htable (c1 bigint, c2 VARCHAR(10)) PARTITION BY HASH(c1);

为哈希分区表创建分区时,使用 FOR VALUES WITH 子句指定分区的计算方法,其中的 MODULUS 子句用于指定除数,REMAINDER 子句用于指定哈希值被除后的余数。

CREATE TABLE htable_p0 PARTITION OF htable FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE htable_p1 PARTITION OF htable FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE htable_p2 PARTITION OF htable FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE htable_p3 PARTITION OF htable FOR VALUES WITH (MODULUS 4, REMAINDER 3);

REMAINDER 子句需要指定一个小于 MODULUS 子句的值。如果指定的分区数量少于 MODULES 子句的值,将会导致无法插入某些数据,因为没有用于存储这些值的分区。

\d+ htableTable "public.htable"Column |         Type          | Collation | Nullable | Default | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+---------+----------+--------------+-------------c1     | bigint                |           |          |         | plain    |              | c2     | character varying(10) |           |          |         | extended |              |
Partition key: HASH (c1)
Partitions: htable_p0 FOR VALUES WITH (modulus 4, remainder 0),htable_p1 FOR VALUES WITH (modulus 4, remainder 1),htable_p2 FOR VALUES WITH (modulus 4, remainder 2),htable_p3 FOR VALUES WITH (modulus 4, remainder 3)

为表 htable 生成一些数据,查看数据在各个分区的分布是否均匀:

INSERT INTO htable SELECT val,'val:'||val FROM generate_series(1,100000) val;
INSERT 0 100000SELECT COUNT(*) FROM htable_p0;count
-------25126
(1 row)SELECT COUNT(*) FROM htable_p1;count
-------24978
(1 row)SELECT COUNT(*) FROM htable_p2;count
-------24971
(1 row)SELECT COUNT(*) FROM htable_p3;count
-------24925
(1 row)

每个分区大概包含四分之一(25000)的数据。

对于哈希分区,同样支持分区裁剪(Partition Pruning):

show enable_partition_pruning;enable_partition_pruning
--------------------------onEXPLAIN SELECT * FROM htable where c1 = 200;QUERY PLAN
------------------------------------------------------------------Append  (cost=0.00..470.57 rows=1 width=17)->  Seq Scan on htable_p3  (cost=0.00..470.56 rows=1 width=17)Filter: (c1 = 200)
(3 rows)

官方文档:Table Partitioning

PostgreSQL 11 新特性之哈希分区相关推荐

  1. PostgreSQL 11 新特性之 PL/pgSQL 增强

    文章目录 PostgreSQL 11 增加了一个新的编程对象,存储过程(PROCEDURE).它与存储函数类似,但是没有返回值.存储过程还支持事务,参考文章"PostgreSQL 11 新特 ...

  2. C++11新特性的总结

    C++11新特性 auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11) C++动态内存管理 序列式容器 array forward_list; 继承和 ...

  3. A Morden C++ —— C++11新特性指南

    A Morden C++ -- C++11新特性指南 by JOKER on 2013/10/14 不知不觉C++1x,也就是以前的C++0x已经基本达到工业使用的成熟度了,各个编译器的实现也很完整了 ...

  4. 探索PostgreSQL 14新特性--SEARCH和CYCLE

    探索PostgreSQL 14新特性--SEARCH和CYCLE PG14的SEARCH和CYCLE新功能大大简化了递归查询的方式,本文给出一些基于旅行计划的示例. 创建数据库 本文示例基于任何PG1 ...

  5. COSMIC的后端学习之路——2.1 C++11新特性(1)

    2.1 C++11新特性(1) 知识树 1.智能指针 (1)std::shared_ptr:共享的智能指针 ①初始化 ②获取原始指针 ③指定删除器(自定义删除对象) ④一些错误用法 (2)std::u ...

  6. IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍

    文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...

  7. Java 11 新特性

    2019独角兽企业重金招聘Python工程师标准>>> Java 11 新特性 转载于:https://my.oschina.net/u/3764794/blog/2993127

  8. C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)

    2019独角兽企业重金招聘Python工程师标准>>> C++11新特性中的匿名函数Lambda表达式的汇编实现分析(一) 首先,让我们来看看以&方式进行变量捕获,同样没有参 ...

  9. C++11 新特性之std::thread

    C++11 新特性之std::thread 原文:https://blog.csdn.net/oyoung_2012/article/details/78958274 从C++11开始,C++标准库已 ...

最新文章

  1. Spring Cloud应用开发(四:服务容错保护)
  2. 图结构练习——BFS——从起始点到目标点的最短步数
  3. python 遍历listbox_Python仿evething的文件搜索器 !
  4. GDCM:gdcm::Spacing的测试程序
  5. 深入理解Struts2
  6. webpack设置应用缓存_如何使用Webpack在Rails应用程序中设置TinyMCE
  7. 查看SELinux状态
  8. Spark Core
  9. poj1845 Sumdiv 题解报告
  10. Linux学习笔记---使用BusyBox创建根文件系统(一)
  11. 【数据安全案例】花旗集团承认遭受数据安全泄露
  12. 常州工学院计算机网络考试题库,用Winsock实现在线考试
  13. 图书管理系统实验报告
  14. 美团校招,百度校招经历
  15. 《开学第一课》观后感——幸福
  16. C++周末训练题-机器人迷宫(BFS)
  17. java如何解压rar文件怎么打开,Java压缩与解压rar文件
  18. 腾讯云硬盘挂载宝塔命令
  19. Android开发学习总结——搭建最新版本的Android开发环境
  20. function函数嵌套 matlab_MATLAB嵌套函数

热门文章

  1. 【超图】SuperMap iClient3D for WebGL 加载TMS瓦片
  2. 统筹方法 -- 华罗庚
  3. 使用按键精灵玩棒球忍者
  4. 【重磅】SAP 成立企业级创新营,建立面向初创公司和独角兽的创新合作伙伴生态
  5. 如何用matlab计算比例尺,宝黛爱情仍属于狭义的才子佳人小说体系。 ( )
  6. 端口扫描--zmap
  7. 正交表的生成工具 allParis 的使用以及遇到的异常 Can‘t open 0204.txt; at release\allpairs.pl line 368.
  8. iPhone图片设计问题
  9. 服务器的性能三大指标有哪些,性能测试——三大指标
  10. 文本文档的后缀名怎么显示和隐藏