〇一之父的技术笔记

时间序列数据按年分区存 Parquet

2026-08-12

几千万行的分钟级时间序列,一开始放 SQLite,单表越来越大之后追加一天的数据要等好几秒,整表 VACUUM 更是要命。换成按年分区的 Parquet 后,同样的数据体积只有原来的八分之一,追加只改当年那一个文件。

目录结构

db/
└── <symbol>/
    └── 1min/
        ├── 2024.parquet
        ├── 2025.parquet
        └── 2026.parquet

写入时的两个原则

读取

pandas.read_parquet 配合 columns= 只取要用的列,加上 pyarrow 的谓词下推按日期过滤,常见的"取某个月"查询在几十毫秒内返回。

什么时候别这么做

需要频繁单行更新、或者多进程并发写同一分区的场景,Parquet 不合适——它是追加友好、更新不友好的格式。那种需求还是交给数据库。