在官网的blog文章中,详细介绍了如何tpcc测试、安装benchmarksql和安装数据库,请先阅读它:BenchmarkSQL性能测试。
本次openGauss数据库部署采用TaiShan 200服务器(型号2280) :
-
CPU型号: 鲲鹏920 6426, 2P 128核
-
内存数量: 32G * 24条
-
网络:10GE带宽
-
网卡:1822 SP580 25GE
-
硬盘:nvme* 3个 容量:7.3T (HWE52P438T0L005N)
软件:
- 操作系统 openEuler 20.03 (LTS)
- 架构 aarch64
- BIOS 关闭
Support Smmc
,CPU Prefetching Configuration
,Die Interleaving
- 文件系统xfs的blocksize为8k
xfs_info $nvme挂载盘
可查看bsize是否为8192,不是则需要重新格式化nvme盘
- 修改网络中断绑核 (参考后面的步骤)
- 安装numa
- 安装htop
benchmarksql的测试环境推荐使用鲲鹏920 128核机器,对内存和硬盘无要求,不过它要与数据库在同一子网中,ping延时稳定在0.05ms以内。
benchmarksql上需要安装bisheng JDK,并加入环境变量:JDK_8u292
有了硬件和操作系统优化后,数据库也要充分利用硬件资源才能达到最优性能,这些和数据库配置息息相关,即使在同样的机器上,配置不同也可能导致性能差异巨大。
1. 磁盘划分
磁盘IO通常都会成为整个数据库的瓶颈,openGauss采用wal预写式事务日志来顺序写磁盘以提升IO利用率,但是这还不够。在高性能场景下,为了最大化利用磁盘IO,我们将依赖较少的磁盘写入操作分配到不同的nvme盘,这可以使得磁盘可以并发使用,磁盘IO利用率大大提升。
在openGauss中,默认的数据都写入当前数据库安装路径(以下以$gauss_home
替 代),我们可以把xlog和热点表编入不同的磁盘以提升磁盘IO利用率,在这里我们使用软链接实现,在磁盘划分时请正常退出openGauss再操作,gs_ctl stop -D $gauss_home
。
xlog映射的路径为$gauss_home\pg_xlog
, 而热点表bmsql_customer和bmsql_stock通常放入表空间,对应的路径为$gauss_home\pg_location
。
注意:表空间使用相对路径tb/exampleX创建, 创表语法:create tablespace example2 relative location 'tb/example2'
:
最终磁盘映射情况及demo示例如下:
磁盘 | 映射路径 | 数据目录 | 软链接 |
---|---|---|---|
/dev/nvme0n1 | /usr1 | $gauss_home=/usr1/peilq_dn/test_01 | 不涉及 |
/dev/nvme1n1 | /usr2 | /usr2/peilq_dn/test_01/pg_xlog | $gauss_home/pg_xlog |
/dev/nvme2n1 | /usr3 | /usr3/peilq_dn/test_01/pg_location/tb/example2 | $gauss_home/pg_location/tb/exampe2 |
/dev/nvme2n1 | <