下载鸥 > 网站下载 > 开发教程 > Mysql数据库

执行delete命令批量删除了10万条数据,数据库空间为什么没变?

782 2021-02-17 14:56:01

收藏

简述

OPTIMIZE TABLE tbname
若上述命令无效,则使用truncate table tbname(本命令会清表,慎重操作)

 

后续更新

2021年2月28日更新:
由于数据库被写满,执行OPTIMIZE TABLE tbname命令同样被拒绝,此时可以使用下方命令

truncate table tbname

本命令彻底清空了指定的表,务必注意是否可以这样操作。
 

今天有客户联系鸥哥,说使用mysql的delete命令删除了10万条数据,但主机还是显示mysql内存已满,问鸥哥怎样才能解决。

很多人可能不知道,delete加上where条件的删除只是逻辑删除。

在delete命令下,mysql并没有把数据文件删除,而是将数据文件的标识位删除,此时因为没有整理文件,因此不会彻底释放空间。

被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。

那么,要怎样彻底删除指定数据呢?这里我们要引入一个命令

OPTIMIZE TABLE tbname(此处tbname指表名)

将重新组织表数据和相关索引数据的物理存储空间,减少存储空间并提高I/O访问效率。对每个表所做的影响取决于该表所使用的存储引擎。该命令对视图无效。

使用该命令后就可以删除 DELETE 后所占用的空间和索引空间。
 

注意事项:

1、对于 InnoDB 存储引擎 MySQL,OPTIMIZE 命令,将会被映射为 ALTER TABLE … FORCE,并将重建表,更新索引统计信息,释放未使用的索引空间,这就意味着在一定程度上 OPTIMIZE 操作会造成一定的表阻塞(具体可以参加官网)。

2、OPTIMIZE 操作会锁表,所以最好不要在高峰期使用。

3、OPTIMIZE 操作相当于物理删除,一旦删除,恢复就很麻烦,所以最好使用逻辑删除。

4、数据无价,操作前务必备份。如有条件,最好寻求专业人士辅助。

本文地址:https://xzo.com.cn/develop/mysql/626.html

有帮助,很赞!

信息来源:下载鸥
信息标签
导出教程 下载word版教程
发表评论 共有条评论
关于Mysql数据库


MySQL是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。

推荐Mysql数据库开发教程
什么是SQL注入?如何防注入?
什么是SQL注入?如何防注入?

简言之,SQL是一种结构化查询语言,使我们有能力访问和操作数据库。一些黑客便...

9 370
怎样让Mysql支持emoji和符号表情?
怎样让Mysql支持emoji和符号表情?

emoji表情在当下已经十分流行,微信名中使用了emoji表情包的也大有人在。我们...

16 646
怎样用phpMyAdmin批量导入Excel内容到MySQL数据库?
怎样用phpMyAdmin批量导入Excel内容到MySQL数据库?

近期,有客户需要将excel数据导入到MySQL数据库,这是一个比较常用的功能,操作起...

12 497
MySQL索引介绍
MySQL索引介绍

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检...

29 499
MySQL怎样通过身份证号码计算用户年龄?
MySQL怎样通过身份证号码计算用户年龄?

实名制站点往往需要用到身份证号码,有了身份证号码就需要获取用户年纪或做展...

1 420
MySQL数据库误删除了要怎么恢复?
MySQL数据库误删除了要怎么恢复?

MySQL误删除这种事出现的概率不高,但如果哪天误删除了,总不能真的跑路吧?那么,M...

0 315
MySQL查找字符串FIND_IN_SET()函数介绍
MySQL查找字符串FIND_IN_SET()函数介绍

FIND_IN_SET()是一个MySQL函数,通过使用本函数,我们可以返回指定字符串在以逗...

0 235
textarea带换行存入mysql数据库的方案(php/js)
textarea带换行存入mysql数据库的方案(php/js)

textarea输入框如果带有换行符,在存入数据库时需要将换行符\n转换为<br>,在...

0 372
随机Mysql数据库开发教程
什么是SQL注入?如何防注入?
什么是SQL注入?如何防注入?

简言之,SQL是一种结构化查询语言,使我们有能力访问和操作数据库。一些黑客便...

9 370
MySQL数据库命令行删除重复id只保留一个
MySQL数据库命令行删除重复id只保留一个

MySQL数据库操作,当前存在两条相同ID相同内容的情况下,需要删除其中一个id,只...

11 862
MySQL处理百万级数据怎样优化?(总结篇)
MySQL处理百万级数据怎样优化?(总结篇)

要MySQL流畅支持百万级数据库,细节性的开发要点、查询条件一定要注意。本文...

16 585
MySQL处理百万级数据怎样优化?(语句篇)
MySQL处理百万级数据怎样优化?(语句篇)

MySQL作为常用数据库之一,大多数人接触到的可能是几千几万最多几十万条数据,...

1 578
MySQL怎样获取字符串长度
MySQL怎样获取字符串长度

在实际建站过程中,我们可能需要获取元素长度作为判断依据执行下一步的命令。...

8 858
mysql中过滤掉字符串中前面的数字或者后面的数字的方法
mysql中过滤掉字符串中前面的数字或者后面的数字的方法

在数据操作的过程中,因为站点的不同可能会有各种各样的需求。如过滤数字。​...

0 652
linux怎样通过命令行创建数据库、用户名及密码
linux怎样通过命令行创建数据库、用户名及密码

linux系统创建数据库及账号密码是常用操作,在这里做一个简单的介绍。登录lin...

1 764
Windows服务器怎样备份mysql数据库?
Windows服务器怎样备份mysql数据库?

近期有客户找鸥哥说windows服务器的网站要搬家到linux服务器,本来是一件小事...

14 740
客服QQ:341553759
点击咨询 常见问题 >
官方交流群:90432500
点击加入