外观
GaussDB 性能指标
资源类性能指标
CPU 指标
CPU 使用率
- 定义:CPU 资源的使用百分比
- 监控方法:bash
# 使用 top 命令 top # 使用 gs_checkperf 工具 gs_checkperf -i cpu -h host - 正常范围:
- 平均值:< 70%
- 峰值:< 90%
- 优化建议:
- 优化 SQL 查询
- 增加 CPU 资源
- 调整并行度参数
- 优化连接池配置
CPU 负载
- 定义:CPU 处理的任务队列长度
- 监控方法:bash
# 使用 uptime 命令 uptime # 使用 vmstat 命令 vmstat 1 - 正常范围:
- 平均值:< CPU 核心数 × 1.5
- 峰值:< CPU 核心数 × 2.0
- 优化建议:
- 优化系统资源分配
- 减少并发连接数
- 优化 SQL 执行计划
内存指标
内存使用率
- 定义:内存资源的使用百分比
- 监控方法:bash
# 使用 free 命令 free -m # 使用 gs_checkperf 工具 gs_checkperf -i mem -h host - 正常范围:
- 系统内存:< 85%
- 共享内存:< 90%
- 优化建议:
- 调整 shared_buffers 参数
- 优化 work_mem 参数
- 增加内存资源
- 清理无效连接
交换分区使用率
- 定义:交换分区的使用百分比
- 监控方法:bash
# 使用 free 命令 free -m - 正常范围:
- < 10%
- 优化建议:
- 增加内存资源
- 调整 swapiness 参数
- 优化内存使用
磁盘 I/O 指标
磁盘使用率
- 定义:磁盘空间的使用百分比
- 监控方法:bash
# 使用 df 命令 df -h - 正常范围:
- < 80%
- 优化建议:
- 清理无效数据
- 增加磁盘空间
- 优化存储结构
磁盘 I/O 吞吐量
- 定义:磁盘读写的数据量
- 监控方法:bash
# 使用 iostat 命令 iostat -d -x 1 - 正常范围:
- 根据磁盘类型和配置
- SSD:> 100 MB/s
- HDD:> 10 MB/s
- 优化建议:
- 使用 SSD 存储
- 优化 I/O 调度器
- 调整 checkpoint 相关参数
磁盘 I/O 延迟
- 定义:磁盘读写操作的延迟时间
- 监控方法:bash
# 使用 iostat 命令 iostat -d -x 1 - 正常范围:
- 读延迟:< 10 ms
- 写延迟:< 20 ms
- 优化建议:
- 使用 SSD 存储
- 优化 I/O 密集型查询
- 调整 WAL 相关参数
网络指标
网络吞吐量
- 定义:网络传输的数据量
- 监控方法:bash
# 使用 sar 命令 sar -n DEV 1 - 正常范围:
- 根据网络带宽
- < 70% 网络带宽
- 优化建议:
- 增加网络带宽
- 优化网络配置
- 减少网络传输数据量
网络延迟
- 定义:网络数据包的传输延迟
- 监控方法:bash
# 使用 ping 命令 ping host - 正常范围:
- 局域网:< 1 ms
- 广域网:< 50 ms
- 优化建议:
- 优化网络拓扑
- 使用高速网络设备
- 减少跨地域数据传输
数据库类性能指标
连接指标
连接数
- 定义:当前数据库连接的数量
- 监控方法:sql
SELECT count(*) FROM pg_stat_activity; - 正常范围:
- < 70% 最大连接数
- 优化建议:
- 增加 max_connections 参数
- 使用连接池
- 优化应用程序连接管理
连接失败率
- 定义:连接失败的比例
- 监控方法:sql
SELECT sum(CASE WHEN state = 'failed' THEN 1 ELSE 0 END)::float / count(*) * 100 FROM pg_stat_activity; - 正常范围:
- < 1%
- 优化建议:
- 检查认证配置
- 检查网络连接
- 优化连接池配置
事务指标
事务提交率
- 定义:每秒提交的事务数
- 监控方法:sql
SELECT sum(xact_commit + xact_rollback) / 60 AS tps FROM pg_stat_database; - 正常范围:
- 基于业务场景
- 无固定标准
- 优化建议:
- 优化事务设计
- 减少长事务
- 调整事务相关参数
事务回滚率
- 定义:事务回滚的比例
- 监控方法:sql
SELECT sum(xact_rollback)::float / sum(xact_commit + xact_rollback) * 100 FROM pg_stat_database; - 正常范围:
- < 5%
- 优化建议:
- 检查应用程序逻辑
- 优化错误处理
- 减少死锁
锁指标
锁等待时间
- 定义:锁等待的平均时间
- 监控方法:sql
SELECT avg(cast(waiting_time as numeric)) as avg_wait_time FROM pg_locks WHERE waiting = true; - 正常范围:
- < 100 ms
- 优化建议:
- 优化锁竞争
- 减少长事务
- 调整锁相关参数
- 使用乐观锁
死锁发生率
- 定义:每秒发生的死锁数
- 监控方法:sql
SELECT deadlocks / 60 AS deadlocks_per_second FROM pg_stat_database; - 正常范围:
- < 1 次/分钟
- 优化建议:
- 优化事务顺序
- 减少事务持有锁的时间
- 调整隔离级别
SQL 类性能指标
查询性能指标
慢查询数
- 定义:执行时间超过阈值的查询数量
- 监控方法:sql
-- 使用 pg_stat_statements 扩展 SELECT count(*) FROM pg_stat_statements WHERE total_time / calls > 1000; -- 执行时间超过 1000ms - 正常范围:
- < 0.1% 总查询数
- 优化建议:
- 优化慢查询
- 增加索引
- 调整查询计划
查询执行时间
- 定义:查询的平均执行时间
- 监控方法:sql
SELECT avg(total_time / calls) AS avg_exec_time FROM pg_stat_statements; - 正常范围:
- 基于业务场景
- 一般查询:< 100 ms
- 复杂查询:< 1000 ms
- 优化建议:
- 优化 SQL 查询
- 增加索引
- 调整参数配置
缓存指标
共享缓冲区命中率
- 定义:共享缓冲区的命中比例
- 监控方法:sql
SELECT 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_database; - 正常范围:
95%
- 优化建议:
- 增加 shared_buffers 参数
- 优化数据访问模式
- 使用 SSD 存储
有效缓存命中率
- 定义:包括操作系统缓存在内的总缓存命中率
- 监控方法:sql
SELECT 100.0 * (shared_blks_hit + local_blks_hit) / nullif(shared_blks_hit + shared_blks_read + local_blks_hit + local_blks_read, 0) AS hit_percent FROM pg_stat_database; - 正常范围:
99%
- 优化建议:
- 增加系统内存
- 优化查询计划
- 减少全表扫描
索引指标
索引使用率
- 定义:索引被使用的比例
- 监控方法:sql
SELECT relname, 100.0 * idx_scan / nullif(idx_scan + seq_scan, 0) AS index_usage_percent FROM pg_stat_user_tables WHERE idx_scan + seq_scan > 0; - 正常范围:
80%
- 优化建议:
- 增加缺失的索引
- 删除无效的索引
- 优化查询条件
索引扫描率
- 定义:使用索引扫描的查询比例
- 监控方法:sql
SELECT 100.0 * sum(idx_scan) / nullif(sum(idx_scan + seq_scan), 0) AS index_scan_percent FROM pg_stat_user_tables; - 正常范围:
70%
- 优化建议:
- 增加合适的索引
- 优化查询语句
- 调整统计信息
复制类性能指标
复制延迟
- 定义:主节点与备节点之间的 WAL 差距
- 监控方法:sql
SELECT application_name, pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lsn_diff, now() - replay_timestamp AS replay_delay FROM pg_stat_replication; - 正常范围:
- LSN 差距:< 10 MB
- 时间延迟:< 30 秒
- 优化建议:
- 优化网络连接
- 调整 WAL 相关参数
- 增加备节点资源
同步状态
- 定义:复制的同步状态
- 监控方法:sql
SELECT application_name, state, sync_state FROM pg_stat_replication; - 正常范围:
- 同步复制:sync
- 半同步复制:quorum
- 异步复制:async
- 优化建议:
- 检查复制配置
- 检查备节点状态
- 调整同步模式
性能指标监控最佳实践
建立性能基线
- 收集正常运行时的性能数据
- 建立性能基线
- 定期更新基线
监控策略
- 实时监控:关键指标的实时监控
- 历史监控:长期性能趋势分析
- 告警配置:合理设置告警阈值
- 报表生成:定期生成性能报表
性能分析流程
- 收集性能数据
- 识别性能瓶颈
- 分析根本原因
- 制定优化方案
- 实施优化措施
- 验证优化效果
常见问题(FAQ)
Q1: 如何监控 GaussDB 的性能指标?
A1: 监控 GaussDB 性能指标的方法:
- 使用内置工具如 gs_stat_all、gs_checkperf 等
- 使用系统工具如 top、iostat、vmstat 等
- 部署第三方监控系统如 Prometheus + Grafana
- 分析数据库日志如慢查询日志、错误日志等
Q2: 哪些性能指标需要重点关注?
A2: 需要重点关注的性能指标:
- CPU 使用率和负载
- 内存使用率
- 磁盘 I/O 性能
- 连接数和连接失败率
- 慢查询数和查询执行时间
- 缓存命中率
- 锁等待时间和死锁发生率
- 复制延迟
Q3: 如何优化 GaussDB 的性能?
A3: 优化 GaussDB 性能的方法:
- 优化 SQL 查询和索引
- 调整数据库参数
- 增加系统资源(CPU、内存、磁盘)
- 优化存储结构
- 调整复制模式
- 使用连接池
- 优化事务设计
Q4: 如何建立性能基线?
A4: 建立性能基线的步骤:
- 收集系统正常运行时的性能数据
- 分析数据,确定各项指标的正常范围
- 定期更新基线,适应业务变化
- 基于基线设置告警阈值
Q5: 性能指标异常时如何处理?
A5: 性能指标异常时的处理方法:
- 快速定位异常指标
- 分析异常原因
- 采取针对性的优化措施
- 验证优化效果
- 更新性能基线和告警阈值
