文章目录
-
- 测试案例-建表语句
-
- [定时任务相关 todo](#定时任务相关 todo)
前提是已经安装好timescaledb插件。
查看超表的chunks数据
有人说,我看表里的数据该是多少条还是多少条,没有分块啊?
是这样,超表只是一层外壳,实际上底层是做了chunks的。
语句:
sql
SELECT hypertable_name, chunk_name, range_start, range_end
FROM timescaledb_information.chunks
WHERE hypertable_name = 'system_log_timescale';
结果如图:

当然,直接去timescaledb_information的chunks里查看也是可以的。
timescaledb机制?
从sql上来说,用法基本相同。它之所以快,是从底层做了很多结构性的优化,例如chunks等,所以才会如此快。
额外的结构
一张图就能说明白,原本只有一个schema就是public,使用timescaledb后,自动创建了很多schema这些schema都是用来支持timescaledb的,如图:

测试案例-建表语句
这里建了两个表,一个普通表,一个timescaledb表。
sql
-- 1. 创建普通日志表
CREATE TABLE IF NOT EXISTS system_log_normal (
id SERIAL PRIMARY KEY,
time TIMESTAMPTZ NOT NULL,
level TEXT NOT NULL,
service TEXT NOT NULL,
message TEXT
);
-- 2. 创建TimescaleDB超表
CREATE TABLE IF NOT EXISTS system_log_timescale (
time TIMESTAMPTZ NOT NULL,
level TEXT NOT NULL,
service TEXT NOT NULL,
message TEXT
);
-- 3. 将system_log_timescale转换为超表(需要已安装TimescaleDB扩展)
SELECT create_hypertable('system_log_timescale', 'time',
chunk_time_interval => INTERVAL '1 day',
if_not_exists => TRUE);
-- 4. 创建索引(可选,提升查询性能)
CREATE INDEX IF NOT EXISTS idx_normal_time ON system_log_normal(time);
CREATE INDEX IF NOT EXISTS idx_normal_level ON system_log_normal(level);
CREATE INDEX IF NOT EXISTS idx_timescale_time ON system_log_timescale(time);
CREATE INDEX IF NOT EXISTS idx_timescale_level ON system_log_timescale(level);