微博上讨论MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL hang的时间,现做一下简单总结:(微博地址:http://weibo.com/1642466057/yuPz2guYJ)

当buffer_pool很大的时候(30G+),由于删除表时,会遍历整个buffer pool来清理数据,会导致MySQL hang住,解决的办法是:

1、当innodb_file_per_table=0的时候,以上不是问题,因为采用共享表空间的时候,该表所占用的空间不会被删除,buffer pool中的相关页不会 被discard。

2、当innodb_file_per_table=1的时候,并且当buffer_pool比较大的时候,遍历整个buffer pool 需要很多的时间(table_cache 会被锁住,所有的DML操作被阻止)。

认识误区:

将innodb 表改为 myisam表,这个是没有效果的,该操作会删除旧表,建立新表,依然会遍历整个buffer_pool。

解决思路:

1、采用脚本形式,批量删除部分记录

2、可以再slave上进行操作,进行主备切换(成本高)

3、Percona 5.1.58以上版本都支持innodb_lazy_drop_table(bug不少,慎用)

4、与buffer pool无关,但是可以加快 删除数据文件的速度,同样能减少MySQL hang住的时间。即:对数据文件建立硬链接,(依赖原理:OS HARD LINK 当多个文件名同时指向同一个INODE时,这个INODE的引用数N>1, 删除其中任何一个文件名只是删除了一个指针而已,不会删除数据文件。当INODE的引用数N=1时, 删除文件需要去把这个文件相关的所有数据块清除,所以会比较耗时)

参考链接:

faster drop

performance drop

安全删除大表

转载于:https://blog.51cto.com/weipengfei/947985

MySQL 删除大表的性能问题相关推荐

  1. mysql删除大表更快的drop table办法(转老金)

    原文链接http://www.mysqlops.com/2011/05/18/mysql%E5%88%A0%E9%99%A4%E5%A4%A7%E8%A1%A8%E6%9B%B4%E5%BF%AB%E ...

  2. mysql快速删除大表数据部分数据_mysql删除大表的部分数据

    mysql删除大表的部分数据 好久没写博客.最近项目要上线.下班时间还得陪着老妈.实在没时间更新. 今天有人提了一个问题,  www.2cto.com 一个表有1亿6000万的数据,有一个自增ID.最 ...

  3. mysql truncate 大表_MySQL删除大表时潜在的问题(drop table,truncate table)

    case1,删除大表时,因为清理自适应hash索引占用的内容导致的MySQL服务挂起 case2,大表的随意Drop或者truncate导致MySQL服务的挂起 按照本文中的结论就是 MySQL5.6 ...

  4. mysql安全删除大表

    mysql安全删除大表 Go to comments[问题隐患] 由于业务需求不断变化,可能在DB中存在超大表占用空间或影响性能:对这些表的处理操作,容易造成mysql性能急剧下降,IO性能占用严重等 ...

  5. mysql数据库truncate 夯住_MySQL如何优雅的删除大表实例详解

    前言 删除表,大家下意识想到的命令可能是直接使用DROP TABLE "表名",这是初生牛犊的做法,因为当要删除的表达空间到几十G,甚至是几百G的表时候.这样一条命令下去,MySQ ...

  6. mysql存储过程删除_MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

  7. mysql 两张大表关联_详解mysql生产环境如何快速有效的删除大表,附实验说明

    概述 我们很多时候都会去drop一些大表,特别是生产环境做操作时,这里主要提一些注意事项,仅供参考. 01 相关语法 1.删表 DROP TABLE SyntaxDROP [TEMPORARY] TA ...

  8. spark写入oracle 优化,spark读写数据库大表分区性能优化

    spark读写数据库大表分区性能优化:经常会遇到spark读写数据库再做分析,像mysql或oracle. 在数据量很大的情况下,如果只有一个worker一个excutor一个task,那你excut ...

  9. [原]Oracle删除大表并回收空间的过程

    近日在查询某项日志的时候,发现查询非常缓慢,根据以往的经验这是由于某个日志表过大引起的,为了加快查询,决定将大部分的历史数据迁移到另外一个表中,本文主要记录删除这个大表的过程,就解决问题而言还有很多方 ...

最新文章

  1. 微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记
  2. Docker实践(6)—CentOS7上部署Kubernetes
  3. python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理详解
  4. Asp.net PageBase学习总结
  5. ASP.NET MVC3 控制器
  6. spark 应用场景2-身高统计
  7. oracle导入表 忽略报错,oracle数据泵导入分区表统计信息报错(一)
  8. 计算机二级MS Office中最难的是Excel?那是因为你没有掌握这些【重难点】!!!
  9. pitr 原理_pgsql的备份和恢复
  10. 【原】ajaxupload.js上传报错处理方法
  11. MCU芯片缺货涨价 国内厂商机遇和挑战并存
  12. Linux内核学习笔记(一)CFS完全公平调度类
  13. 网页设计之 HTML代码的理解.
  14. 3D建模与处理软件简介 刘利刚 中国科技大学
  15. 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
  16. vue之ele组件中input表单限制输入字符
  17. 3D打印云平台在线显示
  18. 开车,网吧,魔兽争霸,几天独特的生活体验
  19. 【yum】常见的yum命令
  20. 网页前端知识汇总(三)——网页前端利用二维码插件qrcode生成在线二维码

热门文章

  1. Thinkphp宅音乐html5在线音乐播放器
  2. jQuery循环滚动展示代码
  3. jQuery时间轴插件:jQuery Timelinr
  4. 使用 position: sticky 达到粘性元素区域悬浮效果
  5. 安装MongoDB Install MongoDB on Ubuntu
  6. redis的淘汰策略
  7. 人工智障学习笔记——机器学习(3)决策树
  8. centos7 使用sendmail 发送邮件
  9. mysql 分库分表mycat部署
  10. 空洞卷积(dilated convolution)