转 MySQL问题排查工具介绍
原文链接: http://mrchenatu.com/2017/03/24/mysql-tool/
本总结来自美团内部分享,屏蔽了内部数据与工具
知识准备
索引
- 索引是存储引擎用于快速找到记录的一种数据结构
- B-Tree,适用于全键值,键值范围或键最左前缀:(A,B,C): A, AB, ABC,B,C,BC
- 哪些列建议创建索引:WHERE, JOIN , GROUP BY, ORDER BY等语句使用的列
- 如何选择索引列的顺序:
- 经常被使用到的列优先
- 选择性高的列优先:选择性=distinct(col)/count(col)
- 宽度小的列优先:宽度 = 列的数据类型
慢查询
原因
- 未使用索引
- 索引不优
- 服务器配置不佳
- 死锁
- …
命令
看版本
mysql -V 客户端版本 select version 服务器版本
explain 执行计划,慢查询分析神器
type
- const,system: 最多匹配一个行,使用主键或者unique进行索引
- eq_ref: 返回一行数据,通常在联接时出现,使用主键或者unique索引(内表索引连接类型)
- ref: 使用key的最左前缀,且key不是主键或unique键
- range: 索引范围扫描,对索引的扫面开始于某一点,返回匹配的行
- index:以索引的顺序进行全表扫描,优点是不用排序,缺点是还要全表扫描
- all: 全表扫描 no no no
extra
- using index : 索引覆盖,只用到索引,可以避免访问表
- using where: 在存储引擎检索行后再做过滤
- using temporary:使用临时表,通常在使用GROUP BY,ORDER BY 时出现(严禁)
- using filesort: 到非索引顺序的额外排序,当order by col未使到索引时发生(严禁)
- possible_keys: 显示查询可能使用的索引
- key:优化器决定采用哪个索引来优化对该表的访问
- rows:MySQL估算的为了找到所需行要检索的数,优化选择key的参考 (不是结果集的行数)
- key_len: 使用的索引左前缀的长度(字节数),亦可理解为使用了索引中哪些字段
- 定长字段,int占4个字节、date占3个字节、timestamp占4个字节,char(n)占n个字节
- NULL的字段:需要加1个字节,因此建议尽亮设计为NOT NULL
- 变长字段varchar(n),则需要 (n 编码字符所占字节数 + 2 、)个字节,如utf8编码的, 个字符
占 3个字节,则 度为 n 3 + 2
- 强制使用索引: USE INDEX (建议)或 FORCE_INDEX (强制)
SHOW 命令
- show status
- 查看select语句的执行数 show global status like ‘Com_select’;
- 查看慢查询的个数 show global status like ‘Slow_queries’;
- 表扫描情况 show global status like ‘Handler_read%’; Handler_read_rnd_next / com_select > 4000 需要考虑优化索引
- show variables
- 查看慢查询相关的配置 show variables like ‘long_query_time’;
- 将慢查询时间线设置为2s set global long_query_time=2;
- 查看InnoDB缓存 show variables like ‘innodb_buffer_pool_size’;
- 查看InnoDB缓存的使用状态 show status like ‘Innodb_bufferpool%’; 缓存命中率=(1-Innodb_buffer_pool_reads/ Innodb_buffer_pool_read_requests) 100%;缓存率=(Innodb_buffer_pool_pages_data/ Innodb_buffer_pool_pages_total)100%
- SHOW PROFILES;该命令可以trace在整个执行过程中各资源消耗情况(会话级)
- SHOW PROCESSLIST; 查看当前有哪些线程正在运行,并且处在何种状态
- SHOW ENGINE INNODB STATUS; 可用于分析死锁,但需要super权限
转 MySQL问题排查工具介绍的更多相关文章
- MySQL问题排查工具介绍
本总结来自美团内部分享,屏蔽了内部数据与工具 知识准备 索引 索引是存储引擎用于快速找到记录的一种数据结构 B-Tree,适用于全键值,键值范围或键最左前缀:(A,B,C): A, AB, ABC,B ...
- 简要介绍Apache、php、mysql安装和工具介绍
1 安装Apache 网站:www.Apache.org下载相应的Apache,目前下载了近期的:httpd-2.2.15-win32-x86-openssl-0.9.8msi 安装简要步骤如下图: ...
- MySQL之IDE工具介绍及数据备份
一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...
- MySQL数据库----IDE工具介绍及数据备份
一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...
- 十三、MySQL之IDE工具介绍及数据备份
一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...
- mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
一.概述 物理备份和恢复又分为冷备份和热备份.与逻辑备份相比,它最大优点是备份和恢复的速度更快.因为物理备份的原理都是基于文件的cp. 1.1 冷备份 冷备份就是停掉数据库服务.这种物理备份一般很少使 ...
- MySQL Flashback 工具介绍
MySQL Flashback 工具介绍 DML Flashback 独立工具,通过伪装成slave拉取binlog来进行处理 MyFlash 「大众点点评」 binlog2sql 「大众点评(上海) ...
- MySql点点滴滴(一)之可视化工具介绍
以下的文章主要介绍的是10个可以简化开发过程的MySQL工具,其中包括MySQL Workbench.phpMyAdmin.Aqua Data Studio,以及SQLyog与MYSQL Front等 ...
- Android系统性能调优工具介绍
http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...
随机推荐
- TaskFactory设置并发量
Task对象很多人知道了(使用Task代替ThreadPool和Thread, C#线程篇—Task(任务)和线程池不得不说的秘密(5)) 相对的还有TaskScheduler 这个调度器,可以自定义 ...
- Spark的运行模式(1)--Local和Standalone
Spark一共有5种运行模式:Local,Standalone,Yarn-Cluster,Yarn-Client和Mesos. 1. Local Local模式即单机模式,如果在命令语句中不加任何配置 ...
- sell 项目 订单表 设计 及 创建
1.数据库设计 2.订单表 创建 /** * 订单表 */ create table `order_master` ( `order_id` varchar(32) not null, `buyer_ ...
- JavaBean与XML转换——XStream使用笔记
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html 一:View层与Control层的数据交互 做过Web项目的人都知道,当对一个requ ...
- python模块之lib2to3(py2转py3自动化工具)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之lib2to3(py2转py3自动化工具) #http://tieba.baidu.com ...
- python之模块calendar(汇集了日历相关的操作)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #calendar日历模块 import calendar #3个大类: calendar.Calendar( ...
- ISCSI测试
Initiator为应用客户端,服务端Target包括设备服务器端和队列管理两部分.服务端两种共享方式:1.在服务端共享分区2.在服务端以文件方式作为共享设备共享出来 构建ISCSI网络存储 测试环境 ...
- WD backup西部盘数据备份
西部数据(WD),硬盘备份数据!防止数据丢失.损坏.... 起因: 电脑上存储很多资料,之前有500G的东芝硬盘(现在插头不灵敏),故决定换个好点的1T硬盘.电脑在一夜间打不开,不能识别硬盘!怎么重启 ...
- 转:如何编译delta3d
回头看,自上学以来,做虚拟现实.三维地理信息系统已有六个年头.为了节省花费在编码上的精力,编程应用的API函数也由opengl变成了OpenSceneGraph,但还是花费了很多气力,为了更好的提高开 ...
- android.database.sqlite.SQLiteException: near "FROM"
07-20 00:19:30.496: E/JavaBinder(6807): *** Uncaught remote exception! (Exceptions are not yet su ...