开发者社区> clia> 正文

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

简介:
+关注继续查看

开始看 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 函数的内存耗用还是比较放心的了!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南(3)
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南
25 0
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南(2)
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南
15 0
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南(1)
为内存塞不下Transformer犯愁?OpenAI应用AI研究负责人写了份指南
13 0
postgresql使用UUID函数
postgresql、sql、UUID
27 0
【Rust 中级教程】 07 内存
【Rust 中级教程】 07 内存
125 0
PostgreSQL 条件判断函数
PostgreSQL 条件判断函数
382 0
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
130 0
PostgreSQL 符号函数SIGN(x)
PostgreSQL 符号函数SIGN(x)
212 0
hive与postgresql 之爆炸函数
hive与postgresql 之爆炸函数
241 0
如何在生产环境排查 Rust 内存占用过高问题"
虽然 Rust 已经帮我们避免掉了内存泄漏的问题,但是内存占用过高的问题,我想不少在生产长期运行的程序还是会有非常大的概率出现的。
499 0
+关注
clia
全栈 架构师 程序 建造师 训练师
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
云服务器ECS内存增强型实例re6全新发布
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像