您的位置:首页 > 博客中心 > 数据库 >

25 MySQL sys框架

时间:2022-03-15 01:25

24 MySQL sys框架

24.1 sys框架的前提条件

24.2 使用sys框架

24.3 sys框架进度报告

24.4 sys框架的对象

24.4.1所有sys下的对象

24.4.2 sys框架的表和触发器

24.4.2.1 sys_config

24.4.3 性能框架视图

24.4.4 sys框架存储过程

24.4.5 sys框架存储函数

 

24.1 sys框架的前提条件

在开始使用sys框架之前,有一些前提条件,sys需要mysql 5.6或者更高版本。因为sys是performance_schema的替代方案,performance_schema必须启动,sys才能够使用。

为了完全访问sys,需要有以下权限:

  • Sys表和视图的select权限。
  • Sys存储过程和函数的exec权限。
  • Sys_config表的insert,update权限。
  • 另外执行存储过程需要一些其他的权限,可以看存储过程的描述。

其他权限:

  • Sys框架对象访问的任何performance_Schema的表的select权限,和sys框架对象更新的任何表的update权限。
  • Information_schema.innodb_buffer_page的process表。

特定的performance_Schema消费者和记录点要启动:

  • 所有的等待记录点
  • 所有stage记录点
  • 所有statement记录点
  • Xxx_current和xxx_history_long消费者相关的所有事件。

你可以使用sys下面的存储过程启动所有这些选项:

CALL sys.ps_setup_enable_instrument(‘wait‘);
CALL sys.ps_setup_enable_instrument(‘stage‘);
CALL sys.ps_setup_enable_instrument(‘statement‘);
CALL sys.ps_setup_enable_consumer(‘current‘);
CALL sys.ps_setup_enable_consumer(‘history_long‘);

注意点:

       对于很多sys的使用,默认的性能框架数据收集就能够满足,启动所有的记录点和消费者会对性能有一点影响,所以最好只启动你要的配置。通过这个函数也可以返回默认配置:

CALL sys.ps_setup_reset_to_default(TRUE);

24.2 使用sys框架

查看sys版本和mysql版本:

mysql> USE sys;

Database changed

mysql> SELECT * FROM version;

+-------------+-----------------+

| sys_version | mysql_version   |

+-------------+-----------------+

| 1.5.0       | 5.7.9-debug-log |

+-------------+-----------------+

Sys框架下包含了很多视图合计了性能框架的表。很多这些视图成对出现的,比如一个成员的名字和另外一个一样,只是加了x$的前缀。比如host_summary_by_file_io有个名字一样的x$host_summary_by_file_io,2个显示的单位不同。

mysql> SELECT * FROM host_summary_by_file_io;

+------------+-------+------------+

| host       | ios   | io_latency |

+------------+-------+------------+

| localhost  | 67570 | 5.38 s     |

| background |  3468 | 4.18 s     |

+------------+-------+------------+

 

mysql> SELECT * FROM x$host_summary_by_file_io;

+------------+-------+---------------+

| host       | ios   | io_latency    |

+------------+-------+---------------+

| localhost  | 67574 | 5380678125144 |

| background |  3474 | 4758696829416 |

+------------+-------+---------------+

没有x$前缀的表更容易读。带x$和不带x$显示的数值是一样大的用来用具获取和处理这些数据。

可以使用show 语句或者information_schema的查询获取对象的定义比如:

mysql> SHOW CREATE VIEW session;

mysql> SHOW CREATE FUNCTION format_bytes;

mysqldump,mysqlpump默认不导出sys框架,导出sys需要显示设置:

mysqldump --databases --routines sys > sys_dump.sql
mysqlpump sys > sys_dump.sql

导入sys结构:

mysql < sys_dump.sql

24.3 sys框架进度报告

Mysql 5.7.9,在sys下提供了长运行事务的进度报告:

Processlist
session
x$processlist
x$session

假设请求的记录点和消费者已经启动了,这些视图的progress列显示了完成的百分比。

stage进度报告要启动events_stages_current消费者,还有一些需要启动的记录点信息:

stage/sql/Copying to tmp table
stage/innodb/alter table (end)
stage/innodb/alter table (flush)
stage/innodb/alter table (insert)
stage/innodb/alter table (log apply index)
stage/innodb/alter table (log apply table)
stage/innodb/alter table (merge sort)
stage/innodb/alter table (read PK 和 internal sort)
stage/innodb/buffer pool load

