rds怎样用mysql监控脚本_RDS控制台之MySQL系统资源监控

本文详细介绍了RDS中MySQL实例的系统资源监控,包括磁盘空间、IOPS、CPU利用率、连接数、网络流量、QPS/TPS、Innodb缓冲池性能、Innodb读写量、临时表、MyISAM Key Buffer等关键指标,帮助用户理解和优化MySQL实例的性能。
摘要由CSDN通过智能技术生成

RDS控制台提供了多种系统资源监控项,本文介绍MySQL实例各个性能指标的意义及计算方法,希望用户能更清楚如何使用RDS对实例进行性能监控。绝大多数MySQL性能指标可以通过以下两种方式获取:

(1)mysqladmin

使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值。如果想了解当前状态,需要进行差值计算;加上参数 -relative(-r),就可以看到各个指标的差值,配合参数-sleep(-i)就可以指定刷新的频率。

1.png

2.png

(2)Show global status

可以列出MySQL服务器运行各种状态值,累计值。同样的,如果想了解当前状态,需要进行差值计算。

3.png

mysqladmin extended-status命令及show global status得到的指标项特别多。实际应用中,重点关注以下性能指标:

4.png

1. 磁盘空间:

当前实例磁盘空间使用量。磁盘空间中主要包括了:数据文件、日志文件、其他文件(系统文件和临时文件)。

2. IOPS:

数据从磁盘读取到内存,或者数据从内存写到磁盘都需要消耗IO。IOPS即为每秒磁盘IO次数。

3. CPU利用率:

在RDS中,各实例之间相互独立、资源隔离,相互之间不存在CPU的抢占问题,但同一实例中的不同数据库之间是资源共享的。获取mysqld的进程ID后,通过top或ps命令即可查看实例的CPU利用率。

4. 连接数:

连接数是指用户能够创建多少个连接,也就是MySQL show processlist命令输出结果中运行着的线程个数。

当前总连接数: show processlist结果中的总线程个数

当前活跃连接数:show processlist结果中的活跃线程数(Command列状态为sleep的不计入在内)

5. 网络流量:

Bytes_received/s:平均每秒的输入流量,单位byte/s

Bytes_sent/s:平均每秒的输出流量,单位byte/s

6. QPS/TPS:

TPS: 平均每秒事务数

QPS:平均每秒SQL语句执行次数

TPS= Com_insert/s + Com_update/s + Com_delete/s

QPS=Com_select/s + Com_insert/s + Com_update/s + Com_delete/s

7. Innodb缓冲池:

缓冲池(innodb buffer pool)简单来说就是一块内存区域。缓冲池中缓存的数据页类型有:索引页、数据页、undo页、插入缓冲、自适应哈希索引、InnoDB存储的锁信息、数据字典信息等。不能简单认为,缓冲池只是缓存索引页和数据页,它们只是占缓冲池很大的一部分而已。

在数据库中进行读取页的操作,首先将从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲池中。若在,称该页在缓冲池中被命中,直接读取该页。否则,读取磁盘中的页。

innodb_buffer_pool_reads: 平均每秒从物理磁盘读取页的次数

innodb_buffer_pool_read_requests: 平均每秒从innodb缓冲池的读次数

innodb_buffer_pool_write_requests: 平均每秒向innodb缓冲池的写次数

innodb_buffer_pool_pages_dirty: 平均每秒innodb缓存池中脏页的数目

innodb_buffer_pool_pages_flushed: 平均每秒innodb缓存池中刷新页请求的数目

缓冲池的读命中率

innodb_buffer_read_hit_ratio = ( 1 – innodb_buffer_pool_reads/innodb_buffer_pool_read_requests) * 100

缓冲池的利用率

innodb_buffer_usage = ( 1 – innodb_buffer_pool_pages_free / innodb_buffer_pool_pages_total) * 100

缓冲池的脏块的百分率

innodb_buffer_pool_pages_dirty / innodb_buffer_pool_pages_total

8. Innodb读写量:

平均每秒读取的数据量:innodb_data_read

