MySQL大表清空和删除正确方法
1 清空大表 1.1 truncate
删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没
MySQL大表清空和删除正确方法 1 清空大表 1.1 truncate 删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。 truncate 清空表数据,50G的表大概需要20秒以上;
1.2 rename 1.2.1 格式:
当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限MySQL 删除数据表,以及对新表的 CREATE 和 INSERT 权限。 1.2.2 实例
2 删除 2.1 背景 在生产环境有可能有删除某个不重要大表的需求,因为大表占用的大量磁盘空间,如果我们直接drop掉此表,通常需要20秒以上的时间,总会觉得会卡主MySQL,现在给大家一个正确的删除方法。 2.2 首先我们查看此大表
通过这样的操作,可以减少mysql drop大表hang住的时间,然后在业务低峰期再去删除真实的那个.b文.bak件。 至于原理: 就是利用OS HARD LINK的原理, 当多个文件名同时指向同一个INODE时,这个INODE的引用数N>1, 删除其中任何一个文件名都会很快. 因为其直接的物理文件块没有被删除.只是删除了一个指针而已; 当INODE的引用数N=1时, 删除文件需要去把这个文件相关的所有数据块清除,所以会比较耗时; 对于大表操作操作的其实几个Tips: 可以先用rename table替代drop table mysql> rename table old_table to old_table_bak; 这个动作也很快只是相当于改一个文件名。 另外也可以考虑使用XFS文件系统,对于Drop表动作也比较快。 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |