设为首页 加入收藏

TOP

postgreSQL表分区使用方法介绍
2018-03-22 08:49:29 】 浏览:126
Tags:postgreSQL 分区 使用方法 介绍

分区的意思是把逻辑上的一个大表分割成物理上的几块。分区可以提供若干好处:

1 提高查询性能。

原因如下:

① 通过创建分区,索引所占的空间减少,因此可以将高使用率的索引放入内存中,减少因磁盘读写索引造成的开销;

② 可以将表中访问率较高的行存放到单独分区或少数几个分区上,极大提升查询性能;

③ 通过创建分区,在查询或更新时,只需扫描数据所在的那个分区上的数据即可,避免整表扫描及使用索引离散的访问整个表造成的开销,提升性能;

④ 提升更新和删除数据的性能:

ALTER TABLE比操作大量的数据要快的多。它同时还可以避免由于大量DELETE导致的VACUUM超载。那么可以通过直接读取或删除那个分区以获得巨大的性能提升

2 节约存储设备成本

通过创建分区,可以将很少使用的数据存储到慢速存储介质上。

前提条件:表分区的优势通常只有在表可能会变得非常大的情况下才有价值。多大的表会从分区中收益取决于具体的应用,但通常情况下,在表的大小超过了数据库服务器的物理内存大小时需要进行表分区。

3 postgresql的表分区技术目前,PostgreSQL支持通过表继承进行分区。每个分区必须做为单独一个父表的子表进行创建。父表自身通常是空的,它的存在只是为了代表整个数据集。

具体来讲,PostgreSQL可以实现下面形式的分区:

① 范围分区(按行分区)

表被一个或者多个关键字段分区成"范围",这些范围在不同的分区里没有重叠。比如,我们可以为特定的商业对象根据数据范围分区,或者根据标识符范围分区。

②列表分区(按列分区)

明确地列出每个分区里应该出现那些关键字值实现。

4 postgresql的表分区操作流程

要设置一个分区的表,做下面的步骤:

创建"主表",所有分区都从它继承。这个表中没有数据,不要在这个表上定义任何检查约束,除非你希望约束同样也适用于所有分区。同样,在其上定义任何索引或者唯一约束也没有意义。

创建几个"子表",每个都从主表上继承。通常,这些表不会增加任何字段。我们将把子表称作分区,尽管它们就是普通的PostgreSQL表。

给分区表增加约束,定义每个分区允许的健值。5 示例① 创建主表

CREATE TABLE users ( uid int not null primary key, name varchar(20));

② 创建分区表(必须继承上面的主表)

CREATE TABLE users_0 ( check (uid >= 0 and uid< 100) ) INHERITS (users);

CREATE TABLE users_1 ( check (uid >= 100)) INHERITS (users);

③ 在分区表上建立索引,其实这步可以省略的哦

CREATE INDEX users_0_uidindex on users_0(uid);

CREATE INDEX users_1_uidindex on users_1(uid);

④ 创建规则RULE

CREATE RULE users_insert_0 AS

ON INSERT TO users WHERE

(uid >= 0 and uid < 100)

DO INSTEAD

INSERT INTO users_0 VALUES (NEW.uid,NEW.name);

CREATE RULE users_insert_1 AS

ON INSERT TO users WHERE

(uid >= 100)

DO INSTEAD

INSERT INTO users_1 VALUES (NEW.uid,NEW.name); 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据库知识学习之聚合函数,模糊.. 下一篇postgre sql性能优化教程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目