开发者
资源
KAOT工具新特性:支持openGuass、金仓数据库、达梦数据库自动调优

KAOT工具新特性:支持openGuass、金仓数据库、达梦数据库自动调优

案例分享openGauss鲲鹏处理器计算商业SMECE

发表于 2026/03/11

0

1 非商用声明

该文档提供的内容为参考实践,仅供用户参考使用,用户可参考实践文档构建自己的软件,按需进行安全、可靠性加固,但不建议直接将相关Demo或镜像文件集成到商用产品中。

2 概述

KAOT(Kunpeng Auto Optimization Tool)是一款系统性能调优工具,其核心目标是通过自动化操作提升调优效率与易用性。相较于传统人工调优,KAOT可根据用户指定的应用场景,自动完成调优配置文件生成、调优配置执行及鲲鹏BoostKit加速库安装等一系列操作,同时用户可以指定特定的调优手段进行快速使能,有效降低手动操作的复杂性和出错风险。

KAOT新增支持金仓数据库、openGauss数据库、达梦数据库3个数据库场景的自动化调优能力,3个数据库的调优参考实践详见如下三个文档:

表1 数据库调优参考实践

参考实践

链接

基于虚拟机的openGauss调优参考实践

https://www.hikunpeng.com/zh/developer/techArticles/20251230-1

基于鲲鹏服务器的金仓数据库调优参考实践

https://www.hikunpeng.com/zh/developer/techArticles/20260309-2

基于鲲鹏服务器的达梦数据库调优参考实践

https://www.hikunpeng.com/zh/developer/techArticles/20260626-6

3 数据库调优端到端使用指导

本章节基于数据库调优场景,给出该工具使用的最佳实践。

工具详细使用参考实践参考文档:https://www.hikunpeng.com/zh/developer/techArticles/20251222-1

步骤1    调优前测试环境上的基线性能数据(可选,用来对比调优前后的效果)

             根据业务场景进行测试即可。

步骤2    生成当前环境上的基线文件

             根据不同数据库场景,执行以下命令生成所有调优项的基线文件:

             执行以下命令生成所有调优项的基线文件:

             (1) openGuass数据库场景

         python kaot.py basecfg --configfile opengauss_database:/opt/openGuass/data/postgresql.conf

             (2) KingBase金仓数据库场景

         python kaot.py basecfg --configfile kingbase_database:/opt/Kingbase/ES/V8/data/kingbase.conf

             (3) 达梦数据库场景

         python kaot.py basecfg --configfile dameng_database:/opt/dmdbms/data/DAMENG/dm.ini

步骤3    根据场景生成调优配置文件

             执行以下命令生成该场景下的配置文件

             (1) openGuass数据库场景

         python kaot.py generate -s opengauss_database --configfile opengauss_database:/opt/openGuass/data/postgresql.conf -o feature_config.yaml

             (2) KingBase金仓数据库场景

         python kaot.py generate -s kingbase_database --configfile kingbase_database:/opt/Kingbase/ES/V8/data/kingbase.conf -o feature_config.yaml

             (3) 达梦数据库场景

         python kaot.py generate -s dameng_database --configfile dameng_database:/opt/dmdbms/data/DAMENG/dm.ini -o feature_config.yaml

             示例中提供的kingbase.conf路径为KingBase默认路径,用户可使用默认路径,若有指定,则使用自定义的路径。

             postgresql.conf一般没有默认路径,安装目录由用户指定,用户必须使用用户指定的postgresql.conf路径。

             dm.ini一般默认路径为达梦数据库的安装用户目录,也可以由用户指定。

             根据执行成功后的日志回显,可查看生成的配置文件feature_config.yaml是否完整。

步骤4    使能生成的调优配置文件

             执行以下命令使能调优项:

         python kaot.py execute -tp feature_config.yaml

             根据执行打屏日志,可查看生成的基线文件base_config.yaml是否完整、调优项是否执行成功,以及生成的配置文件备份是否完整。

步骤5    重启数据库服务使得配置参数调整生效。

步骤6    测试调优后的性能(可选,用来对比调优前后的效果)

             按照步骤1的测试方法进行测试。

步骤7    回退不需要执行的调优配置(可选)

             若要回退指定的调优项,需将基线文件的deploy字段修改为Y,并按调优项使能新生成的配置文件,以回退config_nic_affinity为例,使用方式如下:

             1. 修改基线文件

           python kaot.py generate -bp base_config.yaml -o target_config.yaml

                 得到新生成的配置文件target_config.yaml,执行前注意拷贝基线文件base_config.yaml至./output目录下。

             2. 使能新生成的配置文件中的调优项

           python kaot.py execute -tp target_config.yaml -f config_nic_affinity

步骤8    测试最终性能(可选,用来对比调优前后的效果)

             按照步骤1的测试方法进行测试。

             ----结束

4 附录:数据库调优场景下的自动调优项汇总

