我的目标是实现可用于将数据块从数据库复制到C函数的最高性能,以便作为查询结果进行处理和返回。
我是PostgreSQL的新手,我目前正在研究移动数据的可能方法。 具体来说,我正在寻找与PostgreSQL特别相关的细微差别或关键词来快速移动大数据。
注意: 我的最终目标是速度,所以我愿意接受我提出的确切问题之外的答案,只要它获得大的性能结果。 例如,我遇到了COPY关键字(仅限PostgreSQL),它可以快速地将数据从表格移动到文件中; 反之亦然。 我试图远离数据库外部的处理,但如果它提供的性能改进超出了外部处理的明显缺点,那么就这样吧。
听起来您可能希望使用服务器编程接口(SPI)将存储过程实现为在PostgreSQL后端内运行的C语言函数 。
使用SPI_connect
设置SPI。
现在SPI_prepare_cursor
一个查询,然后SPI_cursor_open
它。 SPI_cursor_fetch
来自它的行和SPI_cursor_close
它完成后。 请注意, SPI_cursor_fetch
允许您获取批量行。
SPI_finish
完成后清理。
您可以在生成结果行时将结果行返回到tuplestore,从而无需在内存中构建整个表。 请参阅PostgreSQL源代码中任何set-returns函数中的示例。 您可能还想查看SPI_returntuple
辅助函数。
另请参见: C语言函数和扩展SQL 。
如果感兴趣的是最大速度,您的客户端可能希望通过libpqtypes使用libpq二进制协议,以便它以最小的开销接收服务器端SPI使用过程产生的数据。
以上就是c/c++开发分享在使用C函数扩展PostgreSQL时实现高性能事务相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560098.html