zoukankan      html  css  js  c++  java
  • PostgreSQL改造非分区表为分区表

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

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

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

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

    2、创建分区

    每个分区包含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、迁移数据

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

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

    4、 查询禁用主表

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

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

    5、新建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
    
    
  • 相关阅读:
    济南学习D1T5__HEAP
    快速计算C(n,r)
    快速阶乘算法
    济南学习D2T1__折纸带
    济南学习D3T1__线性筛和阶乘质因数分解
    栈与队列:栈的链式储存结构
    线性表应用:建立一个随机数 链表获得中间结点
    栈与队列应用:二进制转十进制 八进制 十六进制(栈)
    线性表:单链表基本操作代码
    线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)
  • 原文地址:https://www.cnblogs.com/lottu/p/13957798.html
Copyright © 2011-2022 走看看