Skip to content

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的补丁版本号

上一篇: sys schema 进度报告 | 下一篇: sys_config表

Clone this wiki locally