2023-01-15 stonedb-列的读取及pack的使用方-分析

本文详细分析了stonedb列存储引擎中pack作为最小读取单元的使用,涉及VirtualColumn、VCPackGuardian、TianmuAttr及DataCache等组件。VirtualColumn通过MIIterator迭代器读取pack,VCPackGuardian提供缓存控制,TianmuAttr利用CAS确保并发安全的pack读取,而DataCache则负责全局缓存和磁盘IO操作。此外,讨论了列读取在谓词计算、Join、数据校验、临时表、计算属性列和聚合group by等场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

pack作为mysql列存储引擎中单个列的最小读取单元, 本文分析pack的使用方, 主要在于梳理pack使用方对于列中数据的使用.

列的读取:

对列的读取通过VirtualColumn进行, 而VirtualColumn类又通过VCPackGuardian对读取的pack做了一层的缓存控制. 

VirtualColumn

class VirtualColumn : public VirtualColumnBase {
 public:
  VirtualColumn(core::ColumnType const &col_type, core::MultiIndex *multi_index)
      : VirtualColumnBase(col_type, multi_index), vc_pack_guard_(this) {}
  VirtualColumn(VirtualColumn const &vc) : VirtualColumnBase(vc), vc_pack_guard_(this) {}
  virtual ~VirtualColumn() { vc_pack_guard_.UnlockAll(); }

  void LockSourcePacks(const core::MIIterator &mit) override { vc_pack_guard_.LockPackrow(mit); }
  void UnlockSourcePacks() override { vc_pack_guard_.Unlock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值