第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.导出 ...
随机推荐
- Redis主从复制(Master/Slave) 与哨兵模式
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...
- 使用idea写ssm的时候提示源文件夹中的文件找不到
<context:property-placeholder location="classpath:db.properties"/>这一行idea提示找不到db.pro ...
- php缩放处理png和jpg图片
本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理 <?php$target_width = 120; //目标图片宽度 $target_height = 150; //目标 ...
- 你的第一个接口测试:Python 接口测试
前言: 首先我们先明确一个概念,什么叫接口.什么叫接口测试? 接口的全称叫[Application Programming Interface 又叫API],是提供应用程序与开发人员基于某软件或硬件得 ...
- 微信小程序和微信H5测试中易出Bug的点和注意事项
一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...
- Spring学习(1):侵入式与非侵入式,轻量级与重量级
一. 引言 在阅读spring相关资料,都会提到Spring是非侵入式编程模型,轻量级框架,那么就有必要了解下这些概念. 二. 侵入式与非侵入式 非侵入式:使用一个新的技术不会或者基本不改变原有代码结 ...
- 广东ACM省赛 E题
题意: 输入一个P 使得存在一个一个N大于等于P, 并且存在m 等于 m/n * (m-1)/(n-1)=1/2. 思路 此题可以利用佩尔方程求解, 也可以打表解决.本次我解决利用的是佩尔方程(其实也 ...
- Python多重赋值
可以将变量名视对象的一个链接 >>>foo1 = foo2 = 4.3 >>>foo1 is foo2 True >>>foo1 = 4.3 &g ...
- How to pass an Amazon account review
Have you ever sold products on Amazon? How about sold so much within the first week that amazon deci ...
- hive on hbase 数据表关联
有时,数据可以容易的存储在hive中,但是要导入到hbase里,可以不用写MR程序来操作,可以使用hive on hbase方式来创建相应的表关联关系来将hive中的数据导入到对应的hbase的表里, ...