对于stage不支持简历和完成工作报告,如果请求记录点和消费者没有启动,progress列为null。

24.4 sys框架的对象

24.4.1所有sys下的对象

Table 24.1 sys Schema Tables  Triggers

Table or Trigger Name

Description

 schema configuration options

 insert trigger

 update trigger

 

Table 24.2 sys Schema Views

View Name

Description

Statement activity, file I/O, 和 connections, grouped by host

File I/O, grouped by host

File I/O, grouped by host 和 event type

Statement stages, grouped by host

Statement statistics, grouped by host

Statements executed, grouped by host 和 statement

InnoDB buffer information, grouped by schema

InnoDB buffer information, grouped by schema 和 table

InnoDB lock information

I/O consumers, grouped by thread

Global I/O consumers, grouped by file 和 bytes

Global I/O consumers, grouped by file 和 latency

Global I/O consumers, grouped by bytes

Global I/O consumers, grouped by latency

Most recent I/O, grouped by file 和 thread

Memory use, grouped by host

Memory use, grouped by thread

Memory use, grouped by user

Memory use, grouped by allocation type

Total memory use

Server metrics

Processlist information

Variables that have lost instruments

AUTO_INCREMENT column information

Index statistics

Types of objects within each schema

Duplicate or redundant indexes

Sessions waiting for metadata locks

Table statistics

,

Table statistics, including InnoDB buffer pool statistics

,

Tables being accessed with full scans

Indexes not in active use

Processlist information for user sessions

Connection SSL information

Statement aggregate statistics

Statements that have produced errors or warnings

Statements that have done full table scans

,

Statements with highest average runtime

Statements that performed sorts

Statements that used temporary tables

User statement 和 connection activity

File I/O, grouped by user

File I/O, grouped by user 和 event

Stage events, grouped by user

Statement statistics, grouped by user

Statements executed, grouped by user 和 statement

Current  schema 和 MySQL server versions

Wait class average latency, grouped by event class

Wait class total latency, grouped by event class

Wait events, grouped by host 和 event

Wait events, grouped by user 和 event

Wait events, grouped by event

Helper view for 95th-percentile views

Helper view for 95th-percentile views

Helper view for table-statistics views

Helper view for 

 

Table 24.3 sys Schema Stored Procedures

Procedure Name

Description

Create synonym for schema

Collect system diagnostic information

Execute prepared statement

Disable background thread instrumentation

Disable consumers

Disable instruments

Disable instrumentation for thread

Enable background thread instrumentation

Enable consumers

Enable instruments

Enable instrumentation for thread

Reload saved Performance Schema configuration

Reset saved Performance Schema configuration

Save Performance Schema configuration

Display disabled Performance Schema configuration

Display disabled Performance Schema consumers

Display disabled Performance Schema instruments

Display enabled Performance Schema configuration

Display enabled Performance Schema consumers

Display enabled Performance Schema instruments

Display statement latency histogram

Trace Performance Schema instrumentation for digest

Dump Performance Schema data for thread

Truncate Performance Schema summary tables

Report of statements running on server

Whether a table exists

 

Table 24.4 sys Schema Stored Functions

Function Name

Description

Extract schema name from file path name

Extract table name from file path name

Convert byte value to value with units

Replace data 和 temp-file directories in path name with symbolic values

Truncate long statement to fixed length

Convert picoseconds value to value with units

Add item to list

Remove item from list

Check whether account instrumentation is enabled

Check whether consumer is enabled

Check whether instrument is enabled

Check whether instrument is timed

Check whether thread is instrumented

Return account for thread ID

Return thread ID for connection ID

Return event information for thread ID

Return transaction information for thread ID

Return string as quoted identifier

Return  schema configuration option

MySQL server major version number

MySQL server minor version number

MySQL server patch release version number

24.4.2 sys框架的表和触发器

24.4.2.1 sys_config

Sys_config表列:

  • Variable:配置选项
  • value:选项的值
  • set_time:最近一次修改时间。
  • set_by:最近一次修改用户

