适用场景

国产平台的性能特征与 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) 记录参数变更与回退值
  • 巡检:慢语句趋势下降、参数变更留档、统计信息定期更新

小结

信创性能验收:有该平台实测的压测报告,性能满足业务需求或有明确的架构优化方案,而不是「差不多能用」。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。