当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL数据库的监控性能指标、Oracle主要的性能指标介绍

MySQL数据库的监控性能指标、Oracle主要的性能指标介绍

2018年03月23日  | 移动技术网IT编程  | 我要评论

MySQL主要的性能指标

1、当前线程连接数

mysql> show global status like 'threads_%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 30 |
| Threads_connected | 65 |
| Threads_created | 3779 |
| Threads_running | 2 |
+-------------------+-------+

Threads_cached:当前此时此刻线程缓存中有多少空闲线程

Threads_connected:代表当前已建立连接的数量,因为一个连接需要一个线程,也可以看成当前被使用的线程数

Threads_created:代表从最近一次服务启动,已经创建线程的数量

Threads_running:代表当前激活(非睡眠)的线程数

2、连接数和最大连接数

mysql> show global status like '%connections';
+-----------------------------------+--------+
| Variable_name | Value |
+-----------------------------------+--------+
| Connection_errors_max_connections | 0 |
| Connections | 146049 |
| Max_used_connections | 197 |
+-----------------------------------+--------+

Connections:试图连接到MySQL服务器的连接数

Max_used_connections:服务器启动后已经同时使用的连接的最大数量(这个是连接的最大峰值,主要和参数max_connections(目前使用1000)对比来决定是否调整参数)

线程缓存命中率=1-Threads_created/Connections

3、连接失败的线程

mysql> show global status like '%abort%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Aborted_clients | 4863 |
| Aborted_connects | 62915 |
+------------------+-------+

Aborted_clients:当ablort clients增大的时候意味着有客户端成功建立连接,但是很快就断开连接或者被终止了,这种情况一般发生在网络不稳定的环境中

a)客户端没有主动关闭mysql连接mysql_close()
b)wait_timeout设置很短被mysql干掉了
c)客户端由于某些原因被干掉了,异常终止

Aborted_connects:当有大量的链接连接不上mysql的时候,这个数值就会激增

a)没有授权或者密码不对。一般错误日志中会有如下报错(Access denied for ‘user’@‘host’)
b)连接数满了。一般报错包含(too many connections)
c)超过链接时间限制,主要有这个参数控制connect_timeout(mysql默认是10s,基本除非网络环境极端不好,一般不会超时。)

4、QPS(每秒Query数,针对于innodb存储引擎)

Com_xxx表示每个具体类型语句执行的次数

Com_select:select执行次数

Com_insert:insert执行次数

Com_update:update执行次数

Com_delete:delete执行次数

。。。。。。

取的一段时间的增量,然后除以这段时间

QPS=(Com_select+Com_insert+Com_update+Com_delete)/时间

5、TPS(每秒事务数,针对于innodb存储引擎)

Com_commit:提交的执行次数

Com_rollback:回滚的执行次数

取的一段时间的增量,然后除以这段时间

TPS=(Com_commit+Com_rollback)/时间

6、锁相关的状态量

表级别的锁情况--宏观大体

mysql> show global status like '%table_lock%';
+-----------------------+----------+
| Variable_name | Value |
+-----------------------+----------+
| Table_locks_immediate | 33106539 |
| Table_locks_waited | 28 |
+-----------------------+----------+

Table_locks_immediate:指的是能够立即获得表级锁的次数

Table_locks_waited:指的是不能立即获取表级锁而需要等待的次数,如果这个值比较高或者正在增加,那么表明存在严重的并发瓶颈,需要降低表级锁的调用频率

行级别的锁情况--宏观大体

mysql> show global status like '%innodb_row_lock%';\
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 19524 |
| Innodb_row_lock_time_avg | 16 |
| Innodb_row_lock_time_max | 3288 |
| Innodb_row_lock_waits | 1151 |
+-------------------------------+-------+

Innodb_row_lock_time:行锁定花费的总时间,单位毫秒

Innodb_row_lock_time_avg:行锁定的平均时间,单位毫秒

Innodb_row_lock_time_max:行锁定的最长时间,单位毫秒

Innodb_row_lock_waits:总共等待的次数

7、慢查询次数相关的状态量

mysql> show global status like '%slow_queries%';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Slow_queries | 1616911 |
+---------------+---------+

mysql自启动以来,超过long_query_time(慢查询阈值时间)的次数,然后主要是后续观察分析慢查询日志得出系统的哪些sql语句存在优化空间(数据库系统优化的主要参考)

8、日志相关的状态量

二进制日志binlog

mysql> show global status like '%binlog%';
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| Binlog_cache_disk_use | 405495 |
| Binlog_cache_use | 2309357 |

Binlog_cache_disk_use:表示binlog_cache_size的不足导致的缓存二进制日志使用到了临时文件的次数

Binlog_cache_use:使用binlog_cache_size缓存的次数

Binlog_cache_disk_use/Binlog_cache_use值比较大时,可以尝试增加binlog_cache_size的值大小

事务日志redolog

mysql> show global status like '%Innodb_log_waits%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Innodb_log_waits | 0 |
+------------------+-------+

Innodb_log_waits :因log_buffer不足导致等待的次数,此值较大时,考虑尝试增加innodb_log_buffer_size值大小

9、缓冲池buffer pool相关的状态量

mysql> show global status like '%innodb_buffer_pool_wait%';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| Innodb_buffer_pool_wait_free | 0 |
+------------------------------+-------+

