Igo*_*gor 14 database postgresql stored-procedures plpgsql
在当今,PostgreSQL 提供了大量的过程语言:pl/pgsql,pl/perl等
在用不同语言编写的程序中,速度/内存消耗是否有任何差异?
有人做过任何测试吗?
使用原生pl/pgsql是最正确的选择吗?
使用pl/*语言编写的用户函数的所有参数中,用C++编写并编译成可加载模块的过程有何不同?
正确的选择取决于你将要做什么.
根据我的经验,如果您想要做的事情很容易在pl/pgsql中表达,那么pl/pgsql的开销比pl/perl,pl/python或pl/tcl少.例如,如果您正在进行数据库操作.但是,如果您执行perl擅长的操作,例如为pl/perl支付的开销很快就会回来 - 例如字符串处理.
在这些情况下你必须考虑的一件事是像perl和python这样的"更大"的语言比pl/pgsql具有更高的启动成本 - 但是通过使用持久连接可以很容易地减轻这种情况.
用C语言编写的函数几乎肯定会更快 - 如果你能编写擅长使用少量内存的代码,它们将使用更少的内存.然而,听到的写作和维护他们通常是一个很多比的PL糟糕-特别是在构建和解构的元组比你想象中的任何一种复杂功能会占用大量的更多的代码.
由于JVM开销,我发现唯一的PL风格语言比其他语言明显慢于pl/java.但我相信你可以找到一些问题更快的情况.
如果你想确定你的场景中最有效的是什么,你需要用每种语言开发一些函数,然后对它们进行基准测试.但是它可能并不重要,你可以从发展的角度而不是表现角度选择最适合任务的语言.