PostgreSQL的扩展PG-Storm允许用户自定义扫描方式,将CPU的密集型工作负载转移到GPU处理,从而利用GPU强大的并行执行能力完成数据任务。在处理器内核数量和RAM带宽上,GPU有得天独厚的优势。GPU通常有成百上千的处理器内核,RAM带宽也比CPU大几倍,可以并行处理大量数值计算,因此其运算十分高效。
PG-Storm基本基于两点思想:
在查询优化阶段,PG-Storm检测给定查询是否完全或部分可以在GPU上执行,而后确定该查询是否可转移。如果该查询可以转移,那么PG-Storm则在运行中创建GPU本地二进制文件的源代码,在执行阶段前启动即时编译进程。接下来,PG-Storm将提取行集装载入DMA缓存(一个缓存区的大小默认为15MB),并异步启动DMA传输和GPU内核执行。CUDA平台允许这些任务在后台执行,因此PostgreSQL可以提前运行当前进程。通过GPU加速,这些异步相关切分也隐藏了一般延迟。
装载PG-Strom后,在GPU上运行SQL并不需要专门的指示。它允许允许用户自定义PostgreSQL的扫描方式,而且提供了可以在GPU上运行的扫描/联接逻辑的其他可行方案。如果预计费用合理可行,任务管理器则放入自定义扫描节点,而非内置查询执行逻辑。
下图是PG-Strom和PostgreSQL的基准测试结果,横坐标为表数量,纵坐标为查询执行时间。在此次测试中,所有相关的内部关系都可以一次性地加载到GPU RAM上,预聚集大大减小了CPU需要处理行数。测试代码详情可以查看这里。
从上图中可以看出,PG-Strom比单纯PostgreSQL快很多。
以下是几种可以提高PostgreSQL性能的方法:
更多信息请点击 http://www.gpuworld.cn/article/show/477.html