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学习笔记的更多相关文章

  1. 《MySQL必知必会》学习笔记——第30章 改善性能

    本章将付息与MySQL性能有关的某些要点. 30.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整.试验以改善DBMS性能之上.在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及 ...

  2. 好书推荐之Mysql三剑客 :《高性能Mysql》、《Mysql技术内幕》、《数据库索引设计与优化》

    Mysql三剑客系列书籍: 大佬推荐 首先推荐<高性能 MySQL>,这本书是 MySQL 领域的经典之作,拥有广泛的影响力.不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习.不 ...

  3. mac - MAC电脑安装Mysql服务器和Navicat for mysql客户端

        1.下载链接 Navicat for mysql客户端 链接: https://pan.baidu.com/s/1dGbzgbR 密码: i43g Mysql服务器 链接: https://p ...

  4. MAC电脑安装Mysql服务器和Navicat for mysql客户端

    1.下载链接 Navicat for mysql客户端 链接: https://pan.baidu.com/s/1dGbzgbR 密码: i43g Mysql服务器 链接: https://pan.b ...

  5. mysql设置更改root密码、mysql服务器的连接、mysql常用命令

     1.设置更改root密码 查看mysql 启动与否,若没启动就运行:/usr/local/mysql56/bin/mysqlps aux |grep mysql  或 netstat -tulnp ...

  6. 《MySQL必知必会》学习笔记——附录A MySQL入门

    附录A MySQL入门 如果你是MySQL的初学者,本附录是一些需要的基础知识. A.1 你需要什么 为使用MySQL和学习本书中各章的内容,你需要访问MySQL服务器和客户机应用(用来访问服务器的软 ...

  7. 《MySQL必知必会》学习笔记

    数据库:数据库是一种以某种有组织的方式存储的数据集合.其本质就是一个容器,通常是一个或者一组文件. 表:表示一种结构化的文件,可用来存储某种特定类型的数据. 模式:描述数据库中特定的表以及整个数据库和 ...

  8. 《MySQL必知必会》学习笔记整理

    简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...

  9. mysql导出导入数据库和表学习笔记

    一.mysql导出数据库和表 1.导出单个数据库 mysqldump [-h Host] -u Username -p [PASSWORD] db_name > db_name.sql 2.导出 ...

随机推荐

  1. 【SpringCloud】第十一篇: 断路器监控(Hystrix Dashboard)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  2. Phaser Matter Collision Plugin 碰撞插件 -- iFiero技术分享

    collision-simple-demo Phaser 自带的Arcade虽然易用,但复杂的物理碰撞明显就不够用了,于是Matter等物理引擎还是不得不学的,以下是Matter物理体碰撞的一个插件, ...

  3. 240. 搜索二维矩阵 II

    二维数组搜索 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ...

  4. javascript 强制转换规则 boolean 布尔值类型

    摘自 <你不知道的Javascript(中卷)> p55 一句话简述, 假值表以外的值均可以认为是真值,部分浏览器可能自定义了假值表以外的假值,并不符合W3C规范,需要特殊对待. 首先也是 ...

  5. C#中的Split用法以及详解

    一.String.Split方法提供了如下6个重载函数: 名称 说明 String.Split (Char[]) 返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组. ...

  6. Segments CodeForces 909B (找规律)

    Description You are given an integer N. Consider all possible segments (线段,划分)on the coordinate axis ...

  7. 模仿qq列表信息滑动删除效果

    这个效果的完成主要分为两个部分 自定义view作为listview的列表项 一个view里面包括 显示头像,名字,消息内容等的contentView和滑动才能显示出来的删除,置顶的右边菜单menuVi ...

  8. VS2013安装及单元测试

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ0AAAIlCAIAAACBzLJwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAE ...

  9. TCP系列47—拥塞控制—10、FACK下的快速恢复与PRR

    一.概述 FACK下的重传我们在之前的重传部分已经进行了介绍,这里简单介绍一下随着FACK提出的拥塞控制算法的改进及随后的进一步改进. 从我们之前介绍的RFC2582和RFC5681中可以看到,快速恢 ...

  10. inotify 工具 是一种强大的、细粒度的、异步文件系统监控机制

    前言:Inotify是一种强大的.细粒度的.异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性.读写属性.权限属性.删除创建.移动等操作,也就是可以监控文件发生的一切变化. ...