第13章 MySQL服务器的状态--高性能MySQL学习笔记
13.1 系统变量 -- 服务器配置变量
MySQL通过SHOW VARIABLES SQL命令显示许多系统变量。
13.2 状态变量--SHOW STATUS
SHOW STATUS 命令会在一个由两列(名称/值)组成的表格里显示服务器状态变量。这些变量都是只读的。
SHOW STATUS默认显示会话变量,SHOW GLOBAL STATUS显示全局变量。
也可以从INFORMATION_SCHEMA.GLOBAL_STATUS和INFORMATION_SCHEMA.SESSION_STATUS表里取出。
32位系统很多计数器会归零。64位很少出现。
查看这些变量的最好办法是:在时长为几分钟的时间段里看它们改变了多少。
下面简要介绍,所有变量还得看MySQL手册。
13.2.1 线程和链接统计信息
Connections, Aborted_connects......
eg: 每秒创建线程数(Threads_created/Uptime)。如果这个值跟0没差太多,说明线程缓冲区太小。
13.2.2 二进制日志的状态
Binlog_cache_use 和Binlog_cache_disk_use状态变量可以显示二进制日志保存了多少个事务。
13.2.3 命令计数器
Com_*变量记录了已发出的每一种SQL或者C API命令的数目。
eg:Com_select记录SELECT语句的数目,
Com_change_db记录使用USE或者通过C API改变一条默认连接数据库的次数。
Com_admin_commands状态变量可能很大,它不仅记录管理命令的数目,也记录发给MySQL实例的ping请求数量。
Questions记录了服务器受到的查询和命令的总数。因为缓存等因素,Com_*变量的总数并不完全相等。
13.2.4临时文件和表
查看记录MySQL创建临时表和文件次数的变量:
mysql> SHOW GLOBAL STATUS LIKE 'Created_tmp%';
13.2.5 Handler操作
Handler API是MySQL与存储引擎之间的接口。Handler_*变量记录了Handler的操作次数。
研读Handler_*变量可以让你看清楚服务器做得最多的是哪几种工作。
13.2.6 MyISAM索引键缓冲区
Key_*变量包含了MyISAM索引键缓冲区的度量值和计数器。
13.2.7文件描述符
Open_*变量。
如果主要使用MyISAM引擎,那查看文件描述符的统计信息就很重要。
13.2.8 查询缓存
通过Qcache_*状态变量来检查查询缓存。
13.2.9 各种类型的SELECT
Select_*变量记录了各种类型SELECT查询的次数。
Select_range:一种联接的数目,该联接在第一个表的索引的指定范围内做扫描。
Select_scan:对第一个表做全表扫描的联接数目。
Select_full_range_join:....
Select_range_check:.这种查询计划代价很高。
Select_full_join:很糟糕。
13.2.10 排序
Sort_*变量
13.2.11表锁定
Table_locks_immediate,Table_locks_waited......
13.2.12 Secure Socket Layer (SSL)
Ssl_*变量显示服务器是如何配置SSL的。
13.2.13 InnoDB特有变量
InnoDB_*变量显示的是包含在SHOW INNODB STATUS的一些数据。
在低版本(5.0)有副作用:创建全局锁,遍历InnoDB缓存池,阻塞其他线程,知道锁释放。
13.2.14 Plug-in特有得变量
插件式存储引擎-相关变量
13.2.15 其他
Delayed_*, Not_flushed_delayed_rows
这些变量INSERT SELAYED查询的计数器和度量值
Last_query_cost
查询优化器的查询计划在最近一次执行查询时的开销。
Ndb_*
NDB Cluster的配置信息(如果是正确配置的话)
Slave_*
复制从服务器时启用
Tc_log_*
记录服务器被用作XA事务协调器的次数
Uptime
服务器正常运行的时间,以秒为单位
想了解系统总体工作负荷最好途径就是比较一组相关的状态变量。
13.3 SHOW INNODB STATUS
在 SHOW ENGINE INNODB STATUS(或:SHOW INNODB STATUS)的输出里,InnoDB存储引擎显示出了大量的内部信息。
它输出的就是单独的字符串。它分为很多节,每一节对应了InnoDB存储引擎不同部分的信息。
ps:innodb把64位数字分两部分打印:高32位和低32位,例如事务ID,TRANSACTION 0 3793469
13.3.1 头部信息
eg: Per second averages calculated from the last 45 seconds
每秒平均从最后45秒计算
......
13.3.2 SEMAPHORE --信号量
如果有高并发工作负荷,就需要关注这一段信号量。
它包含了两种数据: 1 时间计数器 2 当前等待线程的列表
OS WAIT ARRAY INFO: reservation count 4, signal count 4:
操作系统等待阵列信息,是一个“插槽”式的阵列,InnnDB保留了阵列里的一些插槽给信号量使用,操作系统用这些信号量给线程发送信号,使线程可以继续运行。reservation count 显示InnoDB分配插槽的额度,signal count 衡量的是线程通过阵列得到信号的频度。
Mutex spin waits 0, rounds 1750203, OS waits 40912:
跟互斥量相关的几个计数器
RW-shared spins 197079, OS waits 91344; RW-excl spins 38238, OS waits 258:
显示读/写共享和排斥锁的计数器
......
13.3.3 LATEST FOREIGN KEY ERROR --外键错误
......
13.3.4 LATEST DETECTED DEADLOCK -- 服务器内死锁
......
13.3.5 TRANSACTION
InnoDB事务的一些摘要信息,它们跟随在当前活动事务目录之后。
Trx id counter 0 10209388:
当前事务的ID,它是一个系统变量,每创建一个新事务就会累加。
Purge done for trx's n:o < 0 10208813 undo n:o < 0 0:
这是InnoDB清除旧版本MVCC行时所用的事务ID。通过这个值和当前事务ID的比较,你会看到有多少老版本的数据已经被清除掉了。.......
InnoDB清除进程正在使用的撤销日志编号: 如果是" 0 0 "说明清除进程处于空闲状态。
History list length 594:
历史记录长度,它就是位于InnoDB数据文件的撤销空间里的未清除事务的数目。当一个事务执行了更新并提交后,这个数字就会累加。当清除进程移除一个旧版本数据时,它就会递减。
Total number of lock structs in row lock hash table 0:
锁结构的数目。每个锁结构经常持有多个行锁。
头部信息之后就是一个事务列表。
---TRANSACTION 0 0, not started, process no 2119, OS thread id 1186466112:
以事务ID和状态开始,......
MySQL thread id 14236333, query id 82167872 127.0.0.1 root:
mysql进程ID,内部查询码等其他信息......
......
13.3.6 FILE I/O -- I/O helper 线程的状态,用性能计数器的方式来表达:
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread) //插入缓冲区线程--负责插入缓冲区的合并
I/O thread 1 state: waiting for i/o request (log thread) //日志线程--负责异步的日志刷新
I/O thread 2 state: waiting for i/o request (read thread) //读线程,负责读前置(Read-ahead)的操作,预测InnoDB将要使用的数据,并将他们预读进来
I/O thread 3 state: waiting for i/o request (write thread) //写线程--刷新 脏 缓冲区
//第8到10行显示的是每个helper线程还没完成的操作数目
Pending normal aio reads: 0, aio writes: 0,
ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
3021 OS file reads, 1175492 OS file writes, 575175 OS fsyncs //读,写及fsync()调用的执行次数
//第12行显示的是在头部信息指明的那段时间,平均每秒执行各种操作的次数
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
13.3.7 INSERT BUFFER AND ADAPTIVE HASH INDEX:
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, //插入缓冲区的大小
15 inserts, 15 merged recs, 15 merges //显示了InnoDB已经做了多少次缓冲区操作
Hash table size 2212699, used cells 57809, node heap has 88 buffer(s) //自适应哈希索引的状态
64.93 hash searches/s, 30.33 non-hash searches/s //根据头部信息期限内,散列索引查找次数和非散列索引查找次数
13.3.8 LOG
---
LOG
---
Log sequence number 0 1259958998 //当前日志的顺序号
Log flushed up to 0 1259958998 //日志已经刷新到的点位
Last checkpoint at 0 1259958998 //最近的一个检查点
//下面两行显示了还未完成的日志操作和统计信息
0 pending log writes, 0 pending chkp writes
553796 log i/o's done, 0.00 log i/o's/second
13.3.9 BUFFER POOL AND MEMORY
----------------------
BUFFER POOL AND MEMORY
----------------------
//InnoDB申请内存总数,以及其中有多少是在附加内存池申请到的
Total memory allocated 1239085970; in additional pool allocated 16324352
//第5到8行显示了缓冲池的度量值,以页为单位。
Buffer pool size 65536
Free buffers 55165
Database pages 10283
Modified db pages 0 //显示缓冲池容纳脏页的数目
//第9到10行显示了未完成的读和写的数目, LRU(最少最近使用)
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages read 3406, created 49455, written 676980 //显示了InnoDB已经读,创建,写了多少页
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000 //缓冲池命中率
13.3.10 ROW OPERATIONS 显示 row operations 及其它各色各样的InnoDB统计信息
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue //显示InnoDB有多少条线程
1 read views open inside InnoDB //InnoDB已经打开了多少个读视图
Main thread process no. 2119, id 1168361792, state: waiting for server activity //内核主线程状态
// 7,8行显示了行插入,更新,删除和读取次数的统计信息,以及这些数值每秒平均值
Number of rows inserted 228379, updated 101797, deleted 2734, read 1311217263
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 94.26 reads/s
13.4 SHOW PROCESSLIST -当前正连接到MySQL的线程列表
Command 和 State列救市线程真正显示‘状态’的地方。
SHOW FULLPROCESSLIST 显示每一条查询的全部文本。
13.5 SHOW MUTEX STATUS
InnoDB互斥量的细节信息,通常用于深入观察系统的伸缩性和并发性的问题。
在代码里,每一个互斥量保护着一块临界区。
......
13.6 复制的状态
MySQL有几个命令是用于监控复制的。......
13.7 INFORMATION_SCHEMA
INFORMATION_SCHEMA数据库里是一套按照SQL标准定义的系统视图。
许多视图对应于MySQL的SHOW命令。
第13章 MySQL服务器的状态--高性能MySQL学习笔记的更多相关文章
- 《MySQL必知必会》学习笔记——第30章 改善性能
本章将付息与MySQL性能有关的某些要点. 30.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整.试验以改善DBMS性能之上.在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及 ...
- 好书推荐之Mysql三剑客 :《高性能Mysql》、《Mysql技术内幕》、《数据库索引设计与优化》
Mysql三剑客系列书籍: 大佬推荐 首先推荐<高性能 MySQL>,这本书是 MySQL 领域的经典之作,拥有广泛的影响力.不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习.不 ...
- mac - MAC电脑安装Mysql服务器和Navicat for mysql客户端
1.下载链接 Navicat for mysql客户端 链接: https://pan.baidu.com/s/1dGbzgbR 密码: i43g Mysql服务器 链接: https://p ...
- MAC电脑安装Mysql服务器和Navicat for mysql客户端
1.下载链接 Navicat for mysql客户端 链接: https://pan.baidu.com/s/1dGbzgbR 密码: i43g Mysql服务器 链接: https://pan.b ...
- mysql设置更改root密码、mysql服务器的连接、mysql常用命令
1.设置更改root密码 查看mysql 启动与否,若没启动就运行:/usr/local/mysql56/bin/mysqlps aux |grep mysql 或 netstat -tulnp ...
- 《MySQL必知必会》学习笔记——附录A MySQL入门
附录A MySQL入门 如果你是MySQL的初学者,本附录是一些需要的基础知识. A.1 你需要什么 为使用MySQL和学习本书中各章的内容,你需要访问MySQL服务器和客户机应用(用来访问服务器的软 ...
- 《MySQL必知必会》学习笔记
数据库:数据库是一种以某种有组织的方式存储的数据集合.其本质就是一个容器,通常是一个或者一组文件. 表:表示一种结构化的文件,可用来存储某种特定类型的数据. 模式:描述数据库中特定的表以及整个数据库和 ...
- 《MySQL必知必会》学习笔记整理
简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...
- mysql导出导入数据库和表学习笔记
一.mysql导出数据库和表 1.导出单个数据库 mysqldump [-h Host] -u Username -p [PASSWORD] db_name > db_name.sql 2.导出 ...
随机推荐
- git分支在团队中的使用
须知 在介绍分支常用操作之前 我们需要知道几点: 1.主干不允许做任何修改结构或者业务的操作. 有两种情况可以修改主干: 就是当前主干已经是有问题的,合并后出问题发布不了. 修改与业务无关的配置文件, ...
- 添加jQuery方法解析url查询部分
Web前端不同页面间传值可以使用 cookies.localStorage 和 sessionStorage 等本地存储. 但是,今天我们尝试使用 url 查询,假设我们要传递字符串 str 到 mo ...
- 【python 3.6】笨办法取出列表中的字典的value
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' x = {'RegionSet': [{' ...
- linux中使用wget设置参数防止中文乱码问题
在linux中一般会用到wget命令来请求远程的某个文件,此时,文件中会有一些中文字符或者中文汉字,要保持不出现"乱码"就需要在后面加上参数,如下图所示: 其中的 --restri ...
- 子元素设置margin-top后,父元素跟随下移的问题
子元素设置margin-top后,父元素跟随下移的问题 <!DOCTYPE html> <html lang="en"> <head> < ...
- 20162328蔡文琛 Java课程总结
20162328 2016-2017-2<程序设计与数据结构>课程总结 一.每周作业.结对编程博客的链接汇总 预备作业01 20162328:表达对专业的期许.浅谈师生关系.对未来学习任务 ...
- Java微笔记(9)
使用 Date 和 SimpleDateFormat 类表示时间 处理日期和时间的相关数据,可以使用 java.util 包中的 Date 类 使用 Date 类的默认无参构造方法创建出的对象就代表当 ...
- ubuntu16.04卸载火狐,Amazon
一.卸载火狐: . dpkg --get-selections |grep firefox .sudo apt-get purge firefox unity-scope-firefoxbookmar ...
- vs中如何使用NuGet
在vs中如何打开NuGet? 1.工具→NuGet程序包管理器→程序包管理控制台 2.没有的话,就去 工具→扩展和更新 搜索nuget 如果你点击工具,没看到Nuget这些字样,请注意汉化名字为 ...
- Struts2(六)
以下内容是基于导入struts2-2.3.32.jar包来讲的 1.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表 ...