01-性能监控
查询剖析工具 - show profile
- 默认禁用,使用
set profiling = 1
在会话级别动态修改,设置完成后,服务器上执行的所有语句都会 测量其耗费的时间 和 其他一些查询执行状态变更的数据 使用show profiles
查看具体的执行时间,在 MySQL 的命令行模式下,时间只能显示两位小数
执行show profile for query 1
可以查询详细的每个步骤的时间 - Type
- all: 显示所有信息,
show profile all for query n
- block io: 显示块 io 操作的次数,
show profile block io for query n
- context switches: 显示上下文切换次数,主动和被动,
show profile context switches for query n
- cpu: 显示用户 CPU 时间、系统 CPU 时间,
show profile cpu for query n
- IPC:显示发送和接受的消息数量,
show profile ipc for query n
- Memory:暂未实现
- page faults:显示页错误数量,
show profile page faults for query n
- source:显示源码中的函数名称和位置,
show profile source for query n
- swaps:显示 swap 的次数,
show profile swaps for query n
- all: 显示所有信息,
performance schema
- 用于监控 MySQL server 在一个较低级别的运行过程中的资源消耗、资源等待等情况
- 特点
- 提供了一种在数据库运行时实时检查 server 的内部执行情况的方法,performance_schema 数据库中的表使用 performance_schema 存储引擎
该数据库主要关注数据库运行过程中 性能相关 的数据(information_schema 主要关注 server 运行过程中的元数据信息) - performance_schema 通过监视 server 的事件实现监视 server 内部运行情况,事件 指 server 内部活动中所做的 任何事情以及对应的时间消耗,利用这些信息判断 server 中相关的资源消耗在哪里
一般来说事件可以是 函数调用、操作系统的等待、SQL 语句执行的阶段(如 parsing、sorting 阶段),或者整个 SQL 语句与 SQL 语句集合
事件采集可以方便的提供 server 中的相关存储引擎对磁盘文件、表 I/O、表锁等资源的同步调用信息 - performance_schema 中的事件和写入二进制日志中的事件(描述数据修改的 events)、事件计划调度程序(一种存储程序)的事件不同,performance_schema 事件记录的是 server 执行某些活动对某些资源的消耗、耗时、这些活动执行的次数等情况
- performance_schema 中的事件只记录在本地,这些表中的数据发生变化时不会被写入 binlog 中,也不会通过复制机制被复制到其他 server 中
- 当前活跃事件、历史事件和事件摘要相关的表中记录的数据,能够提供某个事件的执行次数、使用时长,进而分析某个特定线程、特定对象(如 mutex 或 file)相关联的活动
- performance_schema 存储引擎使用 server 源代码中的监测点来实现某个事件数据的收集,对于 performance_schema 实现机制本身的代码没有相关的单独线程来检测
- 收集的事件数据存储在 performance_schema 的表中,这些表可以使用 select 语句查询,也可以使用 SQL 语句更新
- performance_schema 表中的数据不会持久化存储在磁盘中,而是保存在内存中,一旦服务器重启,这些数据就会丢失(包括配置表在内的整个 performance_schema 的所有数据)
- MySQL 支持的所有平台中事件监控功能都可用,但不同平台用于统计事件事件开销的计时器类型可能会有差异
- 提供了一种在数据库运行时实时检查 server 的内部执行情况的方法,performance_schema 数据库中的表使用 performance_schema 存储引擎
show processlist
- 查看连接的线程个数,观察是否有大量线程处于不正常状态或者其他不正常特征
- 属性
- id: session ID
- user: 操作的用户
- host:操作的主机
- db:操作的数据库
- command:当前状态
- info: 详细的 SQL 语句
- time:相应命令的执行时间
- state:命令执行状态