> 文章列表 > 2023-04-17 myql列存储-X100引擎-聚合-思考

2023-04-17 myql列存储-X100引擎-聚合-思考

2023-04-17 myql列存储-X100引擎-聚合-思考

摘要:

最近在分析将X100引擎的处理做更为精细化的处理, 一个非常经典的场景以及算子便是聚合的处理。

本文对聚合要面临的问题做思考. 其中将视角切换为将mysql列存储的聚合做X100引擎的处理。

X100引擎:

2023-04-13 MonetDB/X100: Hyper-Pipelining Query Execution_禅定悟世的博客-CSDN博客

mysql列存储的聚合处理:

面临问题:

  1. 对列数据的访问方式导致难以在多线程切片时做到线程安全
  2. 聚合使用的hash表的key, 直接数据拷贝grouping的列
  3. 采用了经典的火山模型

导致的困境:

  1. 列数据横向切片的困难, 导致了无法做到线程并行
  2. 突入表现在
    1. 线程安全, 临界区界定模糊, 导致在访问数据时的错误
    2. 一些数据类型在访问时候计算, 比如decimal, 导致多个线程同时修改同一份数据
  3. 聚合的hahs表使用grouping列的值当作key, 最突出的问题就是导致了性能和内存占用
  4. 火山模型则导致了向量化的问题
    1. 火山模型的iterator导致了数据的访问非向量化
    2. 不利于CPU的cache
    3. 在火山模型的访问的过程中生成聚合hash导致多流水线分支预测的生效

数据存储的方式: