分区表对导入操作的性能影响
在GaussDB内核实现中,分区表数据的插入的处理过程相比非分区表增加分区路由部分的开销,因从整体上分区表场景的数据插入开销主要看成:(1)heap-insert基表插入、(2)partition-routing分区路由两个部分,其中heap基表插入解决tuple入库对应heap表的问题并且该部分普通表和分区表共用,而分区路由部分解决分区路由即tuple元组插入到对应partRel的问题。
- 分区表基表Heap表插入:
- 算子底噪优化
- heap数据插入
- 索引插入build优化(带索引)
- 分区表分区路由:
- 路由查找算法逻辑优化
- 路由底噪优化,包括分区表partRel句柄开启、新增的函数调用逻辑开销
分区路由的性能主要通过大数据量的单条INSERT语句体现,UPDATE场景内部包含了查找对应要更新的元组进行DELETE操作然后再进行INSERT,因此不如单条INSERT语句场景直接。
- x86服务器场景下分区表相比普通表的导入性能会略低10%以内。
- ARM服务器场景下为20%,造成x86和ARM指向性能略微差异的主要原因是分区路由为in-memory计算强化场景,主流x86体系CPU在单核指令处理能力上略优于arm。