pgxr

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

给你一囗甜甜゛ 提交于 2019-12-09 12:39:50
开始看 PostgreSQL 的文档,以为对于那些 .so 形式的二进制扩展函数,比如用 C 语言编写的、Rust 编写的等,PG 会把它们装载到每个连接的内存里去。 因为 Rust 现在编译出来的二进制文件还比较大,在 Linux 系统上一个函数的 .so 文件都有 3M 左右,所以有点担心当数据库连接达到一两千个时,每个连接里又调了N多这样的函数,会不会造成内存溢出? 干脆就来测试一下看好了。 后来经过测试,发现情况不是这么回事。 客户端并发创建一千个数据库连接,每个连接里分别测试以下几种情况: 执行最简单的 SELECT 1 查询; 执行其他简单的 SQL 查询,结果数量为空的; 执行单个的 Rust 函数 pgxr_example_one ; 执行5个 Rust 函数 pgxr_example_one_1/2/3/4/5 ,每个函数由一个 .so 文件提供; 执行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