Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册

DbWatcher

一个守望数据库的老菜鸟

  • 博客访问: 49794
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 639
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-22 09:50
  • 认证徽章:
个人简介

一个守望数据库的老菜鸟

文章分类

全部博文(60)

文章存档

2017年(36)

2016年(24)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
快速了解MySQL 5.7 sys schema 2017-10-12 09:07:33

分类: Mysql/postgreSQL

博客文章除注明转载外,均为原创。转载请注明出处。
本文链接地址:http://blog.chinaunix.net/uid-31396856-id-5773616.html


       MySQL的performance_schema提供监控策略及大量监控项,包括:元数据锁、进度跟踪、事务、内存使用及存储程序等。但是,performance_schema又过于复杂,操作不便,所以5.7新增了 sys schema,基础数据来自于 performance 跟 information_shcema两个库,本身数据库不存储及集采数据。降低了performance_schema的复杂度,让DBA能使用sys,更快的了解DB的运行情况。
       sys_schema用两种形式的表/视图:一种是字母开头: 适合人阅读,显示是格式化的数据;一种x$开头的原始类数据的表, 适合工具采集数据。 
       
1、表和触发器:
/触发器 说明
sys_config sys schema配置选项
sys_config_insert_set_user sys_config insert(插入)触发器,sys_config表格发生INSERT操作,则会触发该触发器更新sys_config的set_by列
sys_config_update_set_user sys_config update(更新)触发器,sys_config表格发生UPDATE操作,则会触发该触发器更新sys_config的set_by列

2、视图
视图
说明
host_summary, x$host_summary 统计以主机为分组统计活动的语句,文件I/O, 连接等信息
host_summary_by_file_io, x$host_summary_by_file_io 文件IO
host_summary_by_file_io_type, x$host_summary_by_file_io_type 主机和事件类型的文件I/O
host_summary_by_stages, x$host_summary_by_stages 按照主机分类的语句阶段执行信息
host_summary_by_statement_latency, x$host_summary_by_statement_latency 按照主机分类的语句统计
host_summary_by_statement_type, x$host_summary_by_statement_type 按照主机和SQL执行的语句信息
innodb_buffer_stats_by_schema, x$innodb_buffer_stats_by_schema 按照schema统计InnoDB buffer 信息
innodb_buffer_stats_by_table, x$innodb_buffer_stats_by_table 按照schema和表统计InnoDB buffer 信息
innodb_lock_waits, x$innodb_lock_waits InnoDB lock锁信息
io_by_thread_by_latency, x$io_by_thread_by_latency 线程消耗IO
io_global_by_file_by_bytes, x$io_global_by_file_by_bytes 文件IO消耗大小信息
io_global_by_file_by_latency, x$io_global_by_file_by_latency 文件IO延迟信息
io_global_by_wait_by_bytes, x$io_global_by_wait_by_bytes 按照大小( bytes)的全局 I/O 消耗
io_global_by_wait_by_latency, x$io_global_by_wait_by_latency IO消耗的延迟信息
latest_file_io, x$latest_file_io 最近使用文件I/O信息
memory_by_host_by_current_bytes, x$memory_by_host_by_current_bytes 主机使用内存信息
memory_by_thread_by_current_bytes, x$memory_by_thread_by_current_bytes 线程使用内存信息
memory_by_user_by_current_bytes, x$memory_by_user_by_current_bytes 用户使用内存信息
memory_global_by_current_bytes, x$memory_global_by_current_bytes 内存使用分配的类型
memory_global_total, x$memory_global_total 内存统计信息
metrics 服务器度量
processlist, x$processlist Processlist 进程信息
ps_check_lost_instrumentation 失效的便利
schema_auto_increment_columns AUTO_INCREMENT 自增长列信息
schema_index_statistics, x$schema_index_statistics 索引统计信息
schema_object_overview 每个schema的对象类型
schema_redundant_indexes 重复/冗余的索引
schema_table_lock_waits, x$schema_table_lock_waits 等待MDL的会话
schema_table_statistics, x$schema_table_statistics 表统计信息
schema_table_statistics_with_buffer, x$schema_table_statistics_with_buffer 表统计信息,包含InnoDB buffer pool统计信息
schema_tables_with_full_table_scans, x$schema_tables_with_full_table_scans 全表访问的表
schema_unused_indexes 没有使用的index
session, x$session 用户会话的Processlis信息
session_ssl_status SSL连接信息
statement_analysis, x$statement_analysis SQL语句汇总信息统计
statements_with_errors_or_warnings, x$statements_with_errors_or_warnings 含有错误和警告的SQL
statements_with_full_table_scans, x$statements_with_full_table_scans 执行时候全表扫描的语句
statements_with_runtimes_in_95th_percentile,x$statements_with_runtimes_in_95th_percentile 平均运行时间很长的sql
statements_with_sorting, x$statements_with_sorting 排序的SQL语句
statements_with_temp_tables, x$statements_with_temp_tables 使用临时表的SQL玉溪
user_summary, x$user_summary 用户语句和活动连接信息
user_summary_by_file_io, x$user_summary_by_file_io 用户相关文件 I/O信息
user_summary_by_file_io_type, x$user_summary_by_file_io_type 用户相关文件FI/O类型信息
user_summary_by_stages, x$user_summary_by_stages 用户阶段事件和延迟信息
user_summary_by_statement_latency, x$user_summary_by_statement_latency 以统计sql语句信息
user_summary_by_statement_type, x$user_summary_by_statement_type 按照用户和event(事件)已执行的SQL语句信息
version 当前sys schema版本和MySQL版本
wait_classes_global_by_avg_latency, x$wait_classes_global_by_avg_latency 事件类型分类的平均延迟
wait_classes_global_by_latency, x$wait_classes_global_by_latency 事件类型的延迟统计
waits_by_host_by_latency, x$waits_by_host_by_latency 按照主机分类的事件系想你
waits_by_user_by_latency, x$waits_by_user_by_latency 按用户统计的事件
waits_global_by_latency, x$waits_global_by_latency 按事件统计的事件信息
x$ps_digest_95th_percentile_by_avg_us
x$ps_digest_avg_latency_distribution
x$ps_schema_table_statistics_io
x$schema_flattened_keys

