网站运行的慢了,查找原因是Copying to tmp table on disk那怎么解决这个问题呢

解决一例最近常常碰到网站慢的情况,登陆到后台,查询一下 /opt/mysql/bin/mysqladmin processlist;

发现一个查询状态为: Copying to tmp table 而且此查询速度非常慢,基本一分钟左右才出来,后面是很多查询,状态为lock。

此分析对我没有太大的作用,因此用google查询了一下,发现网上一篇文章讲得很好: Copying to tmp table on disk The temporary result set was larger than tmp_table_size and the thread is now changing the in memory-based temporary table to a disk based one to save memory.

哦,原来是这样的,如果查询超出了tmp_table_size的限制,那么mysql用/tmp保存查询结果,然后返回给客户端。

set global tmp_table_size=209715200 (200M) 再次运行此查询,用/opt/mysql/bin/mysqladmin processlist;

进行观察,发现不会出现上述问题.

至此问题解决. 调节tmp_table_size 的时候发现另外一些参数

Qcache_queries_in_cache 在缓存中已注册的查询数目

Qcache_inserts 被加入到缓存中的查询数目

Qcache_hits 缓存采样数数目

Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目

Qcache_not_cached 没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE)

Qcache_free_memory 查询缓存的空闲内存总数

Qcache_free_blocks 查询缓存中的空闲内存块的数目

Qcache_total_blocks 查询缓存中的块的总数目

Qcache_free_memory 可以缓存一些常用的查询,如果是常用的sql会被装载到内存。那样会增加数据库访问速度

在做mysql性能优化时,发现copying to tmp table on disk占用了很长的执行时间,如下性能分析图:

上图中的第一行显示mysql向临时表复制数据花费了117毫秒的时间,这个必须想办法优化掉。

经过查资料发现mysql可以通过变量tmp_table_size和max_heap_table_size来控制内存表大小上限,如果超过上限会将数据写到磁盘上,从而会有物理磁盘的读写操作,导致影响性能。

我们可以通过调整这两个变量的值来提升性能(当然前提条件是mysql所在服务器有足够的内存)。

首先可以通过下面语句查看当前的变量值:

SHOW VARIABLES LIKE'max_heap_table_size%';

然后通过SET GLOBAL max_heap_table_size=522715200; 设置变量值为512M,你可以根据自己的情况设置合适的值;tmp_table_size变量的设置方法一样。

在使用mysql是提醒mysql Copying to tmp table on disk 错误了,下面我们来看看此问题的解决办法.

经过查资料发现mysql可以通过变量tmp_table_size和max_heap_table_size来控制内存表大小上限,如果超过上限会将数据写到磁盘上,从而会有物理磁盘的读写操作,导致影响性能.

我们可以通过调整这两个变量的值来提升性能,当然前提条件是mysql所在服务器有足够的内存.

首先可以通过下面语句查看当前的变量值:

SHOW VARIABLES LIKE ‘max_heap_table_size%’;

然后通过SET GLOBAL max_heap_table_size=522715200; 设置变量值为512M,你可以根据自己的情况设置合适的值,tmp_table_size变量的设置方法一样.

SHOW VARIABLES LIKE ‘tmp_table_size’;

SET GLOBAL max_heap_table_size=512*1024*1024;

其次发现开发人员编写的语句,根本无法使用到缓存,这个sql优化是个长期的过程,代码如下:

# Time: 140901 16:26:23

# User@Host: wealth[wealth] @ [172.20.1.70]

# Query_time: 2266.887211 Lock_time: 0.000196 Rows_sent: 17 Rows_examined: 71501657

SET timestamp=1409559983;

SELECT a.Pid,count(a.id)ascount,p.ProductId,p.ProductName,p.ProductType,p.Profit,p.StartTime,p.EndTime,p.StartMoney,p.AddTime,i.IssuerName FROM `Issuer`asi,`Count`asa left join Productasp on a.Pid=p.ProductId WHERE a.Stime > ‘time() – 3600*24*30′andp.IssuerId=i.IssuerId AND p.IsDel=0 group by a.Pid order bycount(a.id) desc limit 0,17;

