mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL
文章来自:http://blog.csdn.net/stevendbaguo/article/details/73229562
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.14-log |
+------------+
mysql> show global status like 'Created_%_tables';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 4836110|
| Created_tmp_tables | 46376366|
+-------------------------+-------+
数据库启动一周,产生的临时表惊人,设置的两个变量tmp_table_size = 16777216, max_heap_table_size=64M。
从nmon上看IO消耗比较大,特别是IOPS已经达到了瓶颈,现在要定位出是哪些SQL导致的这个问题。
官方文档的解释:
Created_tmp_disk_tables
The number of internal on-disk temporary tables created by the server while executing statements.
If an internal temporary table is created initially as an in-memory table but becomes too large, MySQL automatically converts it to an on-disk table. The maximum size for in-memory temporary tables is the minimum of the tmp_table_size andmax_heap_table_size values. If Created_tmp_disk_tables is large, you may want to increase the tmp_table_size or max_heap_table_size value to lessen the likelihood that internal temporary tables in memory will be converted to on-disk tables.
You can compare the number of internal on-disk temporary tables created to the total number of internal temporary tables created by comparing the values of the Created_tmp_disk_tables and Created_tmp_tables variables.
这些SQL会产生:DISTINCT, GROUP BY, ORDER BY and UNION。如果需要的临时表 大于 min(tmp_table_size, max_heap_table_size),就会需要放到磁盘上。
有一个表是监控产生Created_tmp_disk_tables的SQL。
mysql> use performance_schema
mysql> select * from setup_consumers;
+--------------------------------+---------+
| NAME | ENABLED |
+--------------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | NO |
| events_statements_history_long | NO |
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
| global_instrumentation | YES |
| thread_instrumentation | YES |
| statements_digest | YES |
+--------------------------------+---------+
mysql> UPDATE setup_consumers SET ENABLED='YES' WHERE NAME IN ('events_statements_history_long');
mysql> select * from setup_consumers;
+--------------------------------+---------+
| NAME | ENABLED |
+--------------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | NO |
| events_statements_history_long | YES |
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
| global_instrumentation | YES |
| thread_instrumentation | YES |
| statements_digest | YES |
+--------------------------------+---------+
history_long表则记录了最近所有线程产生的10000个事件,是可以配置的。
mysql> show variables like 'performance_schema%history%size';
+--------------------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------------------+-------+
| performance_schema_events_stages_history_long_size | 10000 |
| performance_schema_events_stages_history_size | 10 |
| performance_schema_events_statements_history_long_size | 10000 |
| performance_schema_events_statements_history_size | 10 |
| performance_schema_events_waits_history_long_size | 10000 |
| performance_schema_events_waits_history_size | 10 |
+--------------------------------------------------------+-------+
mysql> SELECT sql_text, COUNT(*) AS cnt FROM performance_schema.events_statements_history_long
WHERE CREATED_TMP_DISK_TABLES > 0;
+------------------------------------------+-----+
| sql_text | cnt |
+------------------------------------------+-----+
| select distinct * from t1 LIMIT 0, 1000 | 2 |
+------------------------------------------+-----+
mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL相关推荐
- mysql 内部 临时表_MySQL内部临时表何时使用磁盘
问题: 在 实验 05中,我们看到了内部临时表会使用到不少内存. 那么如果需要的临时表再大一些,必然要使用到磁盘来承载,那么内部临时表是何时使用磁盘的? 实验: 我们仍使用 实验 05中的环境,略去准 ...
- mysql row 日志格式_mysql row日志格式下 查看binlog sql语句
有时候我们需要使用row作为binlog的日志格式,即配置文件使用了binlog_format= row 参数 这样以来,我们在查看数据库binlog内容时候,就看不到增删改查的具体语句了,在数据库恢 ...
- mysql死锁检测算法_MySQL InnoDB如何应付死锁
死锁是事务处理型数据库系统的一个经典问题,但是它们并不是很危险的, 除非它们如此地频繁以至于你根本处理不了几个事务. 当因死锁而产生了回滚时,你通常可以在你的应用程序中重新发出一个事务即可. Inno ...
- mysql死锁检测算法_MySQL 8 死锁检测脚本
MySQL 8 记录死锁关的几张表有所变化,重新写一个脚本,便于在出现问题的时候快速处置问题. 死锁示意图 死锁相关的表 information_schema.INNODB_TRX `performa ...
- mysql 创建端口号_MySQL命令行 不同端口登录 执行SQL文件 创建用户 赋予权限 修改root密码...
0.安装MySQL服务 1.[不同端口登录] 通过开始菜单-> 程序-> MySQL-> MySQL Command Line Client 通过输入密码Enter password ...
- mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...
之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...
- mysql参数优化步骤_MySQL架构优化实战系列4:SQL优化步骤与常用管理命令2(转)
MySQL架构优化实战系列4:SQL优化步骤与常用管理命令 原文:http://dbaplus.cn/news-11-649-1.html 一.SQL语句优化步骤 1.查看MySQL状态及配置 sho ...
- 用mysql语句骂人_MySQL中特别实用的几种SQL语句送给大家
在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮. 目录 实用的SQL 1.插 ...
- mysql时间模糊查询_mysql中那些根据时间查询的sql语句
在我们使用mysql是免不了要根据时间去查询一些数据,这个时候一般有几种方式可以去查询. 第一种数据库,如果有数据新建时间可以以这个时间为节点,通过当前时间条件去比较时间来查询到此段时间内的数据 例如 ...
最新文章
- 一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉
- Android 让图片等比例缩放的三种方法
- Go语言中Goroutine与线程的区别
- mysql获取时间戳_服了!阿里Mysql三位封神专家总结1200多页性能优化的千金良方...
- excel群发邮件 支持html,在Excel中利用VBA实现邮件的群发实例
- Java高并发、分布式框架,从无到有微服务架构设计
- T1164 统计数字 codevs
- Ubuntu16.04 安装搭建RED5流媒体服务器
- 基于Gromacs的蜘蛛毒素肽显性溶剂动力学分析
- 有道云笔记·协作android版,【每天一品】有道云笔记协作
- 别人都不知道的“好用”网站,让你的效率飞快
- 很多人看都哭了,不信你不哭
- Windows权限维持方法
- C语言排序算法之“选择排序法”
- Html 和 CSS笔记
- 高压直流电源为什么要“接地”?如何“接地”?
- android studio日志不打印,Mac 下 Android Studio 不打印日志的解决办法
- js动态加载table,打印table里的内容以及解决打印后的问题
- 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库
- 刀片服务器接显示器,《魔兽世界》国服 退役刀片服务器开售
热门文章
- mysql limit优化_MySQL:教你学会如何做性能分析与查询优化
- hive load data inpath 空目录_走近大数据之Hive进阶(一、Hive数据的导入)
- vm虚拟机和windows共享文件夹
- centos开启防火墙指定端口
- vc怎么查看c源码的汇编语言,VC++代码的汇编分析(一)
- matlab运行容量小,可变大小(运行时)输入Simulink Matlab
- parse函数 python_python的parse_args()函数
- 五行塔怎么吃第五个_红毛丹怎么吃 吃红毛丹的五个好处
- 【以太坊】搭建测试网络之ubuntu系统安装golang环境以及helloworld
- 微信小程序获取不到unionid还有小程序无法解析JSON字符串的问题