释放PostgreSQL的潜力:简易初学者的C扩展开发!第2部分
#database #c #apacheage

在上一部分中,我们学会了如何为我们的PostgreSQL数据库开发简单的C扩展名。但是现在出现了这个问题,为什么甚至要麻烦扩展,尤其是当Postgres具有某些内置功能或操作员可以执行与我们相同的任务时。

好吧,您可能会想到这样做的原因之一是出于绩效原因。允许我详细说明。

在第1部分中,我们创建了一个减法功能,该函数从第一个ARG中减去了第二个参数。足够简单!

,但我们本可以通过另外两种方式做到这一点。一种只是使用基本的SQL-运算符,另一个仅使用在我们的数据库内制作PLPGSQL函数,该功能为我们完成工作。让我们看看两种方法。

PLPGSQL功能

在我们的PostgreSQL数据库中,我们可以运行此代码

CREATE FUNCTION submepl(a integer, b integer)
 RETURNS integer
as $$ 
BEGIN
  return a-b;
END;
$$ LANGUAGE plpgsql;

这将创建一个函数,该函数与我们的C函数所做的完全相同,即减去两个数字。

SQL操作员

这是不言自明的,我们只是使用 - 运算符减去数字。例如
SELECT 10 - 5;

基准

现在让我们考虑我们的功能与SQL运算符和PL功能调用方式。为了跟踪时间,我们将在Linux中使用时间函数并运行每种方法 100万次

不必说,结果如下:

Image description

操作员和C功能几乎在执行中几乎相同。另一方面,PL功能花了更多时间:

Image description

这仅用于减去简单的基本功能。这只会随着更复杂的功能而增加。

简而言之,如果您的需求是您的需求,那么扩展是您的朋友!