postgresql timescaladb时序数据库使用入门

devtools/2025/2/13 16:47:20/

postgresql_timescaladb_0">postgresql timescaladb数据库>时序数据库使用入门

git地址,官方文档,官方文档-cn
本文基于timescaladb 2.17.2版本,在低版本,相关函数和功能可能有差别。

timescaladb_4">timescaladb优点

  • 建立在PostgreSQL之上,融入pg生态,可以使用pg的全部特性。
  • 压缩。针对海量时序数据,高压缩率节省空间。不需要特殊的存储格式,列存压缩,并提供查询加速。
  • 持续聚合。在按时间颗粒度统计场景,时序数据通常增长很快,传统方案定时统计时扫描全表会很慢。提供了自动累加方案替代,持续跟踪数据集,视图方式呈现。
  • 丰富的时间窗口函数。

timescaladb_10">timescaladb超表使用示例

-- 使用timescaledb扩展
CREATE EXTENSION IF NOT EXISTS timescaledb;-- 先创建普通表
CREATE TABLE iot_device_log (log_id BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,identity VARCHAR(64) NOT NULL,create_time TIMESTAMP NOT NULL
);-- 创建主键,必须带时间,且时间字段定义必须非空。时序表一般以时间为主键就足够了,若业务上定义有非时间主键,则使用复合主键关联时间序列
ALTER TABLE iot_device_log ADD PRIMARY KEY(log_id, create_time);-- 将普通表转换为超表,并设置区块划分策略。这里设置每6个小时分一个块
-- 原始表的实际数据,存储在_timescaledb_internal模式的表下,并按分块命名xxx_chunk。涉及数据同步时要注意
SELECT create_hypertable('iot_device_log', by_range('create_time', INTERVAL '6 hours'));-- 创建数据压缩分段列。建议按业务特性选择分段的列,如该列可能被常用在group by
ALTER TABLE iot_device_log SET (timescaledb.compress,timescaledb.compress_segmentby = 'identity',timescaledb.compress_orderby='create_time DESC'
);-- 创建数据压缩策略。这里设置每6小时执行一次压缩
SELECT add_compression_policy('iot_device_log', INTERVAL '6 hours');-- 创建数据保留策略。保留xx内的数据,超过xx的数据块会被删除。这里设置保留1年内的数据
SELECT add_retention_policy('iot_device_log', INTERVAL '1 year');

timescaladb_43">timescaladb常用运维

-- 查看各块和压缩情况
SELECT * FROM timescaledb_information.chunks;-- 查看压缩效果
SELECT pg_size_pretty(pg_database_size('db_name')) as db_size,pg_size_pretty(before_compression_total_bytes) as before,pg_size_pretty(after_compression_total_bytes) as after,now()FROM hypertable_compression_stats('your_hypertable_name');-- 查看数据库当前连接情况SELECT * FROM  pg_stat_activity where datname = 'db_name';-- 调整超表已经存在的区块策略
SELECT set_chunk_time_interval('iot_device_log', INTERVAL '6 hours');-- 删除指定超表的数据保留策略
SELECT remove_retention_policy('iot_device_log');-- 重启压缩。压缩任务停止时尝试使用
-- SELECT _timescaledb_functions.start_background_workers();

http://www.ppmy.cn/devtools/158540.html

相关文章

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…

pytorch 模型的参数查看函数介绍

在 PyTorch 中,查看和访问模型的参数是非常常见的操作。以下是一些常用的函数和方法,用于查看和操作 PyTorch 模型的参数。 1. model.parameters() 该方法返回一个生成器,它生成模型的所有可训练参数。这些参数通常是模型中的权重和偏置。 示例: import torch import t…

京东商品评论数据采集并可视化

2 DrissionPage 在网页自动化操作场景中,使用 DrissionPage 实现一次登录后可在后续操作中复用登录状态,具有显著优势,下面详细介绍相关好处: 1. 节省时间与资源 减少登录操作时间:很多网站的登录流程可能涉及验证码输入、短信验证等步骤,这些操作不仅繁琐,还会消耗大…

CSDN成长日记(持续更新)

文章目录 概要2025-1-14日开始2025-2-12日创作者等级达到Lv3 概要 自己CSDN等级成长记录,目标创作者等级达到Lv4 2025-1-14日开始 *开始等级 2025-1-14日:发现原力值太久不登录清空了,发布博客第二天之后恢复 原力等级:Lv2 35分 …

BUU34 [BSidesCF 2020]Had a bad day1 【php://filter】

题目&#xff1a; 发现url有点奇怪 尝试读取一下flag.php&#xff0c;出现错误了 感觉有希望&#xff0c;一看url中还有个index.php&#xff0c;那就试试读取源码吧 出现错误&#xff0c;原来是index.php.php重合了&#xff0c;把php去掉 &#xff0c;出现了 <?php$file…

通过C++编程语言实现“数据结构”课程中的链表

通过C++实现数据结构课程中的链表。首先,我需要确定链表的基本结构。链表有单链表和双向链表之分,可能还需要循环链表。但最常见的是单链表,先从单链表开始吧。 单链表的每个节点应该包含数据和指向下一个节点的指针。所以结构体或者类来定义节点,比如struct Node,里面有i…

Linux命名管道与共享内存

命名管道与共享内存 命名管道介绍和基本使用 理解了匿名管道后&#xff0c;命名管道的理解就会变得容易。在前面使用匿名管道时可以发现&#xff0c;之所以可以匿名是因为由父进程创建&#xff0c;子进程拷贝所以子进程和父进程都可以看到这个管道。但是如果对于任意两个进程…

【C++指南】解锁C++ STL:从入门到进阶的技术之旅

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 一、STL 是什么 二、STL 的核心组件 2.1 容器&#xff08;Containers&#xff09; 2.2 算法&…