# 慢日志平台概要设计方案
## 一、全局可视化大屏
### 1.1 设计目标
为管理者和运维人员提供数据库性能的全景视图,实现实时监控和快速问题发现。采用深色主题设计,布局遵循"总-分-重点"的信息层次,顶部展示关键指标,中部呈现趋势分析,底部聚焦资源消耗和告警信息。
### 1.2 数据更新机制
采用双引擎驱动:实时数据通过WebSocket每30秒推送增量更新,历史统计数据每分钟定时轮询刷新。核心数据存储在Redis缓存中,确保快速响应。统计模块定时从MySQL聚合计算后写入Redis,大屏直接读取缓存数据展示。
### 1.3 核心展示模块
#### 慢SQL趋势分析区
展示最近24小时慢SQL数量曲线,支持1小时/6小时/12小时/24小时视图切换。曲线采用渐变色填充,超过阈值自动变为警示色。右上角显示增长率指标,对比昨日和上周同期数据。
配套展示执行时长分布环形图,按0-1秒、1-3秒、3-10秒、10秒以上四个区间统计。同时展示影响行数趋势的双轴折线图,左轴为扫描行数,右轴为返回行数,直观反映查询效率。
所有图表支持交互下钻,点击曲线任意时间点弹出该时段详细SQL列表。
#### 资源消耗TOP排行榜
以分页卡片形式展示四个维度的TOP10排名,通过标签页切换:
- 执行时长TOP10:展示平均执行时长最长的SQL指纹
- 执行次数TOP10:展示调用频率最高的SQL,标注每日总耗时
- 扫描行数TOP10:展示全表扫描或大范围扫描的SQL,标注扫描返回比
- 锁等待TOP10:展示Lock_time最长的SQL
每条记录以卡片呈现,包含排名、SQL指纹、所属实例、业务标签和关键指标。提供快速操作按钮:查看详情、添加白名单、创建优化任务。使用Redis的Sorted Set存储TOP榜,每分钟通过WebSocket推送变化。
#### 实例健康度矩阵
采用热力图展示所有MySQL实例健康状况,每个方块代表一个实例,颜色深浅反映健康评分。
健康度评分规则:慢SQL数量40%、平均执行时长30%、锁等待时长20%、扫描行数10%。评分区间:90-100分绿色(健康)、70-89分黄色(预警)、70分以下红色(告警)。
支持鼠标悬停显示详细指标tooltip,点击方块跳转实例详情页。顶部提供业务线筛选器,按业务维度过滤实例范围。
#### 告警统计面板
以信息卡片组合展示告警关键指标:
- 今日告警总数及与昨日对比趋势,附带最近7天告警曲线
- 告警级别分布堆叠柱状图(严重/警告/提示)
- 未处理告警数量红色高亮显示,配合闪烁动画
- 告警响应时长平均值,超过目标值显示红色预警
- 告警TOP5来源实例横向条形图
告警数据实时更新,点击未处理告警数量弹出详细列表。告警触发后自动记录并通过钉钉、邮件、短信多渠道通知。
### 1.4 技术要点
前端采用ECharts图表库和DataV大屏组件库。WebSocket实现实时推送,后端定时任务从Redis获取数据推送给所有在线客户端。Redis缓存键采用层次化设计如"slowsql:trend:日期",便于管理和过期控制。历史时序数据可选用InfluxDB或MySQL分区表存储。
## 二、下钻分析能力
### 2.1 分析模型设计
基于OLAP多维分析模型,支持从宏观趋势逐层深入到具体SQL和执行细节,最终定位性能根因。
核心分析维度:
- 时间维度:年/月/日/小时/分钟多级粒度
- 业务维度:业务线/应用/模块三层级
- 数据库维度:实例/数据库名/表名
- SQL维度:SQL指纹/SQL类型(SELECT/UPDATE/DELETE/INSERT)
- 性能维度:执行时长区间/扫描行数区间
维度间可自由组合,支持复杂的交叉分析查询。
### 2.2 页面布局结构
采用"筛选-展示-详情"三段式布局:
**筛选条件区域**(顶部固定):
第一行:业务线选择、实例选择、数据库选择、时间范围选择
第二行:执行时长阈值、扫描行数阈值、SQL类型、标签筛选
支持级联联动,选择业务线后实例和数据库自动过滤。提供保存筛选方案、一键清空、导出结果功能。实时显示当前结果数量。
**分析结果展示区域**(中部):
采用多标签页组织,包括SQL指纹列表、时序趋势分析、分布分析、原始日志查询四个视图。
### 2.3 SQL指纹列表视图
表格形式展示聚合后的SQL指纹,每行包含:
- SQL指纹(脱敏后模板,支持点击展开完整SQL)
- 执行次数
- 平均/最大执行时长(超过阈值显示警示色)
- 平均扫描行数/返回行数
- 平均锁等待时长
- 涉及表名
- 所属实例和业务标签
- 操作按钮(详情/加白名单/创建任务)
支持按任意列排序,默认按平均执行时长降序。支持多选批量操作。SQL指纹采用代码高亮提升可读性。
### 2.4 时序趋势分析视图
双轴折线图展示慢SQL时间维度变化:
- 横轴:时间,根据筛选范围自动调整刻度
- 左轴:执行次数(柱状图)
- 右轴:平均执行时长(折线图)
支持时间范围缩放,在时间轴上拖动选择子区间放大查看。提供按分钟/小时/天/周四种粒度切换。支持对比上周或上月同期数据,使用虚线叠加显示。点击数据点弹出该时刻详细信息。
### 2.5 分布分析视图
通过统计图表揭示多维度分布特征:
- 执行时长分布直方图:显示SQL在各时长区间的数量分布
- 扫描行数分布直方图:采用对数尺度区间,识别全表扫描SQL
- 数据库/表维度同心圆饼图:外圈显示数据库分布,内圈显示表分布,支持点击下钻
- SQL类型占比饼图:按SELECT/UPDATE/DELETE/INSERT分类统计
所有图表支持联动交互,点击一个图表的某个区域,其他图表自动过滤对应数据。
### 2.6 原始日志查询视图
详细表格展示每条原始慢日志记录:
- 执行时间戳
- 完整SQL语句(带参数值,代码高亮)
- 执行时长/锁等待时长
- 扫描行数/返回行数
- 执行用户/客户端IP
支持二次筛选和全文搜索,高亮关键词。采用虚拟滚动技术处理大数据量。提供导出CSV功能,大数据量采用异步任务处理,完成后通知下载。
### 2.7 根因分析功能
点击SQL指纹详情按钮进入深度分析页面,包含多个分析维度:
**执行计划分析**:调用在线SQL分析模块,连接数据库执行EXPLAIN,展示执行计划结果,高亮全表扫描、filesort、临时表等问题点,给出索引优化建议。
**时间分布分析**:按小时/天/周展示该SQL执行时长波动,识别性能突变时间点,可关联数据库负载指标分析。
**参数分析**:对参数化查询,展示不同参数值的性能差异,识别导致慢查询的特定参数。
**关联分析**:展示同时间段其他慢SQL,分析是否存在锁竞争或资源争抢。
**历史对比**:对比该SQL在过去7天/30天的性能趋势,识别性能退化。
**智能建议引擎**:基于规则给出优化建议,如全表扫描建议加索引、高锁等待建议检查事务、高扫描返回比建议优化条件等。
### 2.8 技术实现要点
数据库采用分区表设计,按天或月分区,在时间戳、SQL指纹、实例、业务标签等字段上建立复合索引,加速多维查询。热点查询结果缓存到Redis,TTL设置5分钟。大结果集不缓存,避免内存压力。异步导出使用后台任务队列处理,生成文件后上传到文件服务器或OSS,通知用户下载链接。
## 三、任务跟踪看板
### 3.1 任务管理架构
采用工作流引擎管理优化任务全生命周期,状态流转:待处理 → 已分配 → 进行中 → 待验证 → 已完成,支持驳回和搁置状态。
### 3.2 看板视图设计
提供看板视图和列表视图双模式:
**看板视图**(默认):类似Jira的泳道看板,按状态分列展示任务卡片。支持拖拽卡片改变状态,直观反映任务流转。
任务卡片内容:
- 任务编号和标题
- 业务/实例信息
- SQL指纹摘要
- 当前性能指标 → 目标指标
- 负责人/截止时间
- 优先级(P0/P1/P2/P3)和标签
**列表视图**:传统表格形式,支持按任意字段排序和高级筛选,适合查找特定任务。
### 3.3 任务创建流程
四个创建入口:大屏TOP榜、下钻分析页、告警通知、手动新建。
创建表单包含:
- 任务标题(自动生成或手动输入)
- 关联SQL指纹(自动关联或搜索)
- 所属实例和业务
- 问题描述(富文本,支持截图)
- 当前性能指标(平均时长/执行次数/影响用户数)
- 优化目标(目标时长/预计收益)
- 优先级/负责人/协作人
- 计划时间和标签
### 3.4 任务详情页设计
**顶部信息区**:任务编号、标题、状态徽章、创建人、负责人、协作人、优先级、截止时间。
**Tab页内容**:
- 任务详情:问题描述、关联SQL、性能指标对比、附件列表
- 优化方案:富文本记录根因分析、优化方案(支持多备选)、EXPLAIN对比、预期效果
- 执行记录:时间轴展示任务进展,记录创建、分配、方案添加、SQL变更、验证等关键节点
- 性能对比:图表展示优化前后执行时长、次数、扫描行数、数据库负载对比
**底部操作区**:根据任务状态显示不同操作按钮,如分配、开始处理、提交验证、验证通过/失败、驳回、搁置、重新打开、归档等。
### 3.5 智能提醒推送
提醒规则:
- 任务分配:即时钉钉/邮件通知负责人
- 即将到期:提前2天钉钉提醒
- 任务逾期:每日钉钉提醒,抄送Leader
- 状态变更:通知相关人员
- 评论@:即时通知被@人员
### 3.6 统计看板
看板顶部展示统计数据:
- 本周新增/完成任务数
- 任务完成率
- 平均处理时长
- 逾期任务数(红色高亮)
- 我的待办任务数
### 3.7 自动化功能
**自动性能验证**:任务提交验证后,系统自动查询最近1小时该SQL指纹的平均执行时长,对比目标值,生成验证结果建议(通过/未达标)。
**定时监控**:每天定时检查逾期任务,向负责人发送提醒,高优先级任务抄送Leader。
**任务推荐**:分析历史优化任务效果,为新出现的慢SQL推荐相似的优化方案。
### 3.8 技术实现要点
数据库设计包含任务主表、协作人关联表、操作日志表、附件表。任务主表在负责人、状态、截止时间等字段建立索引,优化查询性能。
看板拖拽基于前端拖拽组件实现,拖拽后调用API更新任务状态,通过WebSocket通知其他在线用户刷新看板,保证多人协作时数据一致性。
任务操作日志完整记录每次变更,包含操作人、操作类型、变更内容、时间戳,支持任务审计和回溯。
## 四、系统集成方案
### 4.1 整体架构
前端采用Vue3 + ECharts + DataV + Element Plus,应用层使用Spring Boot + WebSocket,数据层包含MySQL(业务数据)、Redis(缓存/队列)、可选InfluxDB(时序数据)。
### 4.2 核心数据流
慢日志从Kafka消费后,采集模块生成SQL指纹并写入文件,pt工具解析后统计数据入库MySQL。定时聚合任务和准实时流式统计双轨运行,结果写入Redis缓存。大屏和下钻分析从Redis和MySQL读取数据展示。
### 4.3 中间件选型
- 消息队列:Kafka(已有)
- 缓存:Redis(热点数据、实时指标、分布式锁)
- 实时通信:WebSocket(Spring Boot内置)
- 任务调度:Spring @Scheduled
- 通知推送:钉钉机器人/企业微信机器人
- 文件存储:本地文件系统或MinIO/OSS
### 4.4 关键特性
- 实时性:WebSocket推送保证大屏30秒延迟,告警即时通知
- 可扩展:多维分析模型支持灵活增加新维度
- 易用性:丰富的交互下钻,一键创建优化任务
- 智能化:自动性能验证,智能优化建议
- 协作性:任务看板支持多人协作,状态实时同步
最新发布