Skip to content

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
  • 优化建议
    • 检查复制配置
    • 检查备节点状态
    • 调整同步模式

性能指标监控最佳实践

建立性能基线

  • 收集正常运行时的性能数据
  • 建立性能基线
  • 定期更新基线

监控策略

  • 实时监控:关键指标的实时监控
  • 历史监控:长期性能趋势分析
  • 告警配置:合理设置告警阈值
  • 报表生成:定期生成性能报表

性能分析流程

  1. 收集性能数据
  2. 识别性能瓶颈
  3. 分析根本原因
  4. 制定优化方案
  5. 实施优化措施
  6. 验证优化效果

常见问题(FAQ)

Q1: 如何监控 GaussDB 的性能指标?

A1: 监控 GaussDB 性能指标的方法:

  1. 使用内置工具如 gs_stat_all、gs_checkperf 等
  2. 使用系统工具如 top、iostat、vmstat 等
  3. 部署第三方监控系统如 Prometheus + Grafana
  4. 分析数据库日志如慢查询日志、错误日志等

Q2: 哪些性能指标需要重点关注?

A2: 需要重点关注的性能指标:

  1. CPU 使用率和负载
  2. 内存使用率
  3. 磁盘 I/O 性能
  4. 连接数和连接失败率
  5. 慢查询数和查询执行时间
  6. 缓存命中率
  7. 锁等待时间和死锁发生率
  8. 复制延迟

Q3: 如何优化 GaussDB 的性能?

A3: 优化 GaussDB 性能的方法:

  1. 优化 SQL 查询和索引
  2. 调整数据库参数
  3. 增加系统资源(CPU、内存、磁盘)
  4. 优化存储结构
  5. 调整复制模式
  6. 使用连接池
  7. 优化事务设计

Q4: 如何建立性能基线?

A4: 建立性能基线的步骤:

  1. 收集系统正常运行时的性能数据
  2. 分析数据,确定各项指标的正常范围
  3. 定期更新基线,适应业务变化
  4. 基于基线设置告警阈值

Q5: 性能指标异常时如何处理?

A5: 性能指标异常时的处理方法:

  1. 快速定位异常指标
  2. 分析异常原因
  3. 采取针对性的优化措施
  4. 验证优化效果
  5. 更新性能基线和告警阈值