3.视图分类
(1)host_summary,这个是服务器层面的,比如里面的视图host_summary_by_file_io                                       
(2)user_summary,这个是用户层级的,比如里面的视图user_summary_by_file_io                                          
(3)InnoDB,这个是InnoDB层面的,比如innodb_buffer_stats_by_schema/ innodb_buffer_stats_by_table /innodb_lock_waits 
(4)IO,这个是I/O层的统计,比如视图 io_global_by_file_by_bytes                                                     
(5)memory,关于内存的使用情况,比如视图memory_by_host_by_current_bytes                                            
(6)schema,关于schema级别的统计信息,比如schema_table_lock_waits                                                  
(7)session,关于会话级别的,这个视图少一些,就两个,session和session_ssl_status                                   
(8)statement,关于语句级别的,比如statements_with_errors_or_warnings                                              
(9)wait,关于等待的,目前只有基于io/file, lock/table, io/table这三个方面    

4.使用介绍

(1)查看会话和连接

select * from sys.processlist;
select * from sys.session;

查看当前连接情况:

select host, current_connections, statements from host_summary;


(2) 查看表访问情况

 select table_schema,table_name,sum(io_read_requests+io_write_requests) io from schema_table_statistics group by table_schema,table_name order by io desc limit 10;

(3) 冗余索引与未使用索引

--冗余索引查看
select table_schema,table_name,redundant_index_name,redundant_index_columns,dominant_index_name,dominant_index_columns from sys.schema_redundant_indexes;

--未使用索引查看
select * from schema_unused_indexes;


(4) 表自增ID监控

select * from schema_auto_increment_columns \G

5)监控全表扫描的sql语句

select * from sys.statements_with_full_table_scans where db = 'test';

(6)查看实际消耗磁盘IO的文件

select file,avg_read+avg_write as avg_io from io_global_by_file_by_bytes order by avg_io desc limit 10;


(7)
MySQL运行的线程数

select user, count(*) from processlist group by user;

(8)SQL相关

查看当前正在执行的SQL:

select  conn_id, user, current_statement, last_statement from session;

系统里执行的TOP 10 SQL。

SQL如下:

select * from statement_analysis order by exec_count desc limit 10\G;

消耗IO最大排在前10表

select * from io_global_by_file_by_bytes limit 10;

访问次数最多排在前10的表

select * from statement_analysis order by exec_count desc limit 10\G;

延迟严重的10条SQL语句:

    select * from statement_analysis order by avg_latency desc limit 10;

使用临时表的前10的SQL

select db, query, tmp_tables, tmp_disk_tables  from statement_analysis where tmp_tables>0 or tmp_disk_tables >0 order by (tmp_tables+tmp_disk_tables) desc limit 10;

使用buffer pool最多的

select * from innodb_buffer_stats_by_table order by pages desc limit 10;
每个连接使用的内存统计 

select b.user, current_count_used, current_allocated, current_avg_alloc, current_max_alloc, total_allocated,current_statement from memory_by_thread_by_current_bytes a, session b where a.thread_id = b.thd_id;

---The end
阅读(80) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册