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. Redis主从复制(Master/Slave) 与哨兵模式

    Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...

  2. 使用idea写ssm的时候提示源文件夹中的文件找不到

    <context:property-placeholder location="classpath:db.properties"/>这一行idea提示找不到db.pro ...

  3. php缩放处理png和jpg图片

    本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理 <?php$target_width = 120; //目标图片宽度 $target_height = 150; //目标 ...

  4. 你的第一个接口测试:Python 接口测试

    前言: 首先我们先明确一个概念,什么叫接口.什么叫接口测试? 接口的全称叫[Application Programming Interface 又叫API],是提供应用程序与开发人员基于某软件或硬件得 ...

  5. 微信小程序和微信H5测试中易出Bug的点和注意事项

    一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...

  6. Spring学习(1):侵入式与非侵入式,轻量级与重量级

    一. 引言 在阅读spring相关资料,都会提到Spring是非侵入式编程模型,轻量级框架,那么就有必要了解下这些概念. 二. 侵入式与非侵入式 非侵入式:使用一个新的技术不会或者基本不改变原有代码结 ...

  7. 广东ACM省赛 E题

    题意: 输入一个P 使得存在一个一个N大于等于P, 并且存在m 等于 m/n * (m-1)/(n-1)=1/2. 思路 此题可以利用佩尔方程求解, 也可以打表解决.本次我解决利用的是佩尔方程(其实也 ...

  8. Python多重赋值

    可以将变量名视对象的一个链接 >>>foo1 = foo2 = 4.3 >>>foo1 is foo2 True >>>foo1 = 4.3 &g ...

  9. 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 ...

  10. hive on hbase 数据表关联

    有时,数据可以容易的存储在hive中,但是要导入到hbase里,可以不用写MR程序来操作,可以使用hive on hbase方式来创建相应的表关联关系来将hive中的数据导入到对应的hbase的表里, ...