表1 KAOT工具支持的KingBase金仓数据库调优项总览

调优手段

作用

设置CPU高性能模式

通过将CPU频率固定在最高值获得最大化性能

开启SMT超线程

开启SMT超线程,每个物理核分为两个逻辑核,提升整机性能

策略性抑制swap交换内存使用

减少数据库缓存交换到磁盘的情况,从而保证数据库的访问性能

磁盘IO调度策略调整

在固态硬盘场景下,使用none可以提升磁盘IO性能

网卡中断绑核

将处理网卡中断的CPU core设置在网卡所在的NUMA上,从而减少跨NUMA的内存访问所带来的额外开销,提升网络处理性能

KingBase金仓数据库共享内存参数优化

可以将频繁访问的数据从缓慢的磁盘(微秒/毫秒级)移至高速的内存(纳秒级),从而提升数据库性能

KingBase金仓数据库I/O相关参数优化

根据业务实际调整数据库配置参数,提升磁盘IO性能

表2 KAOT工具支持的openGuass数据库调优项总览

调优手段

作用

设置CPU高性能模式

通过将CPU频率固定在最高值获得最大化性能

openGuass数据库配置参数优化

根据业务实际调整数据库配置参数,提升磁盘IO性能

表3 KAOT工具支持的达梦数据库调优项总览

调优手段

作用

网卡中断绑核

将处理网卡中断的CPU core设置在网卡所在的NUMA上,从而减少跨NUMA的内存访问所带来的额外开销,提升网络处理性能

开启SMT超线程

开启SMT超线程,每个物理核分为两个逻辑核,提升整机性能

策略性抑制swap交换内存使用

减少数据库缓存交换到磁盘的情况,从而保证数据库的访问性能

设置CPU高性能模式

通过将CPU频率固定在最高值获得最大化性能

达梦数据库配置参数优化

优化数据库事务合并、内存缓冲区、磁盘IO、线程数配置等,从而提升数据库性能

磁盘IO调度策略调整

在固态硬盘场景下,使用none可以提升磁盘IO性能

表4 KAOT工具调优KingBase金仓数据库配置参数参考

数据库配置参数名称

参数含义及应用

默认值

参考调优值

shared_buffers

设置数据库服务器使用的共享内存缓冲区的数量,主要用于缓存数据,可以将频繁访问的数据从缓慢的磁盘(微秒/毫秒级)移至高速的内存(纳秒级),从而提升数据库性能。该参数根据需求一般不能设置超过物理机整机内存总量的80%,但至少是20%。

128MB

KingBase金仓数据库场景工具使用65%* 服务器内存后向上取整

以512GB为例,约为333GB

checkpoint_timeout

两个相邻检查点之间的时间间隔,用于刷数据到磁盘。

应用:根据系统写的负载设置,一般不要太频繁,可以和后台写线程配置相关参数配合使用。

5min

20min

checkpoint_completion_target

表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成。设置长一点,避免对性能测试的影响

0.5

0.9

bgwriter_delay

后台写线程的自动执行时间,后台写线程的作用是将 shared_buffer 里的脏页面写回到磁盘,减少 checkpoint 的压力。

应用:如果系统数据修改的压力一直很大,建议将该时间间隔设置小一些,以免积累的大量的脏页面到 checkpoint,使 checkpoint 时间过长(checkpoint 期间系统响应速度较慢)。

200ms

10ms

max_wal_size

检查点之间WAL日志允许增长的最大大小。

应用:设置较大的值(如300GB)可防止在写入高峰期因WAL增长过快而频繁触发检查点。

1GB

300GB

max_connections

数据库允许的最大并发连接数。

100

2048

表5 KAOT工具调优openGuass数据库配置参数参考

参数名称优化后的参数含义及应用默认值参考调优值
max_connections数据库允许的最大并发连接数。2002048
allow_concurrent_tuple_update是否允许并发更新同一行元组(特定引擎特性)。onTRUE
audit_enabled是否启用合规性操作日志记录功能。onoff
checkpoint_segments设置触发检查点的WAL日志文件数量。641024
cstore_buffers为列存储引擎(CStore)分配的专用共享缓冲区大小。512MB16MB
enable_alarm是否启用系统异常告警通知功能。onoff
full_page_writes是否在检查点后第一次修改页时,将整个页写入WAL,防止部分写入导致崩溃后数据损坏。onoff
max_files_per_process每个服务进程可打开的最大文件数。1000100000
max_prepared_transactions可同时处于“预备”状态的两阶段提交事务的最大数量。2002048
wal_buffers用于存放还未写入磁盘的WAL数据的共享内存大小。16MB1GB
synchronous_commit事务提交时是否等待WAL刷新到磁盘。onon
maintenance_work_mem维护性操作(如VACUUM, CREATE
 INDEX等)可使用的最大内存。
