zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

2023-01-23 mysql列存储引擎-聚合多线程并行扫表-VCPackGuardian策略LOCK_LRU-概要设计

mysql引擎多线程存储 设计 策略 2023 01
2023-09-27 14:25:42 时间

摘要:

聚合的多线程处理,现有代码仅保持读取的最后一个pack.在线程切换后将失效.

此前增加了一种lock_all策略, vc_guard不淘汰已读的pack, 持有所有的pack, 等待上层业务释放. 但是lock_all策略没有内存控制机制, 持续的读取pack在超过内存限制后将导致OOM.

2023-01-10 mysql列存储引擎-聚合多线程并行扫表-VCPackGuardian策略LOCK_ALL-概要设计_帝尊悟世的博客-CSDN博客

所以再新增一种LOCK_LRU策略, 以淘汰掉最近最少使用的pack.

本文阐明LOCK_LRU的设计思想.

LOCK_LRU可行的逻辑基础:

pack使用逻辑:

  1. 迭代器顺序向下读取pack, 解析其中内容
  2. 多个线程的迭代器都是向下顺序迭代, 不存在回退
  3. 已读的pack在使用后不会再次使用

线程模型对pack淘汰影响:

  1. 工作组模型
  2. 工作线程顺序向下, 理论上不存在读取其他线程已读的pack
  3. 工作线程内不应该持有其他线程的缓存pack的标识