平均每秒写入的数据量:innodb_data_written

9. Innodb读写次数:

平均每秒Innodb从文件中读取的次数:innodb_data_reads

平均每秒Innodb从文件中写入的次数:innodb_data_writes

10. Innodb日志:

平均每秒向日志文件的物理写次数:innodb_log_writes

平均每秒日志写请求次数:innodb_log_write_requests

平均每秒向日志文件完成fsync()写数量:innodb_os_log_fsyncs

11. 临时表:

Created_tmp_disk_tables:MySQL执行语句时在磁盘上自动创建的临时表的数量

在某些情况下,MySQL服务器会自动创建内部临时表。用explain查看select语句的执行计划,如果extra列显示“using temporary”,即使用了内部临时表。一般情况下,MySQL会先创建内存临时表,内存临时表超过配置指定的值后,MySQL会将内存临时表导出到磁盘临时表。

使用临时表一般都意味着性能比较低,特别是使用磁盘临时表,性能更慢,因此我们在实际应用中应该尽量避免临时表的使用。常见的方法有:

1)创建索引:在ORDER BY或者GROUP BY的列上创建索引;

2)分拆很长的列:一般情况下,TEXT、BLOB,大于512字节的字符串,基本上都是为了显示信息,而不会用于查询条件, 因此表设计的时候,应该将这些列独立到另外一张表。

如果表的设计已经确定,修改比较困难,那么也可以通过优化SQL语句来减少临时表的大小,以提升SQL执行效率。

12. MyISAM Key Buffer

为了最小化磁盘I/O,MyISAM将最频繁访问的索引块(Index block)都放在内存中,这样的内存缓冲区我们称之为Key Cache,它的大小可以通过参数key_buffer_size来控制。在MyISAM的索引文件中,连续的单元组成一个Block,Index block的大小等于该BTree索引节点的大小。Key Cache就是以Block为单位的。

当MySQL请求(读或写)MyISAM索引文件中某个Index Block时,首先会看Key Cache队列中是否已经缓存了对应block。

如果有,就直接在Key Cache队列中进行读写了,不再需要请求磁盘。如果是写请求,那么Key Cache中的对应Block就会被标记为Dirty(和磁盘不一致)。在MyISAM在Key Cache成功请求(读写)某个Block后,会将该Block放到Key Cache队列的头部。

如果Key Cache中没有待请求(读或写)的Block,MyISAM会向磁盘请求对应的Block,并将其放到Key Cache的队列头部。队列如果满了,会将队列尾部的Block删除,该Block如果是Dirty的,会将其Flush到磁盘上。我们看到MyISAM维护了一个LRU(Least Recently Used)的Key Cache队列。队列中的Dirty Block会在Block被踢出队列时Flush到磁盘上。

MyISAM平均每秒key buffer利用率

Key_usage_ratio =Key_blocks_used/(Key_blocks_used+Key_blocks_unused)*100

MyISAM平均每秒key buffer读命中率

Key_read_hit_ratio=(1-Key_reads/Key_read_requests)*100

MyISAM平均每秒key buffer写命中率

Key_write_hit_ratio =(1-Key_writes/Key_write_requests)*100

13. MyISAM读写次数

key_read_requests: MyISAM平均每秒钟从缓冲池中的读取次数

Key_write_requests: MyISAM平均每秒钟从缓冲池中的写入次数

key_reads : MyISAM平均每秒钟从硬盘上读取的次数

key_writes : MyISAM平均每秒钟从硬盘上写入的次数

14. COMDML

Com_select/s:平均每秒select语句执行次数

Com_insert/s:平均每秒insert语句执行次数

Com_update/s:平均每秒update语句执行次数

Com_delete/s:平均每秒delete语句执行次数

15. ROWDML

innodb_rows_deleted: 平均每秒从innodb表删除的行数

innodb_rows_inserted: 平均每秒从innodb表插入的行数

innodb_rows_read: 平均每秒从innodb表读取的行数

innodb_rows_updated: 平均每秒从innodb表更新的行数

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜您喜欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值