16MB2GB
vacuum_cost_limit达到此成本限制后,VACUUM会休眠。20010000
autovacuum_max_workers可同时运行的自动清理(autovacuum)工作进程的最大数量。310
autovacuum_vacuum_cost_delay当一个自动清理工作进程达到成本限制后,休眠的时长。20ms10ms
enable_material优化器是否允许使用物化节点。onoff
wal_log_hints是否在检查点后页的第一次修改时,即使是因为提示位更改,也写完整页到WAL。onoff
autovacuum_vacuum_scale_factor触发自动VACUUM的元组更新/删除比例(相对于表大小)。0.20.1
autovacuum_analyze_scale_factor触发自动ANALYZE的元组更新/插入比例(相对于表大小)。0.10.02
enable_save_datachanged_timestamp是否保存数据变更时间戳。onFALSE
instr_unique_sql_count内存中可缓存的不同SQL执行特征的数量,用于内部执行统计分析。1005000
advance_xlog_file_num提前回收的WAL日志文件数量。0100
track_counts是否维护表和索引的访问计数器,为自动清理和优化器提供统计依据。onon
track_sql_count是否启用SQL执行频次的内部统计计数。onon
plog_merge_age计划日志合并的年龄。00
session_timeout客户端连接的超时时间(0表示不超时)。10min0
enable_instance_metric_persistent是否将实例级运行状态数据持久化存储至系统表。onoff
enable_logical_io_statistics是否收集逻辑I/O操作的内部统计信息。onoff
enable_user_metric_persistent是否将用户级会话状态数据持久化存储至系统表。onoff
enable_xlog_prune是否启用WAL日志的自动清理。onoff
enable_resource_track是否开启系统资源消耗的内部记录功能。onon
remote_read_mode分布式架构下协调节点访问数据节点的认证模式。authenticationnon_authentication
wal_levelWAL日志的级别,决定写入多少信息。hot_standbyhot_standby
hot_standby是否允许在备库上执行只读查询。onon
hot_standby_feedback备库是否向主库反馈其当前最旧的活动事务ID,防止主库清理备库仍需要的数据。offoff
enable_asp是否启用活跃会话历史快照功能,用于性能回溯分析。onoff
enable_bbox_dump是否启用系统异常时的黑匣子诊断信息转储。onoff
bgwriter_flush_after后台写进程每次刷脏数据后,触发OS缓存的刷盘阈值。512kB32
wal_keep_segments在主库为备库保留的最小WAL日志文件数量,防止备库落后过多时所需日志被删除。161025
xloginsert_locks插入WAL记录时的锁分区数,影响WAL插入并发度。848
bgwriter_delay后台写进程两次活跃周期之间的休眠时间。2s5s
incremental_checkpoint_timeout增量检查点的超时时间。1min5min
walwriter_sleep_thresholdWAL写进程的休眠阈值。50050000
pagewriter_sleep页面写进程的休眠时间。2s100ms
wal_file_init_num预先初始化的WAL日志文件数量。1030
pagewriter_thread_num页面写进程的线程数。42
max_redo_log_size单个Redo日志文件的最大大小。1GB400GB
max_io_capacity数据库后台I/O的最大吞吐量限制。500MB1GB
enable_cachedplan_mgr是否启用计划缓存管理。onoff
light_comm是否启用轻量级提交优化(特定场景)。offon
enable_indexscan_optimization是否启用索引扫描优化。offon
time_record_level时间记录级别,用于内部性能诊断。01
shared_buffers设置数据库服务器使用的共享内存缓冲区的数量,主要用于缓存数据,可以将频繁访问的数据从缓慢的磁盘(微秒/毫秒级)移至高速的内存(纳秒级),从而提升数据库性能。该参数根据需求一般不能设置超过物理机整机内存总量的80%,但至少是20%。1GB"openGuass数据库场景工具使用30%*
 服务器内存后向上取整
以512GB为例,约为157GB"

表6 KAOT工具调优达梦数据库配置参数参考(以128C512G为例)

数据库配置参数名称

参数含义及应用

默认值

参考调优值

COMMIT_BATCH

事务提交时合并刷盘的重做日志批次大小(单位为日志块个数)

1

32

COMMIT_BATCH_TIMEOUT

事务提交时等待合并刷盘的最大超时时间(单位:毫秒)

1

5

MAX_OS_MEMORY

数据库可占用的最大操作系统内存百分比

100

90

MEMORY_POOL

共享内存池初始大小(单位:MB)

2000

128000

MEMORY_TARGET

共享内存池扩展后收缩回的目标大小(单位:MB)

41000

128000

BUFFER

系统缓冲区大小(MB)。

163000

256000

BUFFER_POOLS

缓冲区池数量

101

131

DIRECT_IO

是否启用直接I/O(绕过操作系统缓存)。

0

1

IO_THR_GROUPS

I/O线程组数量,控制并发I/O处理能力。

32

128

WORKER_THREADS

工作线程数

64

128

TASK_THREADS

任务线程数

32

128


本页内容