资讯专栏INFORMATION COLUMN

PostgreSQL 自动分区分表维护管理插件 pathman 基础使用

MASAILA / 2053人阅读

摘要:使用数据库会自动的根据从某几个片中读取数据。更加详细的请参考德哥文章

官方地址:https://github.com/postgrespr...
关于pathman的原理和优化问题,请移步至https://yq.aliyun.com/article...

检查环境变量
如果直接执行psql命令提示command not found则执行下面的命令设置环境变量

root@host# PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin # 就是postgresql的安装路径
root@host# export PATH

主要是PG_CONFIG

安装

root@host# tar xf pg_pathman.tar.gz
root@host# cd pg_pathman
root@host# make USE_PGXS=1
root@host# make install

安装插件到数据库

# psql -U 用户名
     -h 主机localhost
     -d 数据库名称
     -p 端口5432
     -c "create extension pg_pathman"

创建主表

# psql -U 用户名
     -h 主机localhost
     -d 数据库名称
     -p 端口5432
     -c "create table test (id serial8 primary key, area_id bigint not null, name varchar(100) not null, age integer not null default 0)"

创建一个地区表,area_id为地区id

创建分区

创建hash分区

# psql -U 用户名
     -h 主机localhost
     -d 数据库名称
     -p 端口5432
     -c "select create_hash_partitions(test,"area_id",10,false)"

参数解析:create_hash_partitions(表名,"分区字段",分几个区,是否立即开始转移数据)

创建range分区

# psql -U 用户名
     -h 主机localhost
     -d 数据库名称
     -p 端口5432
     -c "select create_range_partitions(test,"age",0,100,1,false)"

参数解析:select create_range_partitions(表名,分区字段,从几开始,到几结束,数据间隔,每间隔X创建一个表,是否立即迁移数据)
range分区还有一种方法按照时间比如:

select create_range_partitions(表名,分区字段,
    从什么时间开始如"YYYY-mm-dd HH:ii:ss"::timestamp,
    interval "1 month",
    总共创建几个表,
    是否立即迁移数据
)

同一个表hash和range只能创建一个规则的分区

分区命令执行完毕后能立刻看到已经创建完成了N个子表,但是由于刚才设置是否立即迁移数据都是false,所以还需要执行select partition_table_concurrently(表名,每次处理几条数据,失败尝试等待秒数)开始迁移数据

迁移完成后,执行select count(*) from only test可以看到已经没有任何数据了(注意only)

 count 
-------
 0
(1 row)

使用SQLselect * from test where area_id = 1 order by id asc limit 10数据库会自动的根据area_id从某一个分片中读取数据。
使用SQLselect * from test where age > 10 order by id asc limit 10数据库会自动的根据age从某几个片中读取数据。

更加详细的请参考 德哥文章:https://yq.aliyun.com/article...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39004.html

相关文章

  • 什么是最适合云数据库的架构设计?

    摘要:在技术探索中,选择了更适合云数据库场景的架构和引擎设计。目前,巨杉数据库付费企业级客户与社区用户总数超过家,并已在超过家强级别的银行保险证券等大型金融机构核心生产业务上线。这一整体架构设计相信是云数据发展的主流架构设计。 分布式数据库技术发展多年,但是在应用、业务的驱动下,分布式数据库的架构一直在不断发展和演进。 开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打...

    whlong 评论0 收藏0
  • postgresql分区

    摘要:创建自动分区采用两种方式采用视图分区方式采用直接分区方式创建表创建索引采用视图分区方式建立视图定义分表保证分区后的可以自增按照时间进行分区分表触发器定义更新更新触发器直接分区方式分表触发器两种方式比较视图分区所有操作都是对视图的操 创建自动分区采用两种方式 采用视图分区方式 采用直接分区方式 创建表 CREATE TABLE IF NOT EXISTS public.sales...

    EdwardUp 评论0 收藏0
  • 大佬为你揭秘微信支付的系统架构,你想知道的都在这里了

    摘要:年之前,微信支付业务快速发展,需要一款数据库能够安全高效的支撑微信支付商户系统核心业务,这个重任落在了腾讯数据库团队自研上。由于是用于微信支付的核心数据库,腾讯被定位为安全高效,稳定,可靠的数据库集群。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由李跃森发表于云+社区专栏李跃森,腾讯云PostgreSQL首席架构师,腾讯数据库团队架构师,负责微信支付商户系统核心数...

    Terry_Tai 评论0 收藏0

发表评论

0条评论

MASAILA

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<