适用场景
国产平台的性能特征与 x86 有差异:单核性能、内存带宽、NUMA 拓扑都不一样。直接照搬 x86 的调优参数常出现「越调越慢」。正确做法是先跑基线,再按平台特征逐项验证。
配置步骤(国产数据库性能调优)
-- 1) 先看等待与慢语句(达梦示例)
SELECT * FROM V$SQL_HISTORY WHERE EXEC_TIME > 1000 ORDER BY EXEC_TIME DESC LIMIT 10;
-- 金仓示例
SELECT query, calls, total_time/calls AS avg_ms FROM sys_stat_statements ORDER BY avg_ms DESC LIMIT 10;
-- 2) 常规参数(按内存与并发起步,需实测)
-- 缓冲区/共享内存、最大连接数、并发度、日志刷盘策略
-- 3) 索引与执行计划
EXPLAIN <慢语句>;
-- 关注:是否走索引、是否有全表扫描、是否有排序落盘
-- 4) 常见优化顺序
-- a. SQL 改写(去掉 select *、避免函数包字段)
-- b. 索引补齐或调整
-- c. 统计信息更新
-- d. 参数调整(最后一步)
关键参数与建议
- 基线先行:同业务在信创平台与旧平台的性能差距要量化(TPS、P95、CPU 利用率)
- NUMA 感知:多路 CPU 平台注意 NUMA 绑定,数据库与 JVM 建议绑核并关闭自动均衡
- 内存:检查内存带宽是否成为瓶颈,避免过度依赖大堆
- JVM:选择适配该架构的 JDK 版本,GC 策略按堆大小与停顿要求选
- 数据库:参数按国产库推荐值起步,重点看连接数、缓冲区、并发度
- 编译与二进制:应用尽量用平台优化版本,避免跑 x86 模拟层
- 测试:压测必须在该平台实测,禁止用 x86 数据推算
- 结论:达不到要求时,评估架构优化(缓存、异步、读写分离)而不是硬调参数
容易踩的坑
- 一上来就调参数,不看 SQL 慢在哪
- 只加索引不更新统计信息,执行计划仍走全表
- 最大连接数调到上千,内存与上下文切换反而拖慢
- 缓冲区设置超物理内存,触发换页
- 慢语句只看平均耗时,忽略 P99
- 调优后不复测,不知道有没有效果
验证与巡检
# 调优闭环
1) 慢语句 Top10(调优前)
2) 每条的处理动作(改写/索引/统计信息/参数)
3) 调优后同口径复测
4) 记录参数变更与回退值
- 巡检:慢语句趋势下降、参数变更留档、统计信息定期更新
小结
信创性能验收:有该平台实测的压测报告,性能满足业务需求或有明确的架构优化方案,而不是「差不多能用」。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。