GCC for openEuler 数据库性能优化实践

GCC for openEuler是基于开源GCC开发的编译器工具链(包含编译器,汇编器,链接器),在openEuler社区开源发布,并通过鲲鹏社区免费提供二进制包,支持aarch64处理器架构。

关键特性

  • 支持鲲鹏微架构芯片及指令优化

  • 通过软硬协同提供相较开源GCC更高的性能

  • 高性能计算典型应用性能深度优化

  • 支持自动反馈优化,实现数据库等场景性能倍增

测试环境

CPU: 鲲鹏 920 128 core

内存:500G

硬盘:500G SSD

操作系统:openEuler 20.03

测试数据库:postgreSQL 13.6 + Yukon 1.0.1

测试工具:pgbench

测试案例

案例编号 案例说明
Basic_Performance_Test_001 数据更新
Basic_Performance_Test_002 空间包含查询
Basic_Performance_Test_003 数据写入(复制)

测试 SQL

Basic_Performance_Test_001

update t_polygon_gis set geom= ST_Buffer( ST_MakePoint(random()+117,  random()+31), 0.016)  where  id >899 and id<1000; 

Basic_Performance_Test_002

select count(*) from  public.shopserver a, bj_1 b where ST_Contains(b.smgeometry, a.smgeometry);

Basic_Performance_Test_003

create table t_polygon_gis_copy as select  id,geom from t_polygon_gis;

测试步骤

我们将通过在同一机器上测试通用 GCC 和 GCC for openEuler 对于特定场景的性能进行对比测试。

  1. 使用 GCC for openEuler 和通用 GCC 分别编译 postgreSQL 13.6 数据库

    • 创建两个独立的用户 pggcc 和 pgopengcc 用来进行测试
    • 安装通用 GCC
    • 安装 GCC for openEuler ,可参考鲲鹏社区官方文档
    • 设置环境变量,确保 pggcc 和 pgopengcc 使用正确的 GCC 程序
    • 使用 configure 配置,然后编译即可。
  2. 编译 Yukon 1.0.1

    Yukon 的编译可以参考 Yukon 的官方文档进行操作。

  3. 设置数据库参数

    • 设置数据库最大连接数为 1000
  4. 开始测试

    测试通过 pgbench 单线程和多线程结合的方式进行测试。

    pgbench 命令示例

    pgbench test -r -n -t 20 -c 100 -j 50  -U yukontest -p 25432 -P 5 -f  Business_Performance_Test_001.sql
    

    其中:

    test:测试使用的数据库

    -t 20: 每个客户端执行的事务数

    -c 100: 客户数

    -j 50: 线程数

    -U yukontest: 数据库用户名

    -p 25432: 数据库连接端口号

    -f Business_Performance_Test_001.sql: 测试案例文件

测试结果

测试案例 性能提升(GCC for openEuler 对比 通用 GCC)
Basic_Performance_Test_001 28.89%
Basic_Performance_Test_002 7.45%
Basic_Performance_Test_003 18.53%

测试结论

通过测试的结果我们可以看到,GCC for openEuler 相对于通用的 GCC 在数据库的使用中有较为明显的性能提升。最高可提升 28%。

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/129078848
gcc