iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL大表清空和删除正确方法
  • 772
分享到

MySQL大表清空和删除正确方法

2024-04-02 19:04:59 772人浏览 泡泡鱼
摘要

Mysql大表清空和删除正确方法 1 清空大表 1.1 truncate 删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作

Mysql大表清空和删除正确方法

1 清空大表

1.1 truncate

删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。

truncate 清空表数据,50G的表大概需要20秒以上;

mysql> truncate table old_table;

1.2 rename

1.2.1 格式:

mysql> rename table 原表名 to 新表名;

当你执行 RENAME 时,你不能有任何定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

1.2.2 实例

# 新建一个空表(测试);
mysql> create table old_table(id int);

# new_table克隆old_table的表结构;
mysql> create table new_table like old_table;

# old_table改名为backup_table,new_table改名为old_table;
mysql> RENAME TABLE old_table TO backup_table, new_table TO old_table;

# 删除旧表及数据;
mysql> DROP TABLE old_table;    

2 删除

2.1 背景

在生产环境有可能有删除某个不重要大表的需求,因为大表占用的大量磁盘空间,如果我们直接drop掉此表,通常需要20秒以上的时间,总会觉得会卡主MySQL,现在给大家一个正确的删除方法。

2.2 首先我们查看此大表

# shell
[root@ras221 db]# du -shc old_table*
12K old_table.frm
49G old_table.ibd
[root@ras221 db]# ls -l old_table*
-rw-r----- 1 mysql mysql      9075 11月  8 11:39 old_table.frm
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd
[root@ras221 db]# ln old_table.ibd old_table.ibd.bak        # 硬链接;
[root@ras221 db]# ls -l old_table*
-rw-r----- 1 mysql mysql      9075 11月  8 11:39 old_table.frm
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd.bak
[root@ras221 db]# 

# mysql 
mysql> drop table old_table;
Query Ok, 0 rows affacted(0.92 sec)

通过这样的操作,可以减少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表动作也比较快。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL大表清空和删除正确方法

本文链接: https://www.lsjlt.com/news/51737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL大表清空和删除正确方法
    MySQL大表清空和删除正确方法 1 清空大表 1.1 truncate 删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作...
    99+
    2024-04-02
  • mysql清空表和删减表的方法
    小编给大家分享一下mysql清空表和删减表的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql中清空表的方法:使用“TRUNCATE  表名”语句,可以完全清空一个表;删减...
    99+
    2024-04-02
  • MySQL删除或清空表内数据的方法
    MySQL删除或清空表内数据的方法 一、使用MySQL清空表数据命令:truncate SQL语法为: truncate table 表名 注意: truncate该命令会直接将数据表内数据清空;truncate该命令删除数据后会重置Ide...
    99+
    2023-08-17
    mysql 数据库
  • MySQL删除表数据 MySQL清空表命令 3种方法
    一、MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用。truncate删除数据后是不可以rollback的。truncate删除数据后会重置Iden...
    99+
    2023-09-07
    mysql 数据库 database
  • SQLServer临时表的正确删除方式(sqlserver删除临时表)
    目录SQL Server临时表的正确删除方式1、错误的删除操作:2、正确的删除方式:补充:SQL临时表的使用示例删除临时表SQL Server临时表的正确删除方式 临时表与一般的表不...
    99+
    2023-02-16
    sql删除临时表 sql临时表使用
  • mysql删除表数据 MySQL清空表内容 3种命令方法及比较
    一、MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用。truncate删除数据后是不可以rollbac...
    99+
    2023-08-18
    mysql 数据库
  • SQL Server临时表的正确删除方式(sql server 删除临时表)
    目录SQL Server临时表的正确删除方式1、错误的删除操作:2、正确的删除方式:补充:SQL临时表的使用示例删除临时表SQL Server临时表的正确删除方式 临时表与一般的表不同,它是保存到tempDb表中。临时表...
    99+
    2023-02-16
    sql删除临时表 sql临时表使用
  • mongodb清除连接和日志的正确方法分享
    目录前言关闭current的方法一:关闭current的方法二:日志去重script导出数据总结前言 最近在做并发,服务器卡死了。 感觉是pymongo未能完全close掉和mong...
    99+
    2024-04-02
  • Mysql无法删除大表导致DB无法删除的解决方法
    这篇文章主要介绍“Mysql无法删除大表导致DB无法删除的解决方法”,在日常操作中,相信很多人在Mysql无法删除大表导致DB无法删除的解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • MySQL大表删除问题的解决方法
    这篇文章主要讲解了“MySQL大表删除问题的解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL大表删除问题的解决方法”吧!一、表删除问题汇总 ...
    99+
    2024-04-02
  • mysql修改表名和删除表的方法
    本篇内容主要讲解“mysql修改表名和删除表的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql修改表名和删除表的方法”吧!1、修改表名 在中修改表名...
    99+
    2024-04-02
  • 详解Java中List的正确的删除方法
    目录简介实例正确方法法1:for的下标倒序遍历法2: list.stream().filter().collect()法3: iterator迭代器错误方法法1:for(xxx : ...
    99+
    2024-04-02
  • MySQL超大表快速删除方式
    目录MySQL 超大表快速删除表创建一个硬链接执行表删除执行文件删除MySQL快速清空大表数据       清空表数据的五种方式清空表数据语法...
    99+
    2024-04-02
  • python 删除文件、清空目录的方法总
    Python os.remove() 方法 os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。 在Unix, Windows中有效 以下实例演示了 remove() 方法的使用: ...
    99+
    2023-01-31
    清空 文件 目录
  • MySQL分区表的正确使用方法
    MySQL分区表概述 我们经常遇到一张表里面保存了上亿甚至过十亿的记录,这些表里面保存了大量的历史记录。 对于这些历史数据的清理是一个非常头疼事情,由于所有的数据都一个普通的表里。所以只能是启用一个或多个...
    99+
    2024-04-02
  • mysql删除注册表的方法
    这篇文章主要介绍mysql删除注册表的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!-----------------------------------------------...
    99+
    2024-04-02
  • mysql删除数据表的方法
    这篇文章主要介绍mysql删除数据表的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在mysql中可以使用“DROP TABLE”来删除一个或多个数据表,语法格式“DROP TA...
    99+
    2024-04-02
  • dedecms网站优化教程:清除广告的正确方法
    Dedecms网站优化教程:清除广告的正确方法 一、背景介绍 Dedecms作为一款广泛应用在网站搭建领域的内容管理系统,其灵活的扩展性和丰富的功能让许多网站管理员喜爱使用。然而,其中...
    99+
    2024-03-12
    dedecms 广告清除 优化教程
  • mysql清空数据表数据的方法
    这篇文章将为大家详细讲解有关mysql清空数据表数据的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在mysql中,可以利用“DELETE”和“TRUNCAT...
    99+
    2024-04-02
  • hbase删除表空间的方法是什么
    要删除HBase中的表空间,可以使用HBase shell或HBase管理REST API来执行删除操作。以下是使用HBase sh...
    99+
    2024-04-09
    hbase
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作