在监控关系型数据库时,需要关注三个主要类别的指标:性能、资源利用率和可用性/错误。 这些指标可以帮助开发人员维护系统健康、优化查询并防止中断。 下面,我们将分解每个类别中的具体示例,并解释它们的重要性。
性能指标 首先,跟踪查询执行时间和吞吐量。 运行缓慢的查询可能会成为整个系统的瓶颈,因此像 PostgreSQL 的 pg_stat_statements
或 MySQL 的慢查询日志等工具对于识别低效操作至关重要。 例如,一个查询需要 5 秒才能获取用户数据可能表明缺少索引或模式设计不佳。 吞吐量指标,例如每秒事务数 (TPS) 或每秒查询数 (QPS),揭示了工作负载模式。 TPS 的突然下降可能表明存在锁等待等争用问题。 此外,监控连接池的使用情况——如果活动连接始终达到数据库的限制,应用程序可能无法连接,需要进行配置调整。
资源利用率 CPU、内存、磁盘 I/O 和存储是基础。 高 CPU 使用率(例如,90% 以上)可能源于未优化的查询或索引不足。 内存指标(如 PostgreSQL 的 pg_buffercache
中的缓冲区缓存命中率)显示了从内存中检索数据的频率与从磁盘检索数据的频率相比——低比率表明 RAM 不足以满足常见工作负载。 磁盘 I/O 延迟(以毫秒为单位测量)和吞吐量(MB/秒)有助于发现存储瓶颈。 例如,读取延迟的突然飙升可能表明磁盘硬件存在问题。 存储容量同样重要:每天增长 10GB 的表可能需要存档或分区,以避免填满磁盘。
可用性和错误 如果使用只读副本,请跟踪正常运行时间和复制延迟。 副本延迟数分钟(例如,MySQL 的 SHOW REPLICA STATUS
中为 300 秒)会带来提供过时数据的风险。 错误率(例如死锁或登录失败)是更深层次问题的早期警告。 例如,频繁的死锁可能需要更改事务逻辑。 日志监控查询超时或身份验证失败等事件也至关重要。 最后,确保备份成功完成并测试恢复过程——关键表的备份作业失败可能会导致数据无法恢复。 这些指标的自动警报等工具可以帮助团队在小问题升级之前采取行动。