前言:
带着问题来GET AGAIN📑,Mysql的压测指标只能从CPU、mem、磁盘、网络等进行资源监控么?还会有其他角度么?
确实存在,那就是>>"引擎监控"
数据库系统中,常见的存储引擎包括但不限于InnoDB、MyISAM、SQLite等,本章介绍常见的以下两种:
InnoDB:用于MySQL事务性存储引擎,支持事物、行级锁、外键等特性
MyISAM:用于MySQL的非事务性存储引擎,适用读写密集型应用
思考并思维共享:
🤔️评论区回答你认为还有哪些直观指标?以及你还想了解哪方面的性能知识呢,将会迭代更新哦~
1、引擎监控性能项
1.1 MySQL_SelectScan
mysql.select_scan:执行全表搜索查询的数量。
全表扫描是指数据库系统需要遍历整个表的每一行数据来满足查询条件,而不是利用索引等方法快速定位所需的数据。这种操作通常是相对较慢和资源密集的,因为它需要处理整个表的数据,而不是仅仅访问索引
全表搜索次数需要结合其他性能指标一起分析,如查询响应时间、系统负载、索引利用率等
1.2 刷盘频率
mysql.innodb_data_fsyncs:
操作的目的是将内存中的数据同步写入到磁盘,以确保数据的持久性。但频繁的刷盘可能导致磁盘 I/O 的负担增加,因此,过高的刷盘次数可能会影响数据库性能。然而,刷盘也是确保数据持久性和数据库恢复性的必要操作。需综合考虑数据库工作负载、事务设计性能需求
1.3 InnoDB Data读写吞吐量(KB/B)
-
mysql.innodb_data_read:InnoDB平均每秒读字节数
-
mysql.innodb_data_written:InnoDB平均每秒写字节数
-
mysql.innodb_os_log_written:InnoDB每秒写入Redo Log日志量
平衡读和写的性能 ,结合其他性能指标一起分析,例如响应时间、系统负载、锁等待。观察这些指标的变化趋势
1.4 InnoDB Buffer Pool请求次数
InnoDB Buffer Pool(缓冲池)是 MySQL 数据库中 InnoDB 存储引擎的一个关键组件,用于管理和缓存数据库中的数据页。它是一个内存区域,用于存储被频繁读取的数据页,以提高数据库的读取性能。
-
mysql.innodb_buffer_pool_reads_requests:InnoDB平均每秒从Buffer Pool读取页的次数(逻辑读)
-
mysql.innodb_buffer_pool_write_requests:InnoDB平均每秒往Buffer Pool写入页的次数
1.5 InnoDB Buffer Pool命中率
InnoDB Buffer Pool命中率是衡量 InnoDB 缓冲池(Buffer Pool)性能的一个关键指标。它表示在查询过程中所需的数据页是否已经在缓冲池中,即查询是否命中了缓冲池。命中率越高,说明查询所需的数据页大部分都在缓冲池中,减少了对磁盘的读取,提高了查询性能。
命中率的计算公式:
命中率=(1−缓冲池未命中的查询次数/总的查询次数)×100%
-
mysql.innodb_bp_dirty_pct:InnoDB Buffer Pool脏页比率
-
mysql.innodb_bp_hit:InnoDB Buffer Pool读缓存命中率
-
mysql.innodb_bp_usage_pct:InnoDB Buffer Pool使用率
1.6 InnoDB Redo写次数
- mysql.innodb_log_writes:Innodb平均每秒物理写Redo Log File次数