12.8、数据库Dashboard
数据库 Dashboard
欢迎回到第 12 章的学习。在上一节,我们学习了前后端关联 Dashboard。现在我们要学习数据库 Dashboard,这是数据库监控的核心。
本节将学习:数据库性能监控、慢查询分析、连接池状态、以及数据量趋势。
数据库性能监控
数据库性能监控的作用是什么? 监控数据库的整体性能,识别性能问题,优化数据库性能。
数据库性能监控包括哪些指标呢?
第一个:查询执行时间。 查询的平均执行时间、P95、P99 执行时间。
第二个:事务处理时间。 事务的平均处理时间。
第三个:锁等待时间。 锁等待的平均时间。
第四个:数据库资源使用。 CPU、内存、磁盘、网络资源使用情况。
数据库性能监控查询:
# 查询执行时间 avg(db_query_duration_seconds{db_system="mysql"}) histogram_quantile(0.95, db_query_duration_seconds_bucket{db_system="mysql"}) histogram_quantile(0.99, db_query_duration_seconds_bucket{db_system="mysql"}) # 事务处理时间 avg(db_transaction_duration_seconds{db_system="mysql"}) # 锁等待时间 avg(db_lock_wait_time_seconds{db_system="mysql"}) # 资源使用 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) 100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
慢查询分析
慢查询分析的作用是什么? 识别和分析慢查询,优化查询性能,提升数据库性能。
慢查询分析包括哪些呢?
第一个:慢查询数量。 慢查询的数量和趋势。
第二个:慢查询列表。 慢查询的详细列表。
第三个:慢查询执行计划。 慢查询的执行计划分析。
第四个:慢查询优化建议。 针对慢查询的优化建议。
慢查询分析查询:
# 慢查询数量 sum(db_query_duration_seconds{db_system="mysql"} > 0.1) # 慢查询趋势 sum(rate(db_query_duration_seconds{db_system="mysql"} > 0.1[5m])) # 最慢的查询 topk(10, sum(rate(db_query_duration_seconds[5m])) by (db_statement))
连接池状态
连接池状态的作用是什么? 监控连接池的使用情况,识别连接池问题,优化连接管理。
连接池状态包括哪些呢?
第一个:连接池使用率。 连接池的当前使用率。
第二个:活跃连接数。 当前活跃的连接数。
第三个:空闲连接数。 当前空闲的连接数。
第四个:连接等待时间。 获取连接的平均等待时间。
第五个:连接泄露检测。 识别连接泄露情况。
连接池状态查询:
# 连接池使用率 hikari_connections_active / hikari_connections_total # 活跃连接数 hikari_connections_active # 空闲连接数 hikari_connections_idle # 连接等待时间 avg(hikari_connections_acquire_nanos) / 1000000 # 连接等待数 hikari_connections_pending
数据量趋势
数据量趋势的作用是什么? 监控数据库数据量的增长趋势,规划容量扩展。
数据量趋势包括哪些呢?
第一个:表数据量。 各个表的数据量。
第二个:数据量增长趋势。 数据量的时间趋势。
第三个:索引大小。 索引的大小和增长趋势。
第四个:存储空间使用。 存储空间的使用情况。
数据量趋势查询:
-- MySQL Query table data volume SELECT table_name, table_rows, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS size_mb FROM information_schema.tables WHERE table_schema = 'shoehub' ORDER BY table_rows DESC;
本节小结
在本节中,我们学习了数据库 Dashboard:
第一个是数据库性能监控。 监控数据库的整体性能,识别性能问题,优化数据库性能。
第二个是慢查询分析。 识别和分析慢查询,优化查询性能,提升数据库性能。
第三个是连接池状态。 监控连接池的使用情况,识别连接池问题,优化连接管理。
第四个是数据量趋势。 监控数据库数据量的增长趋势,规划容量扩展。
数据库 Dashboard 设计流程: 选择关键指标 → 设计可视化 → 配置告警 → 建立基线 → 持续优化。
这就是数据库 Dashboard。通过数据库 Dashboard,我们可以全面监控数据库的性能和健康状况。
在下一节,我们将学习 Dashboard 联动和跳转。学习如何设计 Dashboard 之间的联动和跳转。