PostgreSQL中不同语言的性能/兼容性有何不同?

时间:2010-12-25 23:59:22

标签: database postgresql stored-procedures plpgsql

现在PostgreSQL offers plenty of procedural languages:pl / pgsql,pl / perl等

用不同语言编写的程序中的速度/内存消耗是否有任何差异?

有人做过任何测试吗?

使用原生pl / pgsql是最正确的选择吗?

用C ++编写并编译成可加载模块的过程如何在所有参数w.r.t中有所不同。用pl / *语言编写的用户函数?

1 个答案:

答案 0 :(得分:9)

正确的选择取决于你将要做什么。

根据我的经验,pl / pgsql的开销比pl / perl,pl / python或pl / tcl少,如果你想要做的事情很容易在pl / pgsql中表达。例如,如果您正在进行数据库操作。但是,如果您执行perl擅长的操作,例如pl / perl支付的开销很快就会回来 - 例如字符串处理。

在这些情况下,您必须考虑的一件事是像perl和python这样的“更大”的语言比pl / pgsql具有更高的启动成本 - 但是使用持久连接可以轻松减轻这种情况。

用C语言编写的函数几乎肯定会更快 - 如果你能编写擅长使用少量内存的代码,它们将使用更少的内存。然而,无意中编写和维护它们通常比PL更糟糕 - 尤其是构造和解构元组会比你在任何复杂函数中想到的代码多得多。

由于JVM开销,我发现的唯一PL风格语言比其他语言明显慢于pl / java。但我相信你可以找到一些问题,它可以解决一些问题。

如果您想确定 场景中最有效的内容,您需要使用每种语言开发几个函数,然后对这些函数进行基准测试。但是,它有可能并不重要,你可以从发展的角度而不是表现角色中选择最适合任务的语言。