TimescaleDB #

文档结构 #

本指南按以下结构组织,适合初学者按顺序学习:

1. 基础入门 #

主题 描述 文档链接
TimescaleDB简介 TimescaleDB的发展历史、特点、应用场景 timescaledb-intro.md
安装与配置 Docker、Linux、macOS、Windows安装配置 timescaledb-install.md
SQL基础语法 PostgreSQL SQL语法基础、时序扩展 sql-basics.md
数据类型 时间类型、数值类型、数组、JSON data-types.md

2. 核心概念 #

主题 描述 文档链接
超表 Hypertable概念、创建、管理 hypertable.md
数据分片 Chunk概念、自动分区、空间分区 chunk.md
时间分区 时间维度分区策略、分区管理 partitioning.md

3. 数据操作 #

主题 描述 文档链接
数据插入 INSERT语句、批量插入、COPY导入 insert.md
数据查询 SELECT语句、时间查询、窗口函数 query.md
数据更新 UPDATE语句、条件更新、批量更新 update.md
数据删除 DELETE语句、自动删除、保留策略 delete.md

4. 高级特性 #

主题 描述 文档链接
连续聚合 Continuous Aggregates概念、创建、刷新 continuous-aggregates.md
数据压缩 压缩策略、压缩算法、性能优化 compression.md
保留策略 数据保留、自动清理、生命周期管理 retention-policy.md
超函数 Hyperfunctions函数库、时序分析 hyperfunctions.md

5. 管理与运维 #

主题 描述 文档链接
备份与恢复 pg_dump、pg_restore、时间点恢复 backup-restore.md
性能优化 查询优化、索引优化、配置调优 performance-tuning.md
监控运维 健康检查、日志管理、性能监控 monitoring.md

学习路线 #

text
入门阶段
├── 理解时序数据概念
├── 安装部署TimescaleDB
├── 学习PostgreSQL SQL基础
└── 掌握数据类型

基础阶段
├── 理解超表概念
├── 创建和管理超表
├── 数据CRUD操作
└── 基础查询操作

进阶阶段
├── 连续聚合使用
├── 数据压缩配置
├── 保留策略设置
└── 超函数应用

高级阶段
├── 性能优化
├── 监控运维
├── 高可用架构
└── 最佳实践

适用人群 #

人群 建议
初学者 从基础入门开始,按顺序学习
PostgreSQL用户 重点学习时序特性和超表
后端开发者 重点学习数据操作和查询优化
运维工程师 重点学习监控运维和性能优化

学习建议 #

  1. PostgreSQL基础:TimescaleDB基于PostgreSQL,先掌握PostgreSQL基础
  2. 理解时序数据:了解时序数据的特点和查询模式
  3. 动手实践:安装TimescaleDB,多写SQL语句
  4. 性能优化:学习超表设计和查询优化技巧
  5. 持续学习:关注新版本特性

版本说明 #

本教程基于 TimescaleDB 2.x 版本编写,支持 PostgreSQL 13+ 版本。

核心概念速查 #

text
TimescaleDB核心概念:

数据模型
├── Hypertable(超表)- 时序数据主表
├── Chunk(分片)- 自动分区数据块
├── Time Column(时间列)- 必需的时间维度
└── Space Partition(空间分区)- 可选的分区维度

核心特性
├── 自动分区 - 按时间自动创建分片
├── 连续聚合 - 实时物化视图
├── 压缩 - 列式存储压缩
├── 保留策略 - 自动数据清理
└── 超函数 - 时序分析函数

架构优势
├── PostgreSQL兼容 - 完全兼容PostgreSQL
├── 水平扩展 - 支持多节点部署
├── 高性能 - 时序查询优化
└── 生态丰富 - PostgreSQL生态

快速开始 #

bash
# Docker快速启动
docker run -d --name timescaledb \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=password \
    timescale/timescaledb:latest-pg15

# 连接数据库
psql -h localhost -U postgres

# 创建扩展
CREATE EXTENSION IF NOT EXISTS timescaledb;

-- 创建超表
CREATE TABLE sensor_data (
    time        TIMESTAMPTZ NOT NULL,
    sensor_id   INTEGER,
    temperature DOUBLE PRECISION,
    humidity    DOUBLE PRECISION
);

SELECT create_hypertable('sensor_data', 'time');

-- 插入数据
INSERT INTO sensor_data VALUES
    (NOW(), 1, 25.5, 60.0),
    (NOW() - INTERVAL '1 hour', 1, 24.8, 58.5);

-- 查询数据
SELECT * FROM sensor_data
WHERE time > NOW() - INTERVAL '24 hours';

开始你的TimescaleDB学习之旅吧!

最后更新:2026-03-27