前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习使用MySQL 5.7的sys库(下)

学习使用MySQL 5.7的sys库(下)

作者头像
wubx
发布2019-02-27 13:27:58
1.1K0
发布2019-02-27 13:27:58
举报
文章被收录于专栏:MySQLBeginnerMySQLBeginner

本文主要解答如下问题

  1. 谁使用了最多的资源? 基于 IP 或是用户?
  2. 大部分连接来自哪里及发送的 SQL 情况?
  3. 机器执行最多的 SQL 语句是什么样?
  4. 哪张表的 IO 最多?哪张表访问次数最多?
  5. 哪些语句延迟比较严重?
  6. 哪些 SQL 语句使用了磁盘临时表?
  7. 哪张表占用了最多的 buffer pool?
  8. 每个库占用多少 buffer pool?
  9. 每个连接分配多少内存?
  10. MySQL 内部现在有多个线程在运行?

基础知识

下面看一些本次解答问题涉及到的重要视图。

1. host_summary

2. io_global_by_file_by_bytes

3.user_summary

4.memory_global_total

5.memory_by_thread_by_current_bytes

6. statement_analysis

7. processlist

session 视图和 processlist 视图基本一样,只是把后台线程过滤掉。

8. innodb_buffer_stats_by_schema

innodb_buffer_stats_by_table 和 innodb_buffer_stats_by_schema 基本一致,只是比上面那个视图多了一个ojbect_name 用于指定表名。

问题 1. 谁使用了最多的资源? 基于IP或是用户?

对于该问题可以从 host, user, io 三个方面去了解,大概谁的请求最多。对于使用资源问题可以直接从下面四个视图里有一个大概的了解。

问题2 . 大部分连接来自哪里及发送的SQL情况?

查看当前连接情况:

代码语言:javascript
复制
select host, current_connections, statements from host_summary;

查看当前正在执行的 SQL:

代码语言:javascript
复制
select  conn_id, user, current_statement, last_statement from session;

问题3. 机器执行最多的 SQL 语句是什么样?

例如查一下系统里执行最多的 TOP 10 SQL。

SQL 如下:

代码语言:javascript
复制
select * from statement_analysis order by exec_count desc limit 10\G;

问题4. 哪张表的 IO 最多?哪张表访问次数最多?

直接访问 io_global_by_file_by_bytes 这个视图

代码语言:javascript
复制
select * from io_global_by_file_by_bytes limit 10;

哪张表访问次数最多,可以参考上面先查询执行最多的语句,然后查找对应的表。

SQL如下:

代码语言:javascript
复制
select * from statement_analysis order by exec_count desc limit 10\G;

问题5. 哪些语句延迟比较严重?

statement_analysis 中 avg_latency 的最高的。(参考上面写法)

SQL 语句:

代码语言:javascript
复制
select * from statement_analysis order by avg_latency desc limit 10;

问题6 . 哪些 SQL 语句使用了磁盘临时表?

利用 statement_analysis 中 tmp_tables ,tmp_disk_tables 进行计算。(参考上面写法)

参考SQL:

代码语言:javascript
复制
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;

问题7. 哪张表占用了最多的 buffer pool?

例如查询在 buffer pool 中占用前10的表。

SQL 如下:

代码语言:javascript
复制
select * from innodb_buffer_stats_by_table order by pages desc limit 10;

问题8 .每个库占用多少 buffer pool?

SQL 如下:

代码语言:javascript
复制
select * from innodb_buffer_stats_by_schema;

问题9. 每个连接分配多少内存?

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

SQL 如下:

代码语言:javascript
复制
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;

问题10. MySQL 内部现在有多个线程在运行?

MySQL 内部的线程类型及数量:

代码语言:javascript
复制
select user, count(*) from processlist group by user;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQLBeginner 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础知识
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档