摘要:
在多线程并行处理对元组的访问时,必然要对元组的读取有深刻的理解,从而保证在做架构设计时能正确的处理。
这里有个误区, 理解现有代码的设计, 其目的并非是要顺着现有代码的设计思想走下去,而是要明白,按照新的设计思路做下去,所做出的改动对原有设计的破坏程度。要小心破窗效应。
对pack读取的记录在 2022-09-02 mysql/stonedb-读取Pack数据流程记录_帝尊悟世的博客-优快云博客
本文分析在理解读取pack所作的处理时的思路。
读取pack的模块设计分析:
设计和架构不能脱离目的而存在,这个目的的直观表现便是对需求的分析,需求分析确定了功能性和非功能性的边界,这是设计所要达到的目标。
功能性需求:
- 向量化读取磁盘io, 也就是一次读取一个pack长度的数据。
- 对比innodb的按页读取, 目的在于减少磁盘IO, 更快的加载更多的数据
- 同样采取该策略的数据库可以参考clickhouse
- 存在缓存机制, 避免每一次获取pack都从磁盘读取