文档章节

PostgreSQL 调用 Rust 函数内存耗用研究

helloclia
 helloclia
发布于 11/21 17:05
字数 515
阅读 28
收藏 0

开始看 PostgreSQL 的文档,以为对于那些 .so 形式的二进制扩展函数,比如用 C 语言编写的、Rust 编写的等,PG 会把它们装载到每个连接的内存里去。

因为 Rust 现在编译出来的二进制文件还比较大,在 Linux 系统上一个函数的 .so 文件都有 3M 左右,所以有点担心当数据库连接达到一两千个时,每个连接里又调了N多这样的函数,会不会造成内存溢出?

干脆就来测试一下看好了。

后来经过测试,发现情况不是这么回事。

客户端并发创建一千个数据库连接,每个连接里分别测试以下几种情况:

  1. 执行最简单的 SELECT 1 查询;
  2. 执行其他简单的 SQL 查询,结果数量为空的;
  3. 执行单个的 Rust 函数 pgxr_example_one
  4. 执行5个 Rust 函数 pgxr_example_one_1/2/3/4/5,每个函数由一个 .so 文件提供;
  5. 执行10个 Rust 函数,包括数据查询等,每个函数由一个 .so 文件提供;
dbHelper.Query(`select pgxr_example_one(1)`)
dbHelper.Query(`select pgxr_example_one_1(1)`)
dbHelper.Query(`select pgxr_example_one_2(1)`)
dbHelper.Query(`select pgxr_example_one_3(1)`)
dbHelper.Query(`select pgxr_example_one_4(1)`)
dbHelper.Query(`select pgxr_example_one_5(1)`)
dbHelper.Query(`select rust_query_row_by_pk('public.test2', '1')`)
dbHelper.Query(`select rust_query_rows_by_fk('public.test2', 'class', '1')`)
dbHelper.Query(`select test_get_table_columns()`)
dbHelper.Query(`select test_sleep_3_seconds(3)`)

发现前三种情况内存增加得差不多,都是增加 1.9G 左右, 第三种情况比第一种情况内存增加 20 多 M,第四种情况比第一种情况内存增加 100M 左右,第五种情况比第一种情况内存增加 300M 左右。

从此,对于 Rust 函数的内存耗用还是比较放心的了!

© 著作权归作者所有

共有 人打赏支持
helloclia
粉丝 3
博文 7
码字总数 2849
作品 1
长沙
私信 提问
【开源访谈】瀚高王刚:PostgreSQL 的发展将会越来越好

PostgreSQL 是一个功能强大,开源对象关系型数据库系统,拥有超过 15 年的持续开发和经验证的体系结构,赢得了良好的声誉。关于 PostgreSQL 的学习有哪些要注意的事项?与其他数据库相比,P...

达尔文
2017/08/07
2.7K
13
PostgreSQL中的XLOG(一)基础概念和初始化

写在前面: 打算花点时间好好的研究一下WAL(Write-Ahead Logging),在关系型数据库中WAL是必不可少也绕不过去的知识,数据库依旧是PostgreSQL,内容可能会划分为: 数据库版本为PG 10.3 https...

RDBMS原理分析
04/28
0
0
PostgreSQL 共享缓存代码分析交流讲座

PostgreSQL 共享缓存代码分析交流讲座 方式:在线交流,使用QQ群语音。 时间:2013年12月17日晚8点开始。 交流之前,如果有如下准备更佳: 1、PostgreSQL v9.3.2源代码(或者9.0及更高版本,...

有理想的猪
2013/12/12
253
1
PostgreSQL 动态更新 C 语言函数

PostgreSQL 对于 C 语言编写的函数(包括其他与 C 语言兼容的语言,如 C++、Rust 等),是动态装载的,用 创建完函数后,并不会立即装载,而是有连接建立之后,客户端第一次调用时才会进行装...

helloclia
11/07
0
0
PostgreSQL 11 preview - pgbench 压测软件增强

标签 PostgreSQL , pgbench , 增强 , 11 背景 PostgreSQL 11 pgbench压测软件增强。 详细用法参考, pgbench非常强大,且性能非常好。 https://www.postgresql.org/docs/devel/static/pgbench...

德哥
07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部