MySQL监控Innodb信息

这篇具有很好参考价值的文章主要介绍了MySQL监控Innodb信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Innodb监控

Innodb由于支持事务操作,是mysql中使用最多的存储引擎,所以如何监控Innodb存储引擎以进行性能优化是在使用mysql过程中遇到最多的,那么如何进行监控呢?

show engine

-- 显示innodb存储引擎状态的统计和配置信息
show engine innodb status;

展示的主要内容有
-----------------
BACKGROUND THREAD  --后台线程
-----------------
srv_master_thread loops: 19610306 srv_active, 0 srv_shutdown, 9705136 srv_idle  --统计Innodb启动后的活动
srv_master_thread log flush and writes: 29312902  --写入和刷新日志的次数
----------
SEMAPHORES  --信号量包含了线程等待互斥锁或读写锁的信息
----------
OS WAIT ARRAY INFO: reservation count 52795642  --os等待数组信息,分配插槽的次数
OS WAIT ARRAY INFO: signal count 57522728  --os等待数组信息,线程通过数组得到信号的次数
RW-shared spins 0, rounds 77349143, OS waits 9180114  --共享锁期间,读写锁存器上自旋等待个数,自旋循环迭代次数以及操作系统调用的等待个数
RW-excl spins 0, rounds 179767865, OS waits 2534243  --排他锁期间,读写锁存器上自旋等待个数,自旋循环迭代次数以及操作系统调用的等待个数
RW-sx spins 2068750, rounds 40171680, OS waits 844522  --共享排他锁期间,读写锁存器上自选等待个数,自旋循环迭代次数以及操作系统调用的等待个数
Spin rounds per wait77349143.00 RW-shared179767865.00 RW-excl, 19.42 RW-sx  --对于每一个互斥锁,操作系统调用等待的每一个自旋循环迭代个数
------------
TRANSACTIONS --包含所有当前正在执行的事务的信息
------------
Trx id counter 1888483436  --当前事务id
Purge done for trx s n:o < 1888483436 undo n:o < 0 state: running but idle --所有编号小于1888483436的事务都已经从历史记录列表中清除了,清除旧的MVCC行时所用的事务id,这个值与当前事务ID进行比较,就可以知道有多少老版本的数据未被清除
History list length 17 --历史列表的长度,位于Innodb数据文件的撤销空间里的页面的数目,如果事务执行了更新并提交,该数目就会增加,当清理进程移除旧版本数据时,该数目会减少
LIST OF TRANSACTIONS FOR EACH SESSION: 当前事务列表
---TRANSACTION 422068961001072, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068960999248, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961005632, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961013840, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961012016, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961010192, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961001984, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961000160, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961017488, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961011104, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961012928, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961004720, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961002896, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961003808, not started
0 lock struct(s), heap size 11360 row lock(s)
---TRANSACTION 422068961007456, not started
0 lock struct(s), heap size 11360 row lock(s)
--------
FILE I/O  --各种IO操作的Innodb内部线程以及执行了多少次IO操作
--------
-- 有四个线程
-- insert buffer thread 负责插入缓冲合并
-- log thread 负责异步刷日志
-- read thread 执行预读操作以尝试预先读取Innodb预感需要的数据
-- write thread 刷脏缓冲
I/O thread 0 state: waiting for completed aio requests (insert buffer thread--IO线程的状态
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: [0000] , aio writes: [0000] ,
 ibuf aio reads:, log i/o's:, sync i/o's:
Pending flushes (fsync) log0; buffer pool: 0 -- 挂起操作的信息,aio是指异步io
83934578288 OS file reads, 282688772 OS file writes, 190348192 OS fsyncs --innodb启动后的总统计信息
984.40 reads/s, 16384 avg bytes/read, 10.15 writes/s, 9.12 fsyncs/s --最后一次显示后的总统计信息
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX  --插入缓冲区与自适应散列统计信息
-------------------------------------
Ibuf: size 1, free list len 3078, seg size 30808815726 merges --在页中插入缓冲索引树的当前大小,空闲列表的长度,在包含插入缓冲树与头信息的文件段中已分配页的个数,被合并页的个数
merged operations:
 insert 6898371delete mark 38430046delete 1226485  --通过类型区分,索引页被执行合并操作的次数
discarded operations:
 insert 1019delete mark 0delete 0 --无须合并丢弃操作的数量
Hash table size 34673, node heap has 1 buffer(s)
Hash table size 34673, node heap has 74 buffer(s)
Hash table size 34673, node heap has 1 buffer(s)
Hash table size 34673, node heap has 1 buffer(s)
Hash table size 34673, node heap has 1 buffer(s)
Hash table size 34673, node heap has 2 buffer(s)
Hash table size 34673, node heap has 28 buffer(s)
Hash table size 34673, node heap has 7 buffer(s)
5203.54 hash searches/s, 128.14 non-hash searches/s --成功使用自适应散列索引查找的数量,当不能使用自适应索引时向下搜索B树的次数
---
LOG    --Innodb日志中活动信息
---
Log sequence number 319041331834 --当前日志序号
Log flushed up to   319041331699 -- 日志已经刷到的位置
Pages flushed up to 319033170877 
Last checkpoint at  319033170877  -- 上一个检查点,当前日志序列号LSN
0 pending log flushes, 0 pending chkp writes 
169033177 log i/o's done, 8.92 log i/o's/second --挂起的日志写入次数,挂起的检查点写入个数,innodb启动后的IO操作个数,从最近一次显示之后的每秒IO操作个数
----------------------
BUFFER POOL AND MEMORY   --Innodb缓冲池与内存使用情况
----------------------
Total large memory allocated 137428992 --分配的内存
Dictionary memory allocated 1204989 --被数据字典表与索引对象所占空间的字节数
Buffer pool size   8191 --缓冲池个数
Free buffers       1024 --空闲缓冲区个数
Database pages     7052 --当前缓冲区LRU队列的长度(分配用来存储数据库页的页数)
Old database pages 2583 --旧的LRU队列的长度
Modified db pages  530 --需要刷新的页面的数量(脏数据库页数)
Pending reads      0 --挂起读操作的个数
Pending writes: LRU 0flush list 0, single page 0 --通过LRU算法,等待刷新的页数
Pages made young 983912385not young 304833753259 --因为最近第一次被访问时,变成新页面的数目和没有变成新页面的数目
1.54 youngs/s, 16246.04 non-youngs/s -- 上述两个值每秒的速率
Pages read 83934649301, created 4135172, written 103030852 --读操作的页面数目,在缓冲区中创建但是没有读取的页面数目,写操作的页面数目
984.40 reads/s, 0.17 creates/s, 1.15 writes/s -- 上述值美妙的速率
Buffer pool hit rate 972 / 1000, young-making rate 0 / 1000 not 478 / 1000 --读取到的页面数与获得的缓冲池页面的比例,变为新页面的页面数与获得缓冲池页面的比例,没有变为新页面的页面数与获得缓冲池页面的比例
Pages read ahead 913.79/s, evicted without access 5.60/s, Random read ahead 0.00/s --预读的速率与不通过访问剔除的预读页面的个数
LRU len7052, unzip_LRU len0 --LRU列表的长度,unzip_LRU列表的长度
I/O sum[4121]:cur[0], unzip sum[0]:cur[0--IO操作的次数:当前间隔的IO
--------------
ROW OPERATIONS   --行操作
--------------
0 queries inside InnoDB0 queries in queue --当前有多少个正在执行的查询,在innodb_thread_concurrency队列中的查询个数
0 read views open inside InnoDB --只读视图的数量
Process ID=1543Main thread ID=140593683990272, state: sleeping --线程id以及状态
Number of rows inserted 56092883updated 133093048, deleted 40729879read 477150639699 --从innodb启动后,插入、更新、删除、读取的行数
0.19 inserts/s, 7.73 updates/s, 0.00 deletes/s, 138100.85 reads/s -- 速率


-- 展示Innodb的互斥体信息
show engine innodb mutex;

Type   Name                        Status
InnoDB rwlock: dict0dict.cc:2782    waits=4
InnoDB rwlock: dict0dict.cc:1228    waits=80
InnoDB rwlock: log0log.cc:846      waits=75
InnoDB sum rwlock: buf0buf.cc:1460  waits=11

-- name列显示了创建互斥体的源文件和行号
-- status列显示了互斥体在操作系统上的等待次数

show status

通过查看日志文件
show status like 'innodb%log%'

Variable_name              Value
Innodb_log_waits             0     日志文件太小时,操作必须等待日志刷新的等待时间计数器,该值如果长期大于0,可以适当增加日志文件大小
Innodb_log_write_requests   4539    日志写入请求的数量
Innodb_log_writes            22     数据被写入日志的次数
Innodb_os_log_fsyncs        1020   操作系统文件同步的数量(fsync()方法调用)
Innodb_os_log_pending_fsyncs 0     阻塞的文件同步请求的数量,如果该值开始增长并长期大于0,需要检查磁盘访问问题
Innodb_os_log_pending_writes 0     阻塞的日志写请求的次数,如果该值开始增长并长期大于0,需要检查磁盘访问问题
Innodb_os_log_written      2855424  写入日志中的字节总量
Innodb_available_undo_logs 128
缓冲池信息

缓冲池是Innodb缓存频繁访问数据的地方,对缓冲池内数据的任何更新也会被缓存

-- 可以查看存储引擎的统计信息,其中包含有缓冲池的信息
show engine innodb status;

截取出缓冲池的信息来进行分析
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 137428992
Dictionary memory allocated 223164
Buffer pool size   8191
Free buffers       7374   空的且可用于缓冲数据的缓冲段个数
Database pages     809   
Old database pages 299
Modified db pages  0   发生变化的页数
Pending reads      0   等待中的读请求个数
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 503, created 306, written 2534
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len809, unzip_LRU len0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]

在查看一下缓冲区相关的变量

show status like 'innodb%buf%'


Variable_name                      Value
Innodb_buffer_pool_pages_data        809    含有数据的页数,包括不变和改变的页
Innodb_buffer_pool_bytes_data      13254656 含有数据的字节数
Innodb_buffer_pool_pages_dirty       0      改变的字节数
Innodb_buffer_pool_bytes_dirty       0      改变的页的数目
Innodb_buffer_pool_pages_flushed    2525    缓冲池页面被刷新的次数
Innodb_buffer_pool_pages_free        7374    空页面的数目
Innodb_buffer_pool_pages_misc         8      用于管理工作的页数,公式为'Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free-Innodb_buffer_pool_pages_data'
Innodb_buffer_pool_pages_total      8191    缓冲池中的总页数
Innodb_buffer_pool_read_ahead_rnd     0      扫描大块数据时发生随机读头的数量
Innodb_buffer_pool_read_ahead         0      
Innodb_buffer_pool_read_ahead_evicted 0
Innodb_buffer_pool_read_requests   107632   逻辑读请求的次数
Innodb_buffer_pool_reads             504    直接从磁盘中逻辑读取的次数(没有从缓冲池中读)
Innodb_buffer_pool_wait_free          0     如果缓冲池繁忙且没有空页,innodb需要等待页面刷新,该值表示等待次数,若始终大于0,可适当增加缓冲池大小
Innodb_buffer_pool_write_requests    47403   写入innodb缓冲池的次数
线程和连接统计信息

使用show status like '变量'来查询,这些变量用来跟踪尝试的连接、退出的连接、网络流量和线程统计

  • Connections
  • Max_used_connections
  • Threads_connected
  • Aborted_clients
  • Aborted_connects 如果不为0,表示有人尝试连接失败
  • Bytes_received
  • Bytes_sent
  • Slow_launch_threads
  • Threads_cached
  • Threads_created
  • Threads_running
二进制日志状态
  • Binlog_cache_use和Binlog_cache_disk_use表示在二进制日志缓存中有多少事务被存储过,以及多少事务因为超过二进制日志缓存而被存储到一个临时文件中
  • Binlog_stmt_cache_use和Binlog_stmt_cache_disk_use表示非事务语句对应的度量值
命令计数器

Com_*变量统计了每种类型的SQL发起的次数

临时文件和临时表

通过Create_tmp%来查看隐式临时文件和临时表的统计

select类型

select_*变量统计select查询的计数器

  • Select_full_join 交叉连接或并没有条件匹配表中行的连接的数目,如果存在,需要检查sql语句
  • Select_full_range_join 使用在表t1中的一个值来从表t2中通过参考索引的区间内获取行所做的连接数,比Select_scan开销大些
  • Select_range 扫描表的一个索引区间的连接数目
  • Select_range_check 在表t2中重新评估表t1中的每一行的索引是否开销最小所做的连接数,意味着表t2中对该连接而言并没有使用索引,这种查询应该避免,开销很大
  • Select_scan 扫描整张表的连接数目
排序
  • Sort_merge_passes 依赖于sort_buffer_size服务器变量,sort_buffer_size来容纳排序的行块,当完成排序后,会将这些排序后的行合并到结果集中,此时就会增加Sort_merge_passes值
  • Sort_scan和Sort_range 当mysql从文件排序结果中读取已经排好序的行并返回给客户端会导致这两个变量的增长,如果是当Select_scan增加时Sort_scan增加;如果是Select_range增加时Sort_range增加

information_schema数据库中关于innodb的表

information_schema数据库中有几个对于innodb的特殊表,可以用于监控压缩、事务和锁

  • INNODB_CMP表 显示压缩表的详细信息和统计信息
  • INNODB_CMP_RESET表 与INNODB_CMP信息相同,但是会在查询表时将重置统计信息,可以定期跟踪统计信息
  • INNODB_CMPMEM表 显示在缓冲池中使用压缩的详细信息和统计信息
  • INNODB_CMPMEM_RESET表 与INNODB_CMPMEM信息相同,但是会在查询表时将重置统计信息,可以定期跟踪统计信息
  • INNODB_TRX表 显示所有事务的详细信息和统计信息,包括事务状态和当前正在运行的查询信息
  • INNODB_LOCKS表 显示事务请求的锁的详细信息和统计信息,描述每个锁的状态、模式、类型等信息
  • INNODB_LOCK_WAITS表 显示被阻塞的事务请求的锁的详细信息和统计信息,描述每个锁的状态、模式、类型和阻塞事务

https://zhhll.icu/2021/数据库/关系型数据库/MySQL/进阶/29.Innodb监控/

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-830172.html

到了这里,关于MySQL监控Innodb信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 雷军:我的程序人生路

    今天有朋友发给我一篇我在20年前在BBS上写的帖子。那还是1996年,我们通过电话线拨号连接到西点BBS上飙帖子玩的年代。那是一个互联网混沌初开的年代,那是一个BBS和Email几乎主宰了全部互联网的年代,那是一个青春的理想和热血沸腾的年代。 我是一个程序员,一个软件工

    2024年02月04日
    浏览(76)
  • 哈工大CSAPP程序人生大作业

    正在上传…重新上传取消 计算机系统 大作业 题     目   程序人生 -Hello’s P2P  专       业    计算机科学与技术        学    号   2021110991             班    级      2103101             学       生         安心           指 导 教 师    

    2023年04月24日
    浏览(68)
  • 【程序人生】如何在工作中保持稳定的情绪?

    在工作中保持稳定的情绪是现代生活中一个备受关注的话题。随着职场压力和工作挑战的增加,我们常常发现自己情绪波动不定,甚至受到负面情绪的困扰。然而,保持稳定的情绪对于我们的工作效率、人际关系和整体幸福感都至关重要。 无论你是一位职场新人还是一位资深

    2024年02月15日
    浏览(43)
  • 程序人生 | 编程的上帝视角应该怎么去找

      前言 📫 作者简介 :小明java问道之路,专注于Linux内核/汇编/HotSpot/C++/Java/源码/架构/算法 就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫  🏆 CSDN专家博主/Java优质创作者/CSDN内容合伙人 、InfoQ签约作者 、阿里云专家/签约博主、

    2023年04月24日
    浏览(86)
  • C罗老矣,我的程序人生还有多远

    ☆ 随着12月11号摩洛哥1-0葡萄牙比赛的结束,不仅说明葡萄牙对要结束本届卡塔尔世界杯了,就连C罗此生的世界杯之旅也将画上句号了。 ☆ 37岁的球星本该是人生最璀璨的阶段,但在足球生涯中,这已经是大龄了。不禁让我想到,身为开发的我,也大概类似吧。   目录  1、

    2024年01月16日
    浏览(49)
  • 程序人生——Java数组和集合使用建议(2)

    程序人生——Java数组和集合使用建议(2) 需求:要删除一个ArrayList中的20-30范围内的元素;将原列表转换为一个可变列表,然后使用subList获取到原列表20到30范围内的一个视图(View),然后清空该视图内的元素,即可在原列表中删除20到30范围内的元素 建议72:生成子列表后

    2024年03月19日
    浏览(47)
  • 【程序人生】上海城市开发者社区小聚有感

    📫作者简介: 小明java问道之路 , 2022年度博客之星全国TOP3 ,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。          📫 热衷分享,喜欢原

    2024年02月06日
    浏览(65)
  • 【程序人生】还记得当初自己为什么选择计算机?

            还记得人生中第一次接触计算机编程是在高中,第一门编程语言是Python(很可惜由于条件限制的原因,当时没能坚持学下去......现在想来有点后悔,没能坚持,唉......)。但是,错过的就错过了,把握当前才是正确的选择。努力最好的时机永远是在过去,其次就在当

    2024年02月04日
    浏览(63)
  • 《人生苦短,我学Python》——第一个python程序

    Hello!朋友们大家好,从今天开始,我们将学习 Python 的相关内容。 首先,让我们来思考一个问题,编程是什么? 编程是人类与电脑沟通的过程,可以告诉电脑做什么以及怎么做。人类用编程构建数字世界,比如网站、App、办公软件等等。 世界上有很多种编程语言,比如C,

    2024年02月11日
    浏览(42)
  • 人工智能AI时代:全栈程序员的人生规划

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月11日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包