PostgreSQL改造非分区表为分区表

novel开发重建visit表;没考虑之前的visit表是分区表;过了几天;平台数据迟迟未出。visit表一天大概3-4G的量级。

1|01、获取非分区表的大小,以及最开始的数据

这个好确定分区从那个时间开始

--获取大小 select pg_size_pretty(pg_relation_size('tbl_novel_visit_new_log')); --获取第一条数据 select * from tbl_novel_visit_new_log limit 1;

2|02、创建分区

每个分区包含1天的跨度数据;且不迁移数据

select                                              create_range_partitions('tbl_novel_visit_new_log'::regclass,                         'reg_time',                                                 '2020-11-01 00:00:00'::timestamp,                           interval '1 day',                                         30,                                                      false) ;

3|03、迁移数据

这个过程是漫长;可以采用非阻塞迁移

select partition_table_concurrently('tbl_novel_visit_new_log'::regclass, 10000, 1.0); 查看进度 select * from pathman_concurrent_part_tasks;

4|04、 查询禁用主表

数据迁移完成后,禁用主表

select set_enable_parent('tbl_novel_visit_new_log'::regclass, false);

5|05、新建append_partition脚本示例

# 功能:1. 处理PostgreSQL分区表增加分区;2. 将时间最早的分区数据导出;保持数据库大小的平稳。 source /home/postgres/.bashrc unload_dir=/data1/novel/p_visit/ unload_date=`date +%Y%m%d` cd $unload_dir if [ ! -d "$unload_date" ];then mkdir $unload_date fi cd $unload_date psql -At -p 15432 adsas adsas -c 'select * from pathman_partition_list order by range_min limit 1' > pg_unload_conf table_name=`awk -F"|" '{print $2}' pg_unload_conf` echo "copy adsas.$table_name to '${unload_dir}${unload_date}/${table_name}' DELIMITER '|'" > pg_unload.sql # unload data psql -p 15432 adsas postgres -f pg_unload.sql # 删除分区 echo "select drop_range_partition('${table_name}',true)" > drop_partition.sql psql -p 15432 adsas adsas -f drop_partition.sql # 添加分区 echo "select append_range_partition('tbl_novel_visit_log'::regclass)" > add_parition.sql psql -p 15432 adsas adsas -f add_parition.sql

__EOF__

本文作者lottu
本文链接https://www.cnblogs.com/lottu/p/13957798.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   lottu  阅读(1088)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示