ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PostgreSQL时序库分区表优化

2020-12-11 10:33:51  阅读:416  来源: 互联网

标签:PostgreSQL relname 时序 timescaledb 分区表 pg table SELECT size


时序库表优化

前言: 紧缩对于时序数据库是非常重要的。因为时序数据库面对的物联网天天都会产生上亿条数据。在大年夜数据时代的今天数据的重要性是不问可知的,数据就是公司的将来。但如无法对这些时序数据进行很好的治理和紧缩,那将给客户带来异常高的成本压力。


统计时序数据库timescaledb分区表的大小

with tb1 as (
SELECT
table_size.relname 表名,
pg_size_pretty ( pg_relation_size ( relid ) ) 表数据大小,
pg_size_pretty ( pg_indexes_size ( relid ) ) 表总索引大小,
pg_size_pretty ( pg_total_relation_size ( relid ) ) 表总大小,
表行数
FROM
pg_stat_user_tables table_size
LEFT JOIN (
SELECT
relname,
reltuples :: DECIMAL ( 19, 0 ) 表行数
FROM
pg_class r
JOIN pg_namespace n ON ( relnamespace = n.oid )
WHERE
relkind = 'r'
AND n.nspname = '_timescaledb_internal'
) table_num ON table_num.relname = table_size.relname
WHERE
schemaname = '_timescaledb_internal'
ORDER BY
pg_relation_size ( relid ) DESC)

select a.table_name 表名,b.table_name 分区名,c.dates 时间,表数据大小,表总索引大小,表总大小,表行数 from "_timescaledb_catalog".hypertable a
join "_timescaledb_catalog".chunk b on a.id=b.hypertable_id
join (SELECT id,dimension_id,to_char(to_timestamp(range_end),'yyyy-MM-dd') as dates FROM "_timescaledb_catalog"."dimension_slice") c on b.id=c.id
join tb1 on tb1.表名=b.table_name
ORDER BY a.table_name,c.dates;

分区数据总大小

SELECT
pg_size_pretty(sum( pg_relation_size ( relid ) )) 表数据大小,
pg_size_pretty(sum( pg_indexes_size ( relid ) )) 表总索引大小,
pg_size_pretty(sum( pg_total_relation_size ( relid ) )) 表总大小,
sum(表行数) 表行数
FROM
pg_stat_user_tables table_size
LEFT JOIN (
SELECT
relname,
reltuples :: DECIMAL ( 19, 0 ) 表行数
FROM
pg_class r
JOIN pg_namespace n ON ( relnamespace = n.oid )
WHERE
relkind = 'r'
AND n.nspname = '_timescaledb_internal'
) table_num ON table_num.relname = table_size.relname
WHERE
schemaname = '_timescaledb_internal'

时序库分区压缩:

ALTER TABLE hrmw.dw_sup SET (
timescaledb.compress,
timescaledb.compress_segmentby = '表id',
timescaledb.compress_orderby = 'collect_time DESC');

单表压缩

SELECT compress_chunk( '_timescaledb_internal.要压缩的分区表名');

查询压缩后空间状态

SELECT * FROM timescaledb_information.compressed_chunk_stats;

解压缩

SELECT decompress_chunk('_timescaledb_internal.要解压的分区表名');

标签:PostgreSQL,relname,时序,timescaledb,分区表,pg,table,SELECT,size
来源: https://blog.csdn.net/qq_47255712/article/details/111030043

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有