在《语句效率统计视图|全方位认识 sys 系统库》中,为大家介绍了利用sys 系统库查询语句执行效率的快捷视图,本期将为大家介绍一些不便归类的混杂视图,本篇也是该系列中最后一篇介绍视图的文章。
PS:由于本文中所提及的视图功能的特殊性(DBA日常工作中可能需要查询一些信息做一些数据分析使用),所以下文中会列出部分视图中的select语句文本,以便大家更直观地学习。
server的计数指标,包含innodb内部的一些度量、全局状态变量、当前系统时间,默认按照变量类型和名称进行排序,数据来源:performance_schema的global_status、memory_summary_global_by_event_name,information_schema.innodb_metrics、NOW()和UNIX_TIMESTAMP()函数
该视图包含以下几个部分的信息
* 来自performance_schema.global_status表中的全局状态变量名称及其统计值
* 来自information_schema.innodb_metrics表中的innodb指标变量和统计值
* 来自performance_schema内存监控中的当前分配的和总的历史分配内存统计值
* 来自系统当前时间(使用可读格式的unix时间戳)
* PS:global_status表和innodb_metrics表之间存在一些重复的统计值,在metrics视图中去进行去重
该视图在MySQL 5.7.9中新增
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 10:49:59> select * from metrics where type='global status' limit 5;
+----------------------------+----------------+---------------+---------+
| Variable_name | Variable_value | Type | Enabled |
+----------------------------+----------------+---------------+---------+
| aborted_clients | 0 | Global Status | YES |
| aborted_connects | 0 | Global Status | YES |
| binlog_cache_disk_use | 0 | Global Status | YES |
| binlog_cache_use | 1159 | Global Status | YES |
| binlog_stmt_cache_disk_use | 0 | Global Status | YES |
+----------------------------+----------------+---------------+---------+
5 rows in set (0.17 sec)
admin@localhost : sys 11:04:01> select * from metrics where type='InnoDB Metrics - transaction' limit 5;
+---------------------------+----------------+------------------------------+---------+
| Variable_name | Variable_value | Type | Enabled |
+---------------------------+----------------+------------------------------+---------+
| trx_active_transactions | 0 | InnoDB Metrics - transaction | NO |
| trx_commits_insert_update | 0 | InnoDB Metrics - transaction | NO |
| trx_nl_ro_commits | 0 | InnoDB Metrics - transaction | NO |
| trx_rollbacks | 0 | InnoDB Metrics - transaction | NO |
| trx_rollbacks_savepoint | 0 | InnoDB Metrics - transaction | NO |
+---------------------------+----------------+------------------------------+---------+
5 rows in set (0.02 sec)
视图字段含义如下:
* 对于全局状态变量,该字段值对应performance_schema.global_status表的 VARIABLE_NAME列
* 对于innodb指标变量,该字段值对应information_schema.innodb_metrics表的NAME列
* 对于来自performance_schema中的内存监控指标,使用metrics视图提供的memory_current_allocated代表当前内存使用量,memory_total_allocated代表总历史内存分配量
* 对于系统时间戳度量,使用now()和unix_timestamp(now())生成的unix格式时间和时间戳
* 对于全局状态变量:该字段对应performance_schema.global_status表的VARIABLE_VALUE列
* 对于InnoDB指标变量:该字段对应information_schema.INNODB_METRICS表的COUNT列
* 对于来自performance_schema中的内存监控指标,当前内存使用量和总历史内存分配量分别对performance_schema.memory_summary_global_by_event_name表的CURRENT_NUMBER_OF_BYTES_USED和SUM_NUMBER_OF_BYTES_ALLOC做求和得来
* 对于当前时间值:使用now()和unix_timestamp(now())生成的unix格式时间和时间戳
* 对于全局状态变量:该列值为 'Global Status'
* 对于InnoDB指标:该列值为 ' InnoDB Metrics - %',其中%号在输出对应的度量变量指标时,使用information_schema.INNODB_METRICS表的SUBSYSTEM列值替换再输出(转换函数: CONCAT('InnoDB Metrics - ', SUBSYSTEM) AS Type)
* 对于performance_schema中监控的内存指标:该列值为 'Performance Schema'
* 对于当前系统时间:该列值为 'System Time'
* 对于全局状态变量:该列值总是显示为 'Yes'
* 对于InnoDB指标:如果information_schema.INNODB_METRICS表的STATUS列已启用,则该列值显示为'Yes',否则为 'No'
* 对于内存度量:该列值可能的值有NO、YES、PARTIAL(目前,PARTIAL仅用于内存指标,表示未启用所有的内存监控指标,对于performance_schema开头的内存监控指标默认全部启用,无法关闭)
* 对于当前系统时间:该列值总是显示为 'Yes'
PS:关于metrics度量视图,其中涉及到一张information_schema下的innodb_metrics表,其中记录了Innodb引擎的一些细粒度度量单位,大部分默认关闭,可以使用innodb_monitor_disable、innodb_monitor_enable、innodb_monitor_reset、innodb_monitor_reset_all几个系统参数进行开启,关闭,重置计数等操作,详见链接:
https://dev.mysql.com/doc/refman/5.7/en/innodb-metrics-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_monitor_reset
用户查询发生监控丢失的instruments对应的状态变量值,如果查询到非空值,则表示出现了performance_schema无法监控的运行态数据,数据来源:performance_schema.global_status
视图查询语句文本
SELECT variable_name, variable_value
FROM performance_schema.global_status
WHERE variable_name LIKE 'perf%lost'
AND variable_value > 0;
下面我们看看使用该视图查询返回的结果
# 默认设置值可能很难出现监控丢失的情况,如果你需要查看到该视图输出结果,你可以通过调整相关系统变量阀值来实现
admin@localhost : sys 11:11:20> select * from ps_check_lost_instrumentation;
+----------------------------------------+----------------+
| variable_name | variable_value |
+----------------------------------------+----------------+
| Performance_schema_rwlock_classes_lost | 1 |
+----------------------------------------+----------------+
1 row in set (0.00 sec)
视图字段含义如下:
查看SSL链接状态信息(显示重用SSL会话的SSL版本,密码和计数),数据来源:performance_schema.status_by_thread
视图查询语句文本
SELECT sslver.thread_id,
sslver.variable_value ssl_version,
sslcip.variable_value ssl_cipher,
sslreuse.variable_value ssl_sessions_reused
FROM performance_schema.status_by_thread sslver
LEFT JOIN performance_schema.status_by_thread sslcip
ON (sslcip.thread_id=sslver.thread_id and sslcip.variable_name='Ssl_cipher')
LEFT JOIN performance_schema.status_by_thread sslreuse
ON (sslreuse.thread_id=sslver.thread_id and sslreuse.variable_name='Ssl_sessions_reused')
WHERE sslver.variable_name='Ssl_version';
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 12:45:27> select * from session_ssl_status;
+-----------+-------------+------------+---------------------+
| thread_id | ssl_version | ssl_cipher | ssl_sessions_reused |
+-----------+-------------+------------+---------------------+
| 45 | | | 0 |
| 46 | | | 0 |
| 47 | | | 0 |
| 48 | | | 0 |
| 49 | | | 0 |
+-----------+-------------+------------+---------------------+
5 rows in set (0.00 sec)
视图字段含义如下:
查看当前的sys 系统库和MySQL server版本,数据来源:视图定义语句中的类似select '1.5.1'固定值和version()函数输出
视图查询语句文本
SELECT '1.5.1' AS sys_version,
version() AS mysql_version;
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 12:57:53> select * from version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 1.5.1 | 5.7.18-log |
+-------------+---------------+
1 row in set (0.00 sec)
视图字段含义如下
帮助视图(辅助试图),计算语句百分之九十五的平均执行时间分布值,帮助statements_with_runtimes_in_95th_percentile视图输出语句平均执行时间大于95%平均分布值的语句统计信息,默认按照直方图百分比值排序。数据来源:performance_schema.events_statements_summary_by_digest、sys.x$ps_digest_avg_latency_distribution
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 12:59:57> select * from x$ps_digest_95th_percentile_by_avg_us;
+--------+------------+
| avg_us | percentile |
+--------+------------+
| 450384 | 0.9528 |
+--------+------------+
1 row in set (0.02 sec)
视图字段含义如下
帮助视图(辅助试图),用于帮助x$ps_digest_95th_percentile_by_avg_us视图生成语句百分之九十五的平均执行时间分布值,数据来源:performance_schema.events_statements_summary_by_digest
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 01:00:38> select * from x$ps_digest_avg_latency_distribution limit 3;
+-----+--------+
| cnt | avg_us |
+-----+--------+
| 2 | 38 |
| 1 | 43 |
| 1 | 57 |
+-----+--------+
3 rows in set (0.00 sec)
视图字段含义如下:
帮助视图(辅助试图),用于帮助schema_table_statistics,x$schema_table_statistics、schema_table_statistics_with_buffer,x$schema_table_statistics_with_buffer表统计视图生成表统计信息,数据来源:performance_schema.file_summary_by_instance
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 01:00:42> select * from x$ps_schema_table_statistics_io limit 3;
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| table_schema | table_name | count_read | sum_number_of_bytes_read | sum_timer_read | count_write | sum_number_of_bytes_write | sum_timer_write | count_misc | sum_timer_misc |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| @5c0f@841d@535c | @5c0f@841d@535c | 11 | 115897 | 40409405625 | 0 | 0 | 0 | 11 | 6395506125 |
| binlog | mysql-bin | 279 | 411513 | 4898542125 | 459 | 408800 | 9443458500 | 455 | 2049668827875 |
| charsets | Index | 1 | 18710 | 16713311625 | 0 | 0 | 0 | 2 | 83737125 |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
3 rows in set (0.01 sec)
视图字段含义如下:
帮助视图,用于帮助schema_redundant_indexes视图输出冗余索引信息,数据来源:INFORMATION_SCHEMA.STATISTICS
下面我们看看使用该视图查询返回的结果
admin@localhost : sys 01:01:20> select * from x$schema_flattened_keys limit 3;
+--------------+-------------+-------------------+------------+----------------+---------------+
| table_schema | table_name | index_name | non_unique | subpart_exists | index_columns |
+--------------+-------------+-------------------+------------+----------------+---------------+
| luoxiaobo | public_num | PRIMARY | 0 | 0 | id |
| luoxiaobo | public_num | public_name_index | 0 | 0 | public_name |
| luoxiaobo | t_luoxiaobo | PRIMARY | 0 | 0 | id |
+--------------+-------------+-------------------+------------+----------------+---------------+
3 rows in set (0.00 sec)
视图字段含义如下:
本期内容就介绍到这里,本期内容参考链接如下:
https://dev.mysql.com/doc/refman/5.7/en/sys-metrics.html
https://dev.mysql.com/doc/refman/5.7/en/sys-ps-check-lost-instrumentation.html
https://dev.mysql.com/doc/refman/5.7/en/sys-session-ssl-status.html
https://dev.mysql.com/doc/refman/5.7/en/sys-version.html
罗小波·沃趣科技高级数据库技术专家
IT从业多年,历任运维工程师,高级运维工程师,运维经理,数据库工程师,曾参与版本发布系统,轻量级监控系统,运维管理平台,数据库管理平台的设计与编写,熟悉MySQL的体系结构时,InnoDB存储引擎,喜好专研开源技术,追求完美。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。