MySQL大表删除解决方案
2018-03-30 17:29
225 查看
<1>将大文件按照指定速度进行删除,降低IO瞬间压力
可见,一般情况下,还是使用rm删除即可。在需要低IO负载删除大文件时,可以使用slowrm。slowrm对于rm是起到一个补充的作用。
![](http://blog.itpub.net/attachment/201706/19/28823725_1497856918esys.png)
3.8、日常使用screen -S slowrm_test2、开始删除文件或者指定速度,正常默认即可(10MB/s)
3.3.1、背景描述
3.3.2、设计思路对于删除大文件的操作,采用每次将文件截断一点,分多次截断,最终直至文件大小被截断为0。如下面的过程示例:block_size = 1024576bytes;while file_size >=block_sizebeginftruncate (file, new_size);(其中(old_size -new_size = block_size)sleep 0.05 seconds;endftruncate(file, 0);因为既然rm一个文件是不可中断的,那么我们就将删除过程打散,分多次删除一个,每次删除一点。幸好现在的linux提供了支持该思路的API,truncate/ftruncate函数,可以对文件截断至任意长度()。经过测试,发现每次截断一点,分多次截断,最终直至文件大小被截断为0,这样删除大文件需要更多的时间,但是对磁盘IO的影响却大大减小了。因此采用该思路是可行的。3.4、slowrm使用3.4.1、选项及参数
该工具的使用主要涉及两个参数: -b #size每次需要截断掉的文件大小,单位为字节,参数值需要是整数,默认值4096 * 256Bytes( = 1MB); -s #seconds每两次截断操作之间的时间间隔,单位为秒,参数值可以为小数。这两个参数用以控制删除速度,及删除过程对磁盘IO的压力。默认值0.1 second -h, --help查看帮助信息。直接输入slowrm,或输入slowrm –h或slowrm --help可以查看帮助。 实际上,可以看出,由#size * #seconds = #ioBPS Bytes/s,即可计算得出每秒该操作消耗的IO吞吐量(字节数),也即大约每秒文件所减小的字节数。使用方式 | slowrm | rm | 备注 | |
提示是否删除 | 默认支持 | rm -i | 默认slowrm会询问用户是否删除每一个指定文件 | |
删除单个文件 | slowrm file | rm file | 相同 | |
删除多个文件 | 显示指定文件 | slowrm file1 file2 file3 | rm file1 file2 file3 | |
使用通配符 | slowrm file* | rm file* | ||
删除硬链 | 硬链数大于1 | 删除硬链同rm | 删除硬链 | 实际执行的就是unlink |
硬链数等于1 | 低速删除文件 | 全速删除文件 | 实质上在判断硬链数上逻辑是一样的,只是最后一个硬链的删除方式不同 | |
强制删除文件 | slowrm -f slowrm --force | rm -f rm --force | 相同 | |
控制删除速度 | 控制速度 | slowrm -s 0.1 -b 262144 file (2MB/s) | 不支持 | |
默认速度 | slowrm file 对应参数-s 0.1 -b 1048576(10MB/s) | 一般使用默认参数即可 | ||
删除其他类型文件 | 目录,软链 | 不支持 | ||
递归删除目录 | rm -rf 目录 |
3.6.1、删除文件类型
目前,该工具只支持删除具体常规文件,无法对目录进行递归删除,但可以支持对多个文件进行删除,如slowrm *.logmysql.err.2014*也无法对软链接,文件等进行删除。3.6.2、硬链的删除
如果slowrm要删除的文件的硬链接数目大于1,那么就会直接删除该硬链;如果待删除的文件硬链数目等于1,那么会按照平滑删除的方式,逐步截断该文件。制造大文件
大小情况压力情况![](http://blog.itpub.net/attachment/201706/19/28823725_1497856918esys.png)
3.8、日常使用screen -S slowrm_test2、开始删除文件或者指定速度,正常默认即可(10MB/s)
相关文章推荐
- MySQL大表删除解决方案
- ORACLE Postgres Mysql大表扫描操作解决方案
- Mysql 如何 删除大表
- MySQL 存储过程删除大表
- mysql删除大表更快的drop table办法
- mysql安全删除大表
- MySQL 下删除大表数据的方法
- 【原创】Innodb中mysql如何快速删除2T的大表
- mysql在线无性能影响删除7G大表
- MySQL大表删除导致服务器变慢的分析
- mysql安全删除大表
- MySQL快速删除大表
- MySQL 存储过程删除大表
- Innodb中MySQL如何快速删除2T的大表
- MySQL Drop 大表解决方案
- mysql删除末尾数据后,再插入新数据id不连续解决方案
- 【MySQL】关于大表记录的删除
- MySQL 删除大表的性能问题解决方案
- Mysql 删除外键之后 自增长不连续 解决方案
- mysql删除大表更快的drop table办法