前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >其他混杂视图 | 全方位认识 sys 系统库

其他混杂视图 | 全方位认识 sys 系统库

原创
作者头像
沃趣科技
发布2018-09-12 14:25:03
7960
发布2018-09-12 14:25:03
举报
文章被收录于专栏:沃趣科技沃趣科技

在《语句效率统计视图|全方位认识 sys 系统库》中,为大家介绍了利用sys 系统库查询语句执行效率的快捷视图,本期将为大家介绍一些不便归类的混杂视图,本篇也是该系列中最后一篇介绍视图的文章。

PS:由于本文中所提及的视图功能的特殊性(DBA日常工作中可能需要查询一些信息做一些数据分析使用),所以下文中会列出部分视图中的select语句文本,以便大家更直观地学习。

01.metrics

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中新增

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下:

  • Variable_name:度量变量名称,度量变量的类型决定了该数据的来源

* 对于全局状态变量,该字段值对应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格式时间和时间戳

  • Variable_value:度量变量值。度量变量的类型确定了该数据的来源:

* 对于全局状态变量:该字段对应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格式时间和时间戳

  • Type:度量变量类型:

* 对于全局状态变量:该列值为 'Global Status'

* 对于InnoDB指标:该列值为 ' InnoDB Metrics - %',其中%号在输出对应的度量变量指标时,使用information_schema.INNODB_METRICS表的SUBSYSTEM列值替换再输出(转换函数: CONCAT('InnoDB Metrics - ', SUBSYSTEM) AS Type)

* 对于performance_schema中监控的内存指标:该列值为 'Performance Schema'

* 对于当前系统时间:该列值为 'System Time'

  • Enabled:度量变量是否启用

* 对于全局状态变量:该列值总是显示为 '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

02.ps_check_lost_instrumentation

用户查询发生监控丢失的instruments对应的状态变量值,如果查询到非空值,则表示出现了performance_schema无法监控的运行态数据,数据来源:performance_schema.global_status

视图查询语句文本

代码语言:javascript
复制
SELECT variable_name, variable_value
FROM performance_schema.global_status
WHERE variable_name LIKE 'perf%lost'
AND variable_value > 0;

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
# 默认设置值可能很难出现监控丢失的情况,如果你需要查看到该视图输出结果,你可以通过调整相关系统变量阀值来实现
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)

视图字段含义如下:

  • variable_name:“performance_schema”的状态变量名称,以显示哪种类型的instruments监控发生了丢失
  • variable_value:发生instruments监控丢失的状态变量名称对应的值

03.session_ssl_status

查看SSL链接状态信息(显示重用SSL会话的SSL版本,密码和计数),数据来源:performance_schema.status_by_thread

  • 此视图在MySQL 5.7.9中新增

视图查询语句文本

代码语言:javascript
复制
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';

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下:

  • thread_id:连接的thread ID
  • SSL_VERSION:连接使用的SSL版本
  • ssl_cipher:连接使用的SSL密码,如果客户端使用了ssl连接,则该连接查询到的会话级别该状态变量有类似 'DHE-RSA-AES128-GCM-SHA256' 的字符串值
  • ssl_sessions_reused:连接重用的SSL会话数(ssl连接可以缓存并给其他支持ssl连接的客户端重用)

04.version

查看当前的sys 系统库和MySQL server版本,数据来源:视图定义语句中的类似select '1.5.1'固定值和version()函数输出

视图查询语句文本

代码语言:javascript
复制
SELECT '1.5.1' AS sys_version,
    version() AS mysql_version;

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下

  • sys_version:sys 系统库版本
  • mysql_version:MySQL server版本

05.x$ps_digest_95th_percentile_by_avg_us

帮助视图(辅助试图),计算语句百分之九十五的平均执行时间分布值,帮助statements_with_runtimes_in_95th_percentile视图输出语句平均执行时间大于95%平均分布值的语句统计信息,默认按照直方图百分比值排序。数据来源:performance_schema.events_statements_summary_by_digest、sys.x$ps_digest_avg_latency_distribution

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下

  • avg_us:语句平均执行时间(微秒单位)
  • percentile:直方图百分比值,代表该语句的平均执行时间的一个分布广度

06.x$ps_digest_avg_latency_distribution

帮助视图(辅助试图),用于帮助x$ps_digest_95th_percentile_by_avg_us视图生成语句百分之九十五的平均执行时间分布值,数据来源:performance_schema.events_statements_summary_by_digest

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下:

  • cnt:按照语句平均执行时间的分组计数值
  • avg_us:语句平均执行时间(微秒单位)

07.x$ps_schema_table_statistics_io

帮助视图(辅助试图),用于帮助schema_table_statistics,x$schema_table_statistics、schema_table_statistics_with_buffer,x$schema_table_statistics_with_buffer表统计视图生成表统计信息,数据来源:performance_schema.file_summary_by_instance

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下:

  • table_schema:包含table_name的schema名称
  • table_name:表名
  • count_read:对应表的文件读I/O事件发生的总次数
  • sum_number_of_bytes_read:对应表的文件读I/O事件的总字节数
  • sum_timer_read:对应表的文件读I/O事件的总延迟时间(执行时间)
  • count_write:对应表的文件写I/O事件发生的总次数
  • sum_number_of_bytes_write:对应表的文件写I/O事件的总字节数
  • sum_timer_write:对应表的文件写I/O事件的总延迟时间(执行时间)
  • count_misc:对应表的文件混杂I/O事件发生的总次数
  • sum_timer_misc:对应表的文件混杂I/O事件的总延迟时间(执行时间)

08.x$schema_flattened_keys

帮助视图,用于帮助schema_redundant_indexes视图输出冗余索引信息,数据来源:INFORMATION_SCHEMA.STATISTICS

下面我们看看使用该视图查询返回的结果

代码语言:javascript
复制
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)

视图字段含义如下:

  • TABLE_SCHEMA:包含索引的表所在的schema名称
  • TABLE_NAME:包含索引的表名
  • INDEX_NAME:索引名称
  • NON_UNIQUE:索引中非唯一列的数量
  • subpart_exists:索引是否是前缀索引
  • index_columns:索引中列名称

本期内容就介绍到这里,本期内容参考链接如下:

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01.metrics
  • 02.ps_check_lost_instrumentation
  • 03.session_ssl_status
  • 04.version
  • 05.x$ps_digest_95th_percentile_by_avg_us
  • 06.x$ps_digest_avg_latency_distribution
  • 07.x$ps_schema_table_statistics_io
  • 08.x$schema_flattened_keys
  • | 作者简介
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档