摘要:
聚合的多线程处理,现有代码仅保持读取的最后一个pack.在线程切换后将失效.
此前增加了一种lock_all策略, vc_guard不淘汰已读的pack, 持有所有的pack, 等待上层业务释放. 但是lock_all策略没有内存控制机制, 持续的读取pack在超过内存限制后将导致OOM.
2023-01-10 mysql列存储引擎-聚合多线程并行扫表-VCPackGuardian策略LOCK_ALL-概要设计_帝尊悟世的博客-优快云博客
所以再新增一种LOCK_LRU策略, 以淘汰掉最近最少使用的pack.
本文阐明LOCK_LRU的设计思想.
LOCK_LRU可行的逻辑基础:
pack使用逻辑:
- 迭代器顺序向下读取pack, 解析其中内容
- 多个线程的迭代器都是向下顺序迭代, 不存在回退
- 已读的pack在使用后不会再次使用<