为了最小化直接读取sys_config表的影响,sys框架下的函数用来检查用户定义的变量和相关的名字,这个名字使用变量以@sys.为前缀。如果当前会话有用户定义的变量部位null,那么就优先使用变量上的长度。否则就读取表上的值:

mysql> SET @stmt = ‘SELECT variable, value, set_time, set_by FROM sys_config‘;

mysql> SELECT format_statement(@stmt);

+----------------------------------------------------------+

| format_statement(@stmt)                                  |

+----------------------------------------------------------+

| SELECT variable, value, set_time, set_by FROM sys_config |

+----------------------------------------------------------+

mysql> SET @sys.statement_truncate_len = 32;

mysql> SELECT format_statement(@stmt);

+-----------------------------------+

| format_statement(@stmt)           |

+-----------------------------------+

| SELECT variabl ... ROM sys_config |

+-----------------------------------+

之后会话中的会继续使用变量的32,而不是使用表里面的64。

为了停止变量的使用可以使用以下语句,取消或者关闭当前会话:

mysql> SET @sys.statement_truncate_len = NULL;

mysql> SELECT format_statement(@stmt);

+----------------------------------------------------------+

| format_statement(@stmt)                                  |

+----------------------------------------------------------+

| SELECT variable, value, set_time, set_by FROM sys_config |

变量可以在会话结束前生效,如果sys_config在会话中被修改,这个修改不会体现在会话上,除非会话结束。

Sys_config和变量的配置值:

  • diagnostics.all_i_s_tables, @sys.diagnostics.all_i_s_tables
    如果选项为on,diagnostics()过程允许对information_schema.tables表进行扫描。如果表很多这个操作花费就比较大。
  • diagnostics.include_raw,@sys. diagnostics.include_raw
    如果选项为on,diagnostics()过程包含了metrics视图输出的原生数据。默认为off。
  • ps_thread_trx_info.max_length,@sys. ps_thread_trx_info.max_length
    ps_thread_trx_info()函数输出的最大json的长度。
  • statement_performance_analyzer.limit,@sys.statement_performance_analyzer.limit
    视图返回的最大行数,编译没有限制。最大为100.
  • statement_performance_analyzer.view,@sys.statement_performance_analyzer.view
    statement_performance_analyzer()过程使用到的视图和查询。如果选项值包含了空间就表示是一个查询,否则必须是events_statements_summary_by_digest表上的视图。如果上面的limit>0就不能有limit子句。默认我null。
  • statement_truncate_len, @sys.statement_truncate_len
    format_statement()函数返回的最大语句长度,长的语句会被截断,默认64.

其他选项可以通过sys_config表添加。比如diagnostics(),execute_prepared_stmt()的调试选项,但是不是sys_config的默认有的选项:

mysql> INSERT INTO sys_config (variable, value) VALUES(‘debug‘, ‘ON‘);

修改debug信息:

mysql> UPDATE sys_config SET value = ‘OFF‘ WHERE variable = ‘debug‘;

mysql> SET @sys.debug = NULL;

24.4.3 性能框架视图


  • 视图显示了语句活动,文件io和连接信息,由host分组

  • 视图总计了文件io,由host分组

  • 视图总计了文件io,由host和event类型分组。

  • 总计语句stage,由host分组

  • 总计语句的统计信息,由host分组

  • 总计语句的执行,由host和语句类型分组

  • 统计information_schema.innodb_buffer_page,由schema分组,object_schema为对象的schema,如果为innodb表属于innodb system。

  • 统计information_schema.innodb_buffer_page,由表名分组。

  • 总计了innodb锁等待。列如下:
    wait_started:等待开始事件。
    wait_age:等待锁的时间长度。
    wait_age_secs:等待了多少秒。
    locked_table:被锁定的表。
    locked_index:被锁的索引
    locked_type:锁等待类型
    waiting_trx_started:等待事务的开始事件。
    waiting_trx_age:等待事务等待时间。
    waiting_trx_rows_locked:等待事务锁定的行锁个数。
    ……

  • 总计了IO消费者显示了线程的IO等待。

  • 总计了IO消费者显示每个文件的读写量,由文件分组

  • 总结io消费者显示io次数和延迟事件,由文件分组

  • 每个event的总io字节。

  • 每个event的总io次数和io等待时间

  • 总计活动的文件IO,由文件和线程分组。

  • 总计host使用的总内存

  • 线程的内存使用

  • 总计用户使用的内存

  • 每个分配类型分配的内存

  • 服务的总内存使用

  • 视图总计mysql服务的指标,显示变量名,变量值,类型和他们的启动情况。视图在mysql 5.7.9被添加,视图主要包含信息:
    • 全局的状态变量,来至于global_status表。
    • 来自information_schema.global_status.Innodb指标
    • 当前和所有内存分配
    • 当前时间

有一些在global_status和innodb_status中有重复的指标,metrics视图会进行消除。


  • 比show processlist返回的信息更加详细

  • 返回丢失的性能框架记录点,显示是否性能框架可以跟踪所有数据。

  • 视图显示了有auto_increment的列,并且提供了有用的信息。

  • 视图提供的所有统计信息

  • schema下对象统计

  • 显示了冗余的索引

  • 显示了哪些会话被元数据锁锁定,什么锁定了它们

  • 表操作的统计,io和延迟的统计

  • 表操作的统计,io和延迟的统计,和内存的分配

  • 显示了哪些表被表扫描访问

  • 未使用过的索引

  • 和processlist相似但是不显示后台进程

  • 对于每个连接显示SSL版本,chipher和count

  • 显示了语句的执行情况,执行次数,响应行数,延迟等

  • 语句的错误或者警告

  • 用到了表扫描的语句

  • runtimes在95%以内的语句

  • 执行了排序的语句

  • 使用了临时表的语句

  • 用户总计信息,包含语句,文件io,连接

  • 用户文件io总计

  • 用户文件io类型总计

  • 用户stage事件总计

  • 用户在执行语句上的延迟

  • 用户在语句类型上的延迟

  • 版本

  • 等待类型延迟汇总,由平均延迟排序

  • 等待类型延迟汇总,由总延迟排序

  • host,等待事件延迟汇总

  • 用户等待事件延迟

  • 等待事件延迟。

  • 创建一个别名数据库,指向被引用的数据库,使用视图指向被引用数据库的表

  • 当前服务器的状态,包含了mysql服务版本信息,系统变量,innodb状态,processlist,内存使用信息,performance_schema状态,和一些状态信息。输出到diag.out文件

  • 以已准备好的语句,来执行。准备好的语句在执行完成后被释放,所以并不能重用。可以用来执行的动态语句。

  • 禁止后台进程的所有性能框架记录点

  • 禁用某个消费者

  • 禁用记录点

  • 根据连接id,禁用某个线程

  • 启动后台线程的性能框架记录

  • 启动某个性能框架消费者

  • 启动某个性能框架记录点

  • 启动某个连接id对应线程的记录点

  • 重新加载性能框架配置,使用之前ps_setup_save保存的配置

  • 重置到默认配置

  • 保存性能框架配置,这样可以根据调试要求先调整,然后恢复

  • 显示当前所有禁用的配置

  • 显示所有禁用的消费者

  • 显示禁用的记录点

  • 显示启动的性能框架配置

  • 显示启动的消费者

  • 显示启动的记录点

  • 直方图显示语句的平均延迟

  • 跟踪指定语句digest的所有性能记录点。

  • 指定连接id的所有性能记录点

  • 清空所有性能框架summary表

  • 创建语句在服务端上运行的报表

  • 判断是否存在表,视图,临时表

24.4.4 sys框架存储过程

mysql> tee diag.out;
mysql> CALL diagnostics(120, 30, ‘current‘);
mysql> notee;

24.4.5 sys框架存储函数


根据文件路径获取对应的数据库名


根据文件路径获取表名


给字节数,转化为可读的格式


文件路径格式化


格式化语句输出,输出长度和statement_truncate_len配置有关。


时间格式化


增加一个由逗号隔开的队列中。


从逗号隔开的队列的队列中删除一个元素


判断账号是否启动


判断消费者是否启动


判断记录点是否默认启动


给定记录点默认是否是被计时的。


判断连接id对应的性能框架记录点启动


给定连接id,判断线程启动的用户。


给定连接id返回线程id


给定线程id,返回json格式的语句,stages,events的stack


返回线程id的事务和已经执行的语句


引用分隔符


获取sys_config表的数据


mysql主版本


mysql次版本


mysql补丁号

热门排行

今日推荐

热门手游