MySQL 删除大表的性能问题
微博上讨论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 删除大表的性能问题相关推荐
- 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 ...
- mysql快速删除大表数据部分数据_mysql删除大表的部分数据
mysql删除大表的部分数据 好久没写博客.最近项目要上线.下班时间还得陪着老妈.实在没时间更新. 今天有人提了一个问题, www.2cto.com 一个表有1亿6000万的数据,有一个自增ID.最 ...
- mysql truncate 大表_MySQL删除大表时潜在的问题(drop table,truncate table)
case1,删除大表时,因为清理自适应hash索引占用的内容导致的MySQL服务挂起 case2,大表的随意Drop或者truncate导致MySQL服务的挂起 按照本文中的结论就是 MySQL5.6 ...
- mysql安全删除大表
mysql安全删除大表 Go to comments[问题隐患] 由于业务需求不断变化,可能在DB中存在超大表占用空间或影响性能:对这些表的处理操作,容易造成mysql性能急剧下降,IO性能占用严重等 ...
- mysql数据库truncate 夯住_MySQL如何优雅的删除大表实例详解
前言 删除表,大家下意识想到的命令可能是直接使用DROP TABLE "表名",这是初生牛犊的做法,因为当要删除的表达空间到几十G,甚至是几百G的表时候.这样一条命令下去,MySQ ...
- mysql存储过程删除_MySQL 存储过程删除大表
1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...
- mysql 两张大表关联_详解mysql生产环境如何快速有效的删除大表,附实验说明
概述 我们很多时候都会去drop一些大表,特别是生产环境做操作时,这里主要提一些注意事项,仅供参考. 01 相关语法 1.删表 DROP TABLE SyntaxDROP [TEMPORARY] TA ...
- spark写入oracle 优化,spark读写数据库大表分区性能优化
spark读写数据库大表分区性能优化:经常会遇到spark读写数据库再做分析,像mysql或oracle. 在数据量很大的情况下,如果只有一个worker一个excutor一个task,那你excut ...
- [原]Oracle删除大表并回收空间的过程
近日在查询某项日志的时候,发现查询非常缓慢,根据以往的经验这是由于某个日志表过大引起的,为了加快查询,决定将大部分的历史数据迁移到另外一个表中,本文主要记录删除这个大表的过程,就解决问题而言还有很多方 ...
最新文章
- 微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记
- Docker实践(6)—CentOS7上部署Kubernetes
- python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理详解
- Asp.net PageBase学习总结
- ASP.NET MVC3 控制器
- spark 应用场景2-身高统计
- oracle导入表 忽略报错,oracle数据泵导入分区表统计信息报错(一)
- 计算机二级MS Office中最难的是Excel?那是因为你没有掌握这些【重难点】!!!
- pitr 原理_pgsql的备份和恢复
- 【原】ajaxupload.js上传报错处理方法
- MCU芯片缺货涨价 国内厂商机遇和挑战并存
- Linux内核学习笔记(一)CFS完全公平调度类
- 网页设计之 HTML代码的理解.
- 3D建模与处理软件简介 刘利刚 中国科技大学
- 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
- vue之ele组件中input表单限制输入字符
- 3D打印云平台在线显示
- 开车,网吧,魔兽争霸,几天独特的生活体验
- 【yum】常见的yum命令
- 网页前端知识汇总(三)——网页前端利用二维码插件qrcode生成在线二维码