目录
mysqldumpslow
介绍
汇总/分析慢查询日志文件,便于后续的优化
慢查询
介绍
因为各种原因,某些查询语句的执行时间超过设定的阈值
慢查询日志
将慢查询的相关信息记录下来的日志
系统变量
系统中与慢查询可能相关的变量:
其中:
- long_query_time -- 慢查询的阈值
- slow_query_log -- 是否开启慢查询日志
- slow_query_log_file -- 慢查询日志默认路径
慢日志文件命名规则:
- 当前主机名 + -slow + .log
使用
- 因为mysqldumpslow读取的是本地文件,所以不需要输入mysql账号密码
常用选项
-h -- 可以指定分析某台主机的慢日志(系统级别):
-i -- 指定mysql服务器实例的名称(mysql级别):
-s -- 不同的排序方式:
显示结果
规则
通常情况下,会将相似的查询分成一组显示,并且进行摘要输出
- 用N / "S"代替掉原本语句中的数字 / 字符串
类似于这样的效果:
如果想要看到真实的值,可以使用-a选项
示例
一条记录包含的信息:
- 语句执行次数 单次总耗时 加锁/释放锁的耗时 获取数据的耗时 用户
- sql语句
mysqlbinlog
介绍
处理二进制日志文件的程序
- 可以以文本格式显示文件中的内容
二进制日志文件
介绍
每个对数据库/数据做修改的操作,都会被描述成一个事件
- 每个事件以二进制的形式记录在一个文件中,这个文件就是binlog
用处
主要用于实现主从复制
- 假设我们有一个主节点(用于写入),两个从节点(用于读取),因为读取的场景会更多
- 主节点会在每次修改数据时,把对应的事件记录在binlog中
- 从节点通过读取binlog,将二进制->sql语句,从而达到主从同步的效果
默认保存路径
- 目录下有很多binlog.00000n的文件 -- 这些都是二进制文件,保存了事件的具体内容
- n不断递增
一条事件的内容
每个事件以at + 数值 开头
- 代表这个事件在日志文件中的起始偏移量
server id
- 默认服务id = 1
- 如果在集群环境下,就要为每台主机取不同的id值
end_log_pos
- 这个事件在日志文件中的结束偏移量
table id
- 表id
- 系统会维护每张表,表id作为标志符
使用
这个程序也是访问的本地文件,所以不需要mysql账号密码,直接使用即可
常用选项
--offset -o
- 跳过日志的前n条记录
mysqlslap
介绍
一个诊断程序
- 用于模拟mysql服务器的客户端负载,并报告每个阶段的时间
注意事项
- --create + sql语句
- --query + .sql文件
在这个文件中,默认情况下,换行符作为每条sql语句的分隔符
- 也就是需要一行一个sql
使用
示例
测试报告