Innodb_buffer_pool_wait_free :一般情况,通过后台向InnoDB缓冲池写。但是,如果需要读或创建页,并且没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记数。如果已经适当设置缓冲池大小,该值应小;当这个值比较大时,说明需要增加buffer池的大小了

mysql> show global status like '%innodb_buffer_pool%';
+---------------------------------------+-------------+
| Variable_name | Value |
+---------------------------------------+-------------+

| Innodb_buffer_pool_pages_total | 393212 |

| Innodb_buffer_pool_pages_free | 8193 |

| Innodb_buffer_pool_reads | 6637922 |

| Innodb_buffer_pool_read_requests | 46462121208 |

Innodb_buffer_pool_pages_total:缓冲池总的页数

Innodb_buffer_pool_pages_free:缓冲池空闲的页数

缓冲池的利用率=1 - Innodb_buffer_pool_pages_free/Innodb_buffer_pool_pages_total

Innodb_buffer_pool_reads:从物理磁盘读取的次数,物理读

Innodb_buffer_pool_read_requests:从缓存池读取的次数,逻辑读

缓冲池的读命中率=1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests

10、临时表的使用相关的状态量

mysql> show global status like '%Created_tmp%';
+-------------------------+--------+
| Variable_name | Value |
+-------------------------+--------+
| Created_tmp_disk_tables | 14714 |
| Created_tmp_files | 1685 |
| Created_tmp_tables | 871878 |
+-------------------------+--------+

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

Created_tmp_tables:服务器执行语句时自动在内存中创建的临时表的数量

Created_tmp_disk_tables /Created_tmp_tables值比较大时,可以尝试增加tmp_table_size的值大小

Created_tmp_files:创建临时文件的数目

11、表缓存相关的状态量

mysql> show global status like 'open_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| Open_files | 564 |
| Open_streams | 0 |
| Open_table_definitions | 300 |
| Open_tables | 3935 |

Open_files:当前处于打开的文件数目(可以和参数open_files_limit参数量对比来调整参数)

Open_table_definitions:打开的.frm文件数目(可以和table_definition_cache参数量对比来调整参数)

Open_tables:当前处于打开的表数目(可以和table_open_cache参数量对比来调整参数)

如果是innodb表,可以和innodb_open_files(限制可以打开的.ibd文件数目)参数量对比来调整参数

12、排序、连接join相关的状态量

mysql> show global status like '%sort%';
+-------------------+----------+
| Variable_name | Value |
+-------------------+----------+
| Sort_merge_passes | 2591 |
| Sort_range | 762320 |
| Sort_rows | 62306390 |
| Sort_scan | 1614674 |
+-------------------+----------+

Sort_merge_passes :排序算法已经执行的合并的数量。如果这个变量值较大,应考虑增加sort_buffer_size系统变量的值

mysql> show global status like 'select%';
+------------------------+---------+
| Variable_name | Value |
+------------------------+---------+
| Select_full_join | 866 |
| Select_full_range_join | 14 |
| Select_range | 2740080 |
| Select_range_check | 0 |
| Select_scan | 2146004 |
+------------------------+---------+

Select_full_join:没有使用索引的联接的数量

Select_full_range_join :在引用的表中使用范围搜索的联接的数量

Select_range:利用第一个数据表上的某个区间而完成的多数据表联接操作的次数

Select_range_check:该变量记录了在联接时,对每一行数据重新检查索引的查询计划的数量,它的开销很大,如果该值较高或正在增加,说明一些查询没有找到好索引

Select_scan:通过对第一个数据表进行全表扫描而完成的多数据表联接操作的次数

排序sort_buffer,连接join_buffer

13、从服务器延时和相关进程的状态量

show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

其中Seconds_Behind_Master大体认为是主从数据库的延时

14、数据库错误日志的监控,主机系统cpu、io的监控(系统cpu使用率和IO是最直接的表现)

Oracle主要的性能指标(awk报告的查看)

1、SGA(系统全局的)、PGA(每个进程的)的总量、使用量、剩余量监控

select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from
(select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,
(select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual)
union
select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from (
select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total,
(select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);

NAME TOTAL USED FREE PCTUSED
------ ---------- ---------- ---------- ----------
PGA 600 326.46 273.54 54.41
SGA 1656.5625 1419.69 236.87 85.7

2、session连接(最大连接数、当前连接数(活跃、非活跃)、连接数历史峰值、连接池缓存连接数等)

3、TPS(每秒事务量)、IOPS(每秒IO吞吐量)

4、表空间的总量、使用量、剩余量、空间碎片、IO比例分布监控

5、归档日志的大小监控、联机重做日志的状态监控

6、锁等待、事务等待、死锁的监控

7、长时间、大频率、低性能top sql的监控(查询慢sql)

8、逻辑IO性能和物理IO性能的监控

物理IO是ORACLE 内核从磁盘取得数据,服务器进程将行所在的数据块从数据文件中读入buffer cache,这个过程叫做物理读

逻辑IO是ORACLE 内核从内存取得数据,从buffer cache的块中读取行的过程,就是逻辑读

9、监控SGA中的缓存命中率相关指标

字典缓冲区命中率

库缓冲区命中率

重做日志缓冲区命中率

sql软硬解析占比比例

内存和磁盘排序占比比例

回滚段竞争占比比例

10、临时表空间的监控(管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象)

11、主机cpu、io和系统alert日志的监控(系统cpu使用率和IO是最直接的表现)

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网