MySQLのSYSスキーマ(MySQLの5.7が導入されました)

MySQLは5.7 新発売SYSスキーマをsysがあるMySQLがインストール、システムライブラリが付属して5.7 MySQLの以降のバージョン、使用してmysqldを自動的に作成し、初期化時にsysのライブラリを。

sysのテーブル、ビュー、関数のライブラリ内部を、ストアドプロシージャは私たちがより便利に、より速く習得することができますMySQLの文は、一時テーブル、使うかなどのいくつかの情報、SQLは、インデックス、使用していないスキーマを見つけるために、冗長なインデックスを持っているが全表スキャンを使用SQLを、ユーザーが占有見つけIO など、SYSのデータはほとんどから、これらのビューをカレーperformance_schema GET内部。目標があるにperformance_schemaの複雑さの低減、私たちはすぐに理解してみましょうDB 走行状態を。

1 、SYSライブラリの概要

基づいてのMySQL 5.7.24 実験のバージョン。我々見つけるSYSスキーマが含ま1つの。テーブル、100のビュー、ストアドプロシージャ、関数、および合計48個のアイテムを、下に示す次のように

image.png

image.png

image.png

私たちはしばしば使用され、SYSスキーマの次の下のビューには、我々が検出された各ビューの役割を説明し、SYSスキーマビューは2つのカテゴリに分類され、1は通常、全体の文字で始まるれる52 Geが、1ですx $の始まり、の合計48 のGe。ビューショー最初の文字が読みやすくデータをフォーマットして、$ xはデータ収集の始まり、ショーの生の未処理データのためのツールのビューを。

 私たちは、の文字で始まる次のカテゴリを分析する52 ビュー:

  • host_summary:これに、サーバレベルであるIPのようなビューの内部のようなパケット、host_summary_by_file_io

  • user_summary:これは、ビューの内部など、ユーザレベル、ユーザパケットであり、user_summary_by_file_io

  • InnoDBは:これはのInnoDB ようなビューとして、レベルinnodb_buffer_stats_by_schema

  • IOは:これは、I / O などのビューのよう統計層、io_global_by_file_by_bytes

  • メモリ:なビューなどのメモリ使用量、上memory_by_host_by_current_bytes

  • スキーマスキーマなどの統計レベル、schema_table_lock_waits

  • セッション:セッションレベルで、あまりこれらの、唯一のいくつかの観点セッションsession_ssl_status

  • 書の実施例のためのレベルに関する声明statements_with_errors_or_warnings

  • 待ち時間:このようなビューを、上の待機waits_by_host_by_latency

 

2 、一般的に使用されるクエリ紹介*****

1) 各クライアントの表示IP リソースの量を超える接続を消費

host_summaryから*を選択します。

2)データファイルには、多くのしている表示するにはIOの要求を

io_global_by_file_by_bytesから*を選択します。

3)各ユーザーが消費するリソースの量を確認してください

user_summaryから選択*;

4)の合計に割り当てられているどのくらいのメモリ参照に

memory_global_totalから選択*;

5)どこから、データベースの状況へのデータベース接続、および接続要求が似ているのですか?

- あなたの現在の接続を確認してください

ホスト、current_connections、host_summaryから文を選択します。

6)現在実行中のチェックSQL と実行をフルPROCESSLISTショー効果はかなりあります

conn_id、ユーザー、current_statement、セッションからlast_statementを選択します。

7) データベースSQLを頻繁に実行されますか?

-照会するには、次のコマンドを実行して、TOP 10 最もホットなSQLを

select db,exec_count,query from statement_analysis order by exec_count desc limit 10;
8)
、哪个文件产生了最多的IO,读多,还是写的多

select * from io_global_by_file_by_bytes limit 10;

9)、哪个表上的IO请求最多

select * from io_global_by_file_by_bytes where file like '%ibd' order by total desc limit 10;

10)、哪个表被访问的最多?