mysql一直copying to tmp table_mysql提示Copying to tmp table on disk相关推荐

  1. mysql一直copying to tmp table_mysql出现Copying to tmp table怎么处理

    优化数据库是,出现这个 Copying to tmp table,如何处理# 在mysql里用输入这个查询会列出当前执行的费时的查询 show full processlist 今天在MYSQL中偶然 ...

  2. mysql一直copying to tmp table_Mysql慢查询之Copying to tmp table

    问题:网站出现卡的情况,观察堆栈发现很多Copying to tmp table这种状态耗时较长 ​ 产生原因:Copying to tmp table on disk The temporary r ...

  3. MySQL安装过程启动mysqld_safe中提示的pid ended错误导致无法启动问题处理

    执行Mysqld --initialize --user=mysql后,初始化没有问题 在执行mysqld_safe --user=mysql &启动时,shell提示如下 然后 ps -ef ...

  4. mysql tmp目录权限_MySQL因/tmp目录读写权限启动失败

    启动错误: Starting MySQL.The server quit without updating PID file (/[失败]cal/mysql/var/Aprice2.pid). 错误日 ...

  5. 100个MySQL 的调节和优化的提示

    100个MySQL 的调节和优化的提示 MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧. ...

  6. mysql查询优化之三:查询优化器提示(hint)

    目录: <MySQL中的两种临时表>--强制使用临时表 SQL_BUFFER_RESULT <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示( ...

  7. mysql tablespace is missing for table_Mysql报错:Tablespace is missing for table ‘db_rsk/XXX”

    硬盘空间满导致mysql ibd文件被删后提示Tablespace is missing for table 'db_rsk/XXX" 昨天一早,开发人员反馈说一个测试环境报Tablespa ...

  8. 【庖丁解牛】Starting MySQL.. ERROR! The server quit without updating PID file (/tmp/mysqld.pid)

    问题复现 编译安装mysql结束后,初始化mysql,使用的命令: /var/lib/mysql/bin/mysqld --initialize-insecure --user=mysql --bas ...

  9. mysql 建表 title create table_mysql中create命令建表sql语句

    MySQL中create table语句的基本语法是: 代码如下 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definiti ...

最新文章

  1. 直击5G的机遇与挑战,全新商业模式、规模化经济效益、最新技术进展…全解读...
  2. java语言基础特性
  3. PHP(一) 开发环境搭建
  4. 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)
  5. 【Java线程】简单实现带界面的一对一聊天
  6. 我收藏的一份嵌入式软硬件内容(含PDF下载)
  7. vijos p1347(最大乘积(整数划分?))(25—100分)
  8. 职场 | 3天准备5天面试,跳槽完成
  9. channelfuture怎么拿到数据_SpringBoot2.x系列教程66--Spring Boot整合分布式事务之数据库事务回顾
  10. 关于bootstrap和webinf下访问其它文件的方法 2021-04-17
  11. 城市道路5G智慧监控方案 让感知为安全护航
  12. java毕业设计对外汉语教学辅助平台Mybatis+系统+数据库+调试部署
  13. Oracle执行计划——查看执行计划的方法
  14. Spring学习之浅析refresh()执行逻辑
  15. 我曾经学习过的地方--中国欧盟可用性研究中心
  16. 读《华为“打工皇帝”徐家骏的十年感悟》的心志提升
  17. 小程序生产环境必须要购买腾讯云作为服务器吗?
  18. 记录由于未关闭加速器就关机而导致的再次启动后DNS配置错误
  19. java设计模式adapter,java设计模式-适配器模式(Adapter)
  20. snmp v3 参数_SNMP V3的配置指南

热门文章

  1. 云漫圈 | 腾讯面试,我竟然输给了final关键字
  2. 五阿哥钢铁电商资深运维工程师手把手教你这样玩企业组网
  3. mysql怎么跳出while循环_mysql while,loop,repeat循环,符合条件跳出循环
  4. 如何在springboot中使用PageHelper分页插件
  5. mysql-connector-mysql 8.0 (spring-boot-starter-parent 管理的版本) + Activiti 6.x 自动建表失败
  6. 企业实战05:Oracle数据库_操作表中数据
  7. JavaScript-方法
  8. @NotBlank注解使用不生效的解决办法
  9. 服务器上的文件怎么取名,给新的服务器取名你会取神马?
  10. php 模数 指数 公钥生成_php实现JWT认证