梧桐数据数据库查询优化(二)
查询使用内存量
一个查询启动的每一个 virtual segment 都有固定的内
存额度,plantree 中所有的操作符共享该额度。操作符分
为 memory intensive 和 non memory intensive 两类,对
于每一个 non memory intensive 的操作符默认分配 100KB
内存,剩余的内存量由 memory intensive 的操作符均分。
对于 memory intensive 的操作符如果没有足够的内存,该
操作会使用溢出文件(spill files)。相比于完全在内存中
执行的操作,磁盘溢出文件会慢得多。
•
memory intensive 的操作符包括 Material, Hash,
Sort,Window, ShareInputScan, BitmapIndexScan,
FunctionScan 和 TableFunctionScan。对于某些 Agg 操作
如果是 hash 策略或者包含 DQA 及排序操作,以及包含
function call 的 Result 操作也属于这个类别。
•
statement memory 的默认值为 256MB,即每一个
virtual segment 内存额度
•
hawq_rm_memory_limit_perseg 限制一个物理
segment 执行允许的最大内存量,默认为 64GB
•
当 VC 属 性 enforce_nvseg 非 0 时 , 可 以 通 过
enforce_memory_pervseg 更改每一个 vseg 的内存额度
•
可以通过资源队列配置 vseg 的内存额度,该信息保
评论