赞
踩
PostgreSQL中的分区系统最初是由2ndQuadrant创始人Simon Riggs在PostgreSQL 8.1中添加的。它基于继承表,并使用了一种约束排除的新技术将不相关的表排除在被查询扫描之外。虽然当时是前进了一大步,但现在使用起来既麻烦又慢,因而需要更换。
在PostgreSQL10中,由于Amit Langote的努力,它被现代风格的declarative partitioning取代。这种新技术意味着不再需要手动编写代码来将数据分配到正确的分区,并且不再需要为每个分区手动创建正确的约束:系统会自动执行这些操作。
但是,在PostgreSQL 10中,也就仅仅做了以上一点点的改善。正如Robert Haas在Warsaw’s PGConf.EU大会上发表的演讲一样,由于代码的复杂性和时间限制,在PostgreSQL 10的分区表中缺乏很多功能 。
许多人致力于在PostgreSQL 11中改善这种情况,以下是我重新统计的结果,并将之分为三个方面:
新的分区功能。
分区表上更好的DDL支持。
性能优化。
1、 新的分区功能
在PostgreSQL 10中,分区表可以采用RANGE分区或者LIST分区。这些分区是对于基本的数据库是足够的,但对于许多其它设计,就需要使用在PostgreSQL 11中添加的新的分区模式:HASH分区。许多用户需要它,而且通过Amul Sul的努力已经实现这一目标。下面是一个简单的例子:
CREATE TABLE clients (
client_id INTEGER, name TEXT
) PARTITION BY HASH (client_id);
CREATE TABLE clients_0 PARTITION OF clients
FOR VALUES WITH (MODULUS 3, REMAINDER 0);
CREATE TABLE clients_1 PARTITION OF clients
FOR VALUES WITH (MODULUS 3, REMAINDER 1);
CREATE TABLE clients_2 P
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。