Skip to content

Latest commit

 

History

History
94 lines (67 loc) · 9.1 KB

20210605_02.md

File metadata and controls

94 lines (67 loc) · 9.1 KB

重新发现PostgreSQL之美 - 13 brin 时序索引

作者

digoal

日期

2021-06-05

标签

PostgreSQL , 时序索引 , brin


背景

视频回放: https://www.bilibili.com/video/BV1B64y1k72g/
场景:

  • 物联网、游戏、金融、证券、车联网等场景, appendonly的高并发数据写入, 需要高效的按时间区间进行数据统计分析.

挑战:

  • 写入量大, 传统btree索引对写入的RT影响大, 导致性能下降严重.
  • 普通btree索引存储空间占用较大.
  • 普通btree索引采用链表存储, 逻辑上有序, 而物理离散, 加上IO有prefetch, 使得按btree的索引范围查询将占用大量IO通道. 范围查询效率差.

PG解决方案:

  • PG采用堆表存储, 使用时序索引, 每连续的N个数据块存储min,max val. 时序索引只有btree的几百分之一大小. 并且支持快速的范围查询.
  • 其他数据库产品采用聚集存储无法实现时序索引, 因为聚集存储本身必须按PK组织, 在数据块层面已经没有时序顺序了.

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat