-
Notifications
You must be signed in to change notification settings - Fork 111
sys schema目录
xiaoboluo768 edited this page Jun 9, 2020
·
3 revisions
- 以下几个表中列出了sys schema对象列表及其对应的简短描述信息
- sys Schema表和触发器
表和触发器名称 | 描述信息 |
---|---|
sys_config | sys schema配置选项表 |
sys_config_insert_set_user | sys_config 表insert触发器 |
sys_config_update_set_user | sys_config表update触发器 |
- sys schema视图
视图名称 | 描述信息(数据来源中没明确说明schema的默认为performance_schema,大多数的数值字段都是经过SUM、COUNT等聚合函数进行求和,sys.format_time、format_bytes等函数进行单位转换再输出的,对于x$视图也会进行聚合但不会进行单位转换) |
---|---|
host_summary, x$ host_summary |
按照主机分组的活跃语句、文件I/O和会话连接摘要信息,数据来源:performance_schema.accounts、sys.x$host_summary_by_statement_latency、sys.x$host_summary_by_file_io |
host_summary_by_file_io, x$host_summary_by_file_io |
按照主机分组的文件I/O摘要信息,数据来源:events_waits_summary_by_host_by_event_name |
host_summary_by_file_io_type, x$host_summary_by_file_io_type |
按照主机和事件名称分组的文件I/O摘要信息,数据来源:events_waits_summary_by_host_by_event_name |
host_summary_by_stages, x$host_summary_by_stages |
按照主机分组的阶段事件摘要信息,数据来源:events_stages_summary_by_host_by_event_name |
host_summary_by_statement_latency, x$host_summary_by_statement_latency |
按照主机分组的语句事件摘要信息,数据来源:events_statements_summary_by_host_by_event_name |
host_summary_by_statement_type, x$host_summary_by_statement_type |
按照主机和语句分组的当前语句执行摘要信息(执行时间不为0),数据来源:events_statements_summary_by_host_by_event_name |
innodb_buffer_stats_by_schema, x$innodb_buffer_stats_by_schema |
按照schema分组的 InnoDB缓冲区统计信息,数据来源:information_schema.innodb_buffer_page |
innodb_buffer_stats_by_table, x$innodb_buffer_stats_by_table |
按照schema和表分组的 InnoDB缓冲区统计信息,数据来源:information_schema.innodb_buffer_page |
innodb_lock_waits, x$innodb_lock_waits |
InnoDB当前锁等待信息,数据来源:information_schema的innodb_trx、innodb_locks、innodb_lock_waits |
io_by_thread_by_latency, x$io_by_thread_by_latency |
按照线程ID、进程ID、用户名分组的 I/O等待时间开销统计信息,数据来源:events_waits_summary_by_thread_by_event_name、threadss |
io_global_by_file_by_bytes, x$io_global_by_file_by_bytes |
按照文件分组、读写字节数排序的全局I/O读写字节数统计信息,数据来源:file_summary_by_instance |
io_global_by_file_by_latency, x$io_global_by_file_by_latency |
按照文件分组、IO等待时间排序的全局I/O读写操作时间开销统计信息,数据来源:file_summary_by_instance |
io_global_by_wait_by_bytes, x$io_global_by_wait_by_bytes |
按照文件分组、读写字节数排序的全局I/O等待时间统计信息,数据来源:file_summary_by_event_name |
io_global_by_wait_by_latency, x$io_global_by_wait_by_latency |
按照文件分组、IO等待时间排序的全局I/O等待时间统计信息,数据来源:file_summary_by_event_name |
latest_file_io, x$latest_file_io |
按照文件和线程分组、文件IO操作开始时间排序的最新的已经执行完成的I/O等待时间信息,数据来源:events_waits_history_long、threads、information_schema.processlist |
memory_by_host_by_current_bytes, x$memory_by_host_by_current_bytes |
按照客户端主机分组的内存使用统计信息,数据来源:memory_summary_by_host_by_event_name |
memory_by_thread_by_current_bytes, x$memory_by_thread_by_current_bytes |
按照线程ID分组的内存使用统计信息,数据来源:memory_summary_by_thread_by_event_name、threads |
memory_by_user_by_current_bytes, x$memory_by_user_by_current_bytes |
按照用户分组的内存使用统计信息,数据来源:memory_summary_by_user_by_event_name |
memory_global_by_current_bytes, x$memory_global_by_current_bytes |
按照内存分配类型(事件类型)分组的内存使用统计信息,数据来源:memory_summary_global_by_event_name |
memory_global_total, x$memory_global_total |
总内存使用量统计,数据来源:memory_summary_global_by_event_name |
metrics | server的计数指标,包含innodb内部的一些度量和全局状态变量,数据来源:performance_schema的global_status、memory_summary_global_by_event_name,information_schema.innodb_metrics、NOW()和UNIX_TIMESTAMP()函数 |
processlist, x$processlist |
包含所有前台和后台线程的进程列表信息,数据来源:performance_schema的threads、events_waits_current、events_statements_current |
ps_check_lost_instrumentation | 查询发生监控丢失的instruments对应的状态变量值,数据来源:global_status |
schema_auto_increment_columns | 查询排序系统字典库之外所有库中基表具有自增属性的自增列相关属性及其表相关的信息,数据来源:INFORMATION_SCHEMA的COLUMNS、TABLESS |
schema_index_statistics, x$schema_index_statistics |
查看索引统计信息,数据来源:table_io_waits_summary_by_index_usage |
schema_object_overview | 查看每个schema中所有对象的类型列表及其数量信息,数据来源:information_schema的routines、tables、statistics、triggers、events |
schema_redundant_indexes | 查找重复或冗余索引,数据来源:x$schema_flattened_keys |
schema_table_lock_waits, x$schema_table_lock_waits |
查看当前链接线程的MDL锁等待信息,数据来源:threads、metadata_locks、events_statements_current |
schema_table_statistics, x$schema_table_statistics |
查看表统计信息,数据来源:table_io_waits_summary_by_table、x$ps_schema_table_statistics_io |
schema_table_statistics_with_buffer, x$schema_table_statistics_with_buffer |
查询表统计信息,包括InnoDB缓冲池统计信息,数据来源:table_io_waits_summary_by_table、x$ps_schema_table_statistics_io、sys.x$innodb_buffer_stats_by_table |
schema_tables_with_full_table_scans, x$schema_tables_with_full_table_scans |
查询正在执行全扫描访问的表,数据来源:table_io_waits_summary_by_index_usage |
schema_unused_indexes | 查看不活跃的索引(未使用),数据来源:table_io_waits_summary_by_index_usage |
session, x$session |
查看当前用户会话的进程列表信息,数据来源:sys.processlist |
session_ssl_status | 查看SSL链接状态信息,数据来源:status_by_thread |
statement_analysis, x$statement_analysis |
查看语句汇总统计信息,数据来源:events_statements_summary_by_digest |
statements_with_errors_or_warnings, x$statements_with_errors_or_warnings |
查看产生错误或警告的语句,数据来源:events_statements_summary_by_digest |
statements_with_full_table_scans, x$statements_with_full_table_scans |
查看全表扫描或者没有使用到最优索引的语句,数据来源:events_statements_summary_by_digest |
statements_with_runtimes_in_95th_percentile, x$statements_with_runtimes_in_95th_percentile |
查看平均执行时间值大于95%平均执行时间分布值的语句(可近视地认为是平均执行时间超长的语句),数据来源:events_statements_summary_by_digest、sys.x$ps_digest_95th_percentile_by_avg_us |
statements_with_sorting, x$statements_with_sorting |
查看执行了文件排序的语句,数据来源:events_statements_summary_by_digest |
statements_with_temp_tables, x$statements_with_temp_tables |
查看使用了临时表的语句,数据来源:events_statements_summary_by_digest |
user_summary, x$user_summary |
查看活跃连接中按用户分组的总执行时间、平均执行时间、总的IOPS、总的内存使用量、表扫描数量等信息,数据来源:accounts、sys.x$user_summary_by_statement_latency、sys.x$user_summary_by_file_io、sys.x$memory_by_user_by_current_bytes |
user_summary_by_file_io, x$user_summary_by_file_io |
按照用户分组的文件I/O等待、IOPS摘要信息,数据来源:events_waits_summary_by_user_by_event_name |
user_summary_by_file_io_type, x$user_summary_by_file_io_type |
按照用户和事件类型分组的文件I/O等待和IOPS摘要信息,数据来源:events_waits_summary_by_user_by_event_name |
user_summary_by_stages, x$user_summary_by_stages |
按用户分组的阶段事件摘要信息,数据来源:events_stages_summary_by_user_by_event_name |
user_summary_by_statement_latency, x$user_summary_by_statement_latency |
按照用户分组的语句摘要信息,数据来源:events_statements_summary_by_user_by_event_name |
user_summary_by_statement_type, x$user_summary_by_statement_type |
按用户和语句事件类型分组的语句摘要信息,数据来源:events_statements_summary_by_user_by_event_name |
version | 查看当前的sys schema和MySQL server版本,数据来源:select '1.5.1'常数查询和version()函数输出 |
wait_classes_global_by_avg_latency, x$wait_classes_global_by_avg_latency |
按照数据库事件大类(等待事件名称前三级前缀)分组(如:wait/io/table、wait/io/file、wait/lock/table)的等待事件平均延迟时间(总等待时间/总IOPS)等摘要信息,数据来源:events_waits_summary_global_by_event_name |
wait_classes_global_by_latency, x$wait_classes_global_by_latency |
按照数据库事件大类(等待事件名称前三级前缀)分组(如:wait/io/table、wait/io/file、wait/lock/table)的等待事件等摘要信息,数据来源:events_waits_summary_global_by_event_name |
waits_by_host_by_latency, x$waits_by_host_by_latency |
按照主机和事件名称分组的等待事件摘要信息,数据来源:events_waits_summary_by_host_by_event_name |
waits_by_user_by_latency, x$waits_by_user_by_latency |
按照用户和事件名称分组的等待事件摘要信息,数据来源:events_waits_summary_by_user_by_event_name |
waits_global_by_latency, x$waits_global_by_latency |
按照事件名称分组的等待事件摘要信息,数据来源:events_waits_summary_global_by_event_name |
x$ps_digest_95th_percentile_by_avg_us | 帮助视图,计算语句百分之九十五的平均执行时间分布值,帮助statements_with_runtimes_in_95th_percentile视图输出语句平均执行时间大于95%平均分布值的语句统计信息,数据来源:events_statements_summary_by_digest、sys.x$ps_digest_avg_latency_distribution |
x$ps_digest_avg_latency_distribution | 帮助视图,用于帮助x$ps_digest_95th_percentile_by_avg_us视图生成语句百分之九十五的平均执行时间分布值,数据来源:events_statements_summary_by_digest |
x$ps_schema_table_statistics_io | 帮助视图,用于帮助schema_table_statistics,x$schema_table_statistics、schema_table_statistics_with_buffer,x$schema_table_statistics_with_buffer表统计视图生成表统计信息,数据来源:file_summary_by_instance |
x$schema_flattened_keys | 帮助视图,用于帮助schema_redundant_indexes视图输出冗余索引信息,数据来源:INFORMATION_SCHEMA.STATISTICS |
- sys Schema存储过程
存储过程名称 | 描述 |
---|---|
create_synonym_db() | 创建一个指定库的同义词库,例如:call create_synonym_db('information_schema','is');,该存储过程会查询information_schema库下的所有表字段信息来在is库下 创建一个同名的视图,对is库下视图的查询其实就相当于是在查询information_schema下的表 |
diagnostics() | 收集系统诊断信息,数据来源:sys.metrics,会更新performance_schema的threads、setup_consumers、setup_instruments,会调用sys.sys_get_config()获取sys schema配置、 sys.ps_setup_disable_thread()关闭connection_id()线程、sys.ps_setup_save()保存sys schema配置等等一些列相关的sys schema对象,会修改sql_log_bin = 0, 执行select ...@@variables_name形式查询一些全局系统变量,查询information_schema的ENGINES、TABLES、GLOBAL_VARIABLES, 查询performance_schema的GLOBAL_VARIABLES、replication_*表等,查询mysql的slave_master_info、slave_relay_log_info等, 然后把这些查询到的值保存到一个临时表tmp_sys_views_delta中进行一些数据处理再输出 |
execute_prepared_stmt() | 执行预编译语句,调用该存储过程时传入一个SQL语句,会使用prepare的方式来执行该SQL语句 |
ps_setup_disable_background_threads() | 禁用所有后台线程检测,通过修改performance_schema.threads表,把所有后台线程的instrumented字段设置为NO实现 |
ps_setup_disable_consumer() | 禁用指定consumers,通过修改performance_schema.setup_consumers表,调用时传入值作为name字段值,修改enabled字段为NO实现 |
ps_setup_disable_instrument() | 禁用指定instruments,通过修改performance_schema.setup_instruments表,调用时传入值作为name字段值,修改enabled和timed字段为NO实现 |
ps_setup_disable_thread() | 禁用指定线程的检测功能,通过修改performance_schema.threads表,调用时传入值作为processlist_id字段值,修改instrumented字段为NO实现 |
ps_setup_enable_background_threads() | 启用所有后台线程检测功能,通过修改performance_schema.threads表,把所有后台线程的instrumented字段设置为YES实现 |
ps_setup_enable_consumer() | 启用指定的consumers,通过修改performance_schema.setup_consumers表,调用时传入值作为name字段值,修改enabled字段为YES实现 |
ps_setup_enable_instrument() | 启用指定的instruments,通过修改performance_schema.setup_instruments表,调用时传入值作为name字段值,修改enabled和timed字段为YES实现 |
ps_setup_enable_thread() | 启用指定的线程检测功能,通过修改performance_schema.threads表,调用时传入值作为processlist_id字段值,修改instrumented字段为YES实现 |
ps_setup_reload_saved() | 重新加载之前调用ps_setup_save()存储过程时保存在临时表中的threads、setup_consumers、setup_instruments、setup_actors配置信息, 调用该存储过程依赖于ps_setup_save()存储过程创建的配置备份临时表,如果之前没有调用过ps_setup_save()存储过程,该存储过程无法执行 |
ps_setup_reset_to_default() | 重置performance_schema配置为默认值,对于setup_actors表直接清空重新插入,对于setup_instruments表, 通过查询sys.ps_is_instrument_default_enabled(NAME)和sys.ps_is_instrument_default_timed(NAME)函数返回event_name的默认值来更新, 对于setup_consumers表直接使用IF(NAME IN (''xxx'',...), ''YES'', ''NO'')函数返回值更新,对于setup_objects表delete ... where not in ('xxx'...)来删除除了默认配置行之外的配置行, 然后按照默认的配置行字段值重新更新这些默认配置行,对于threads表,更新所有线程的INSTRUMENTED字段为YES |
ps_setup_save() | 保存performance_schema当前的配置表,通过对threads、setup_actors、setup_consumers、setup_instruments表都创建一张相同结构的临时表, 通过insert ... select...语句拷贝当前配置数据到临时表实现,期间关闭了sql_log_bin参数防止该操作写入binlog中,操作完之后再改回默认值 |
ps_setup_show_disabled() | 查看当前被禁用的performance_schema配置信息(所有配置表),通过查询setup_actors表enabled为NO、setup_objects表enabled为NO、 setup_consumers表enabled为NO、threads表INSTRUMENTED为NO、setup_instruments表enabled为NO 实现,其中,调用时传递的两个布尔型值 ,第一个为控制是否打印setup_instruments表中关闭的配置,第二个控制是否打印threads表关闭的配置,因为这俩表打印的信息最多,所以需要单独传值控制 |
ps_setup_show_disabled_consumers() | 查看当前禁用的setup_consumers配置,通过查询performance_schema.setup_consumers表enabled字段为NO实现 |
ps_setup_show_disabled_instruments() | 查看当前performance_schema中禁用的instruments配置,通过查询performance_schema.setup_instruments表enabled字段为NO的值实现 |
ps_setup_show_enabled() | 查看当前启用的performance配置(所有配置表),通过查询setup_actors表enabled为YES、setup_objects表enabled为YES、setup_consumers表enabled为YES、 threads表INSTRUMENTED为YES、setup_instruments表enabled为YES实现,其中,调用时传递的两个布尔型值,第一个为控制是否打印setup_instruments表中启用的配置, 第二个控制是否打印threads表启用的配置,因为这俩表打印的信息最多,所以需要单独传值控制 |
ps_setup_show_enabled_consumers() | 查看当前启用的setup_consumers配置,通过查询performance_schema.setup_consumers表enabled字段为YES实现 |
ps_setup_show_enabled_instruments() | 查看当前performance_schema中启用的instruments配置,通过查询performance_schema.setup_instruments表enabled字段为YES的值实现 |
ps_statement_avg_latency_histogram() | 显示语句延迟直方图,通过查询sys.x$ps_digest_avg_latency_distribution视图进行一些数据处理实现 |
ps_trace_statement_digest() | 用于Trace给定digest值(第一个传参)的语句的Performance Schema监控过程,根据传入的采集时间和采集间隔(第二第三传参), 定期从events_statements_history_long和events_stages_history_long表中采集数据,分别创建两张临时表stmt_trace、stmt_stages, 从两张consumers表中使用insert ... select...语句插入临时表,每个采集间隔时间操作一次该语句, 然后通过查询各种统计聚合要求从这两张表中执行查询并打印,期间会关闭后台线程和执行该存储过程调用的线程的instruments采集和binlog记录功能, 第四个传参控制是否在执行trace数据收集前清空两个历史事件记录表,第五个传参控制是否自动开启需要的consumers表 |
ps_trace_thread() | 用于trace只指定线程ID的事件信息,一共7个传参,第一个为线程ID,第二个为打印信息输出文件路径(dot格式文件),第三个为收集数据最大时长(指定Null默认为60秒), 第四个为采集间隔(指定null默认为1秒),第五个为在执行数据收集之前是否清空所有performance_schema历史事件数据, 第六个为是否关闭除了自己外的其他线程及其开启所有的instruments和consumers,第七个为是否打印event_name对应的源文件和代码行号, 最后会打印dot转换为PDF和PNG的命令(注:dot命令为graphviz的rpm包安装) |
ps_truncate_all_tables() | 清空performance_schema下的%summary%和%history%表,有一个传参,表示是否在每一张表执行清空前打印表名,如果为FALSE,则不打印, 只在执行操作完成最后打印总操作表数量 |
statement_performance_analyzer() | 创建一个当前服务器中正在执行的语句的分析报告,该报告是根据在events_statements_summary_by_digest中的总数据或者 events_statements_summary_by_digest表中的增量数据进行估算的,使用该存储过程步骤较为复杂,完整步骤为7个,最少步骤为3个, 使用过程中可以使用临时表保存中间数据(根据三个传参具体值而定),然后基于中间数据做对比来输出全量、增量数据报告等 |
table_exists() | 查看指定表是否存在,传入两个入参和一个出参,入参为库名和表名,出参为返回表类型,如果表存在则会返回该表的类型(TEMPORARY、BASE TABLE、VIEW), 如果不存在或者不是临时表、不是基表、不是视图则返回空值 |
- sys schema函数
函数名称 | 描述 |
---|---|
extract_schema_from_file_name() | 从给定文件路径名中提取schema名称 |
extract_table_from_file_name() | 从给定文件路径名中提取表名 |
format_bytes() | 将字节值转换为其他单位的值,根据字节数值大小,自动转换为KB、MB、GB、TB、PB这些可读单位 |
format_path() | 用变量符号值替换路径名中匹配到的datadir、tmpdir、slave_load_tmpdir、innodb_data_home_dir、innodb_log_group_home_dir、basedir、innodb_undo_directory, 给定null值返回null,给定值不匹配的直接返回原值 |
format_statement() | 将长语句文本截断为固定长度,该长度由配置变量@sys.statement_truncate_len控制,默认值在sys_config表中为64字节,执行长度截取时,是截取前30字节+'. .. '+ 后30字节, 然后把这64字节中包含的\n字符替换为空格 |
format_time() | 将皮秒值转换为其他单位值,根据皮秒值大小,自动转换为ns、us、ms、s、m、h、d、w这些可读单位 |
list_add() | 将指定文本添加到一个指定名称的列表中,由两个传参定义,传入一个列表和一个字符串,返回值为在这个传入列表基础上添加了传入字符串的列表, 如添加会话级别的sql_mode:set sql_mode=select sys.list_add(@@sql_mode,'ANSI_QUOTES');利用该函数来操作一些列表型系统变量可以减少人工赋值的失误 |
list_drop() | 与list_add()函数类似,只是是从传入列表中删除传入字符串 |
ps_is_account_enabled() | 检查在setup_actors表中是否启用了指定account的监控功能 |
ps_is_consumer_enabled() | 根据setup_consumers表中所有consumers的enabled字段设置值,按照consumers生效优先级返回该consumers是否真正生效, 而不仅仅是返回该consumers在setup_consumers中的enabled字段值设置 |
ps_is_instrument_default_enabled() | 在setup_instruments表中检查指定instruments默认是否启用,默认只启用'wait/io/file/%'、'wait/io/table/%'、'statement/%'、'memory/performance_schema/%'、 'wait/lock/table/sql/handler'、'idle'、'stage/innodb/%'、'stage/sql/copy to tmp table',传入参数值不匹配这些instruments即表示是默认关闭的instruments |
ps_is_instrument_default_timed() | 在setup_instruments表中检查指定instruments是否启用定时器功能,默认只启用'wait/io/file/%'、'wait/io/table/%'、'statement/%'、'wait/lock/table/sql/handler'、'idle'、'stage/innodb/%'、 'stage/sql/copy to tmp table'这些instruments的timed,传入参数值不匹配这些instruments即表示是默认关闭 |
ps_is_thread_instrumented() | 在threads表中检查指定线程是否启用了监控功能 |
ps_thread_account() | 在threads表中查询并返回给定内部线程ID号的account名称 |
ps_thread_id() | 在threads表中查询并返回连接ID(processlist_id)的内部线程ID |
ps_thread_stack() | 在events_statements_history_long、events_waits_history_long、events_stages_history_long表中查询并返回指定内部线程ID的事件信息(json格式返回) |
ps_thread_trx_info() | 在events_transactions_current、events_transactions_history、events_statements_history表中查询并返回指定内部线程ID的事务信息(json格式返回) |
quote_identifier() | 返回字符串作为引用的标识符,即给字符串前后加上反撇,对于已存在的反撇直接替换为两个反撇 |
sys_get_config() | 返回sys schema的配置选项,两个传参,第一个是要查看的配置变量名称,第二个是传入的默认值,如果在sys.sys_config表中查询到了该变量的非null值,则直接返回, 如果查询到是null值,则使用第二个传参返回 |
version_major() | 通过version()函数获取并返回MySQL server的主版本号 |
version_minor() | 通过version()函数获取并返回MySQL server的次要版本号 |
version_patch() | 通过version()函数获取并返回MySQL server的补丁版本号 |
- 参考链接:
- https://dev.mysql.com/doc/refman/5.7/en/sys-schema-object-index.html
- PS:关于metrics表调用的information_schema.innodb_metrics表详细描述信息见链接:
- 度量统计信息相关系统变量:https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_monitor_reset
- information_schema.innodb_metrics表详解:https://dev.mysql.com/doc/refman/5.7/en/innodb-metrics-table.html
上一篇: sys schema 进度报告 | 下一篇: sys_config表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!