先访问statement_analysis,根据热门SQL排序找到相应的数据表。

哪些语句延迟比较严重?

查看statement_analysisavg_latency的最高的SQL

select * from statement_analysis order by avg_latency desc limit 10;

11)、或者查看statements_with_runtimes_in_95th_percentile视图

select * from statements_with_runtimes_in_95th_percentile;

12)、哪些SQL执行了全表扫描或执行了排序操作

select * from statements_with_sorting;

select * from statements_with_full_table_scans;

13)、哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表?

查看statement_analysis中哪个SQLtmp_tables tmp_disk_tables值大于0即可

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 20;

14)、也可以查看statements_with_temp_tables视图

select * from statements_with_temp_tables;

15)、哪个表占用了最多的buffer pool

select * from innodb_buffer_stats_by_table order by allocated desc limit 10;

16)、每个库(database)占用多少buffer pool

select * from innodb_buffer_stats_by_schema order by allocated desc limit 10;

17)、每个连接分配多少内存?

——利用session表和memory_by_thread_by_current_bytes分配表进行关联查询

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;

18)MySQL自增长字段的最大值和当前已经使用到的值

select * from schema_auto_increment_columns;

19)MySQL索引使用情况统计

select * from schema_index_statistics;

20)MySQL有哪些冗余索引和无用索引

select * from schema_redundant_indexes;

select * from schema_unused_indexes;

21)、查看事务等待情况

select * from innodb_lock_waits;

22)MySQL内部有多个线程在运行

——MySQL内部的线程类型及数量。

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

23)、查看表访问量

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

24)、查看数据库连接情况

select * from sys.processlist;

select * from sys.session limit 10;

select * from sys.x$processlist;

select * from sys.x$session;

25)、查看冗余索引

select table_schema,table_name,redundant_index_name,redundant_index_columns,dominant_index_name,dominant_index_columns  from sys.schema_redundant_indexes;

26)、查看未使用索引

select * from sys.schema_unused_indexes;

27)、表自增ID监控

select * from sys.schema_auto_increment_columns limit 10;

28)、查看实际消耗磁盘IO的文件

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


总结:

主要介绍sys库相关内容,其实sys库有很多有用的查询,可以帮助你轻松了解数据库的运行情况,原本需要查找performance_schema中多个表才能获得的数据,现在查询一个视图即可满足。当然,sys库需要你详细去了解,总结出你需要的查询方法。

3、performance_schema库常用SQL

#查看没有主键的表

SELECT DISTINCT t.table_schema, t.table_name

      FROM information_schema.tables AS t

      LEFT JOIN information_schema.columns AS c ON t.table_schema = c.table_schema

AND t.table_name = c.table_name AND c.column_key = "PRI"

     WHERE t.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema')

       AND c.table_name IS NULL AND t.table_type != 'VIEW';

 

#查看是谁创建的临时表

SELECT user, host, event_name, count_star AS cnt, sum_created_tmp_disk_tables AS tmp_disk_tables,

      sum_created_tmp_tables AS tmp_tables

      FROM performance_schema.events_statements_summary_by_account_by_event_name

     WHERE sum_created_tmp_disk_tables > 0

        OR sum_created_tmp_tables > 0 ;


#没有正确关闭数据库连接的用户

SELECT ess.user, ess.host

         , (a.total_connections - a.current_connections) - ess.count_star as not_closed

         , ((a.total_connections - a.current_connections) - ess.count_star) * 100 /

           (a.total_connections - a.current_connections) as pct_not_closed

      performance_schema.events_statements_summary_by_account_by_event_name ESS FROM

      上performance_schema.accountsをJOIN(ess.user = a.userとess.host = a.host)

     ess.event_nameは 'ステートメント/ COM /終了' = WHERE

       AND(a.total_connections - a.current_connections)> ess.count_star。


おすすめ

転載: blog.51cto.com/9625010/2485416
おすすめ