数据库MySQL的运行情况主要是检查什么_mysql 运行状态分析 运行故障排查实例
目录
一、优化概述
二、查询与索引优化分析
1性能瓶颈定位
Show命令
慢查询日志
explain分析查询
profiling分析查询
2索引及查询优化
一、优化概述
MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。
除了服务器硬件的性能瓶颈,对于MySQL系统本身,我们可以使用工具来优化数据库的性能,通常有三种:使用索引,使用EXPLAIN分析查询以及调整MySQL的内部配置。
二、查询与索引优化分析
在优化MySQL时,通常需要对数据库进行分析,常见的分析手段有慢查询日志,EXPLAIN 分析查询,profiling分析以及show命令查询系统状态及系统变量,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
show 命令
我们可以通过show命令查看MySQL状态及变量,找到系统的瓶颈:
Mysql> show status ——显示状态信息(扩展show status like ‘XXX’)
Mysql> show variables ——显示系统变量(扩展show variables like ‘XXX’)show variables like "slow%"
Mysql> show innodb status ——显示InnoDB存储引擎的状态
Mysql> show processlist ——查看当前SQL执行,包括执行状态、是否锁表等
Shell> mysqladmin variables -u username -p password——显示系统变量
Shell> mysqladmin extended-status -u username -p password——显示状态信息
慢查询日志
慢查询 可以记录执行时间比较慢的语句 和 未使用索引的语句
一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句
1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
2,long_query_time 当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短(单位秒)。
3,slow_query_log_file 记录日志的文件名。
4,log_queries_not_using_indexes 这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。
explain分析查询
使用 EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。通过explain命令可以得到:
– 表的读取顺序
– 数据读取操作的操作类型
– 哪些索引可以使用
– 哪些索引被实际使用
– 表之间的引用
– 每张表有多少行被优化器查询
SQL
?
EXPLAIN字段:
id: 查询序号即为sql语句执行的顺序
select_type
select类型,它有以下几种值
2.1 simple 它表示简单的select,没有union和子查询
2.2 primary 最外面的select,在有子查询的语句中,最外面的select查询就是primary,上图中就是这样
2.3 union union语句的第二个或者说是后面那一个.现执行一条语句,explain
Table:显示这一行的数据是关于哪张表的
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
key:实际使用的索引。如果为NULL,则没有使用索引。MYSQL很少会选择优化不足的索引,此时可以在SELECT语句中使用USE INDEX(index)来强制使用一个索引或者用IGNORE INDEX(index)来强制忽略索引
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows:MySQL认为必须检索的用来返回请求数据的行数
type:这是最重要的字段之一,显示查询使用了何种类型。从最好到最差的连接类型为system、const、eq_reg、ref、range、index和ALL
Extra:关于MYSQL如何解析查询的额外信息,主要有以下几种
Extra:参数说明
using index:只用到索引,可以避免访问表.
using where:使用到where来过虑数据. 不是所有的where clause都要显示using where. 如以=方式访问索引.
using tmporary:用到临时表
using filesort:用到额外的排序. (当使用order by v1,而没用到索引时,就会使用额外的排序)
range checked for eache record(index map:N):没有好的索引.
type:参数说明
system、const:可以将查询的变量转为常量. 如id=1; id为 主键或唯一键.
eq_ref:访问索引,返回某单一行的数据.(通常在联接时出现,查询使用的索引为主键或惟一键)
ref:访问索引,返回某个值的数据.(可以返回多行) 通常使用=时发生
range:这个连接类型使用索引返回一个范围中的行,比如使用>或
index:以索引的顺序进行全表扫描,优点是不用排序,缺点是还要全表扫描
ALL:全表扫描,应该尽量避免
profiling分析查询
通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。
如果觉得explain的信息不够详细,可以同通过profiling命令得到更准确的SQL执行消耗系统资源的信息。
profiling默认是关闭的。可以通过以下语句查看 select @@profiling;
打开功能: mysql>set profiling=1; 执行需要测试的sql 语句:
开启后执行了sql语句 就可以通过show profiles;命令查看执行时间
SQL
?
mysql> show profiles\G; 可以得到被执行的SQL语句的时间和ID
mysql>show profile for query 1; 得到对应SQL语句执行的详细信息
Bash
出处:www.xingzuji.com
数据库MySQL的运行情况主要是检查什么_mysql 运行状态分析 运行故障排查实例相关推荐
- mysql是怎样运行的 从根儿 百度云_MySQL 是怎样运行的:从根儿上理解 MySQL|完结|百度云下载...
-代码开始- /MySQL 是怎样运行的:从根儿上理解 MySQL [13.8M] ┣━━[天下无鱼][shikey.com]0万里长征第一步(非常重要) -- 如何愉快的阅读本小册(01).md [ ...
- 以云数据库MySQL为例深入分析对比:华为云更安全还是腾讯云更安全?
前言 日新月异的今天,互联网,云计算已经被广泛的应用到生活的方方面面上.对个人而言,我们时时刻刻都需要从网络获取信息,在网上冲浪.而对于企业而言,数据上云,应用上云已经成了一个不可逆的趋势. 而华为云 ...
- mysql 云无忧ps教程_华为云数据库MySQL一键开通读写分离,无忧应对企业业务高峰情景...
业务大促,订单暴增,网站流量暴涨几倍,数据库服务器容量又要扛不住了,眼睁睁看着生意白白溜走,再苦逼也无法解决,"肿"么办? 别担心,一键开通读写分离,而且只需一个连接地址,就能让您 ...
- 韩国mysql化妆品_jsp70279化妆品护肤品购物网站 双数据库 mysql版
jsp70279化妆品护肤品购物网站 双数据库 mysql版 该设计有演示视频 100%能运行 买重包换 保密发送 一校一份 编号: jsp70279 语言+数据库: jsp+sql2008+mysq ...
- 药品进销存系统mysql_jsp70039药品进销存管理系统 双数据库 mysql版
jsp70039药品进销存管理系统 双数据库 mysql版 该设计有演示视频 100%能运行 买重包换 保密发送 一校一份 编号: jsp70039 语言+数据库: jsp+sql2008+mysql ...
- mysql购买服务_云数据库MySQL购买须知
计费说明 滴滴云数据库MySQL支持高性价比的按时计费和包年包月两种付费方式,包年包月在价格上有更大的优惠,可根据使用场景选择或调整.每种方式在行业中都具有可观的服务和成本优势,保证用户最大程度的享受 ...
- 如何查看mysql备份的情况_MySQL数据库备份详解(示例代码)
原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...
- mysql not exists无效_分析MySQL中哪些情况下数据库索引会失效
要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain. 一.explain 用法:explain +查询语句. id:查询语句的序列号,上面图片中只有一个selec ...
- hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决
因为有了新电脑所以又要解决乱码问题,在网上找帖子很是头疼,还是自己总结一下比较好. hibernate插入Mysql数据库出现中文乱码情况从这几个方面解决:有了这几方面以后使用mysql的乱码问题就不 ...
最新文章
- 前途到底是网络工程还是程序设计
- MyEclipse中Maven Web项目部署路径设置
- 走台阶 OR 台阶走——《狂人C》习题解答14(第三章习题4)
- 【假期重磅福利】更新三个Oracle系列课程,共153课时,最低免费获取
- 春节档总票房已破50亿 情人节单日票房超14亿
- vfp 修改本机时间_时间旅行调试
- 读书日当天冲上销量榜Top1和Top3,来听听携程人写书背后的故事
- 简单游戏(easygame)
- cocos2dx 显示html,cocos2dx - 在游戏中显示HTML页面
- 永久关闭wps热点新闻的办法
- Python中sys.argv[]的用法简明解释
- 商家开通直播前需了解哪些市场数据?
- Prometheus学习系列(四十)之报警模板参考
- 八大基本排序(详解)
- Java并发工具类(三)Exchanger
- Unity2021接入讯飞语音听写(Android)
- JAVA 酒店预订系统
- 简单Java小程序----有界面ATM机
- 北京航空航天大学软件学院2021年保研复试流程介绍+经验分享
- 聚观早报|王慧文要做「中国版 OpenAI」;Temu斥资近亿元赞助超级碗