【mysql 删除大表中的数据】如何删除100G以上的大表中的数据
两个删除策略:
1、慢的方法是写脚本定时任务带where的delete语句 慢慢删除 范围定小一点 锁的时间很短 客户端无感;
2、快的方法就是找个业务空的时候 新建表 程序往新表中插入 然后把老表中需要的记录让新表中插入;
看到mysql文档有一种解决方案:https://dev.mysql.com/doc/refman/5.0/en/delete.html
简单的翻译下:
删除达标上的多行数据时,innodb会超出lock table size的限制,最小化的减少锁表的时间的方案是:
1、选择不需要删除的数据,并把它们存在一张相同结构的空表里
2、重命名原始表,并给新表命名为原始表的原始表名
3、删掉原始表
总结一下就是,当时删除大表的一部分数据时可以使用 见新表,拷贝数据,删除旧表,重命名的方法。