热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql我删除了数据为什么文件还是那么大

在mysql中我使用delete删除了大量数据但是,数据表文件还是那么大,是怎么回事?mysql存放数据也是放在文件中的,在mysql中的innodb test表中有两个文件存储,

在mysql中 我使用delete 删除了大量数据但是,数据表文件还是那么大,是怎么回事?

mysql存放数据也是放在文件中的,在mysql中的innodb 

WeChatae8b7f1ff8be09f53a1639734b2a86cb.png

WeChat43efa8d67e433b10d2cb712d86bf4350.png

test表中有两个文件存储,.frm文件用来存储表结构  .ibd文件是用来存储数据,在mysql8以后是允许把表结构和存放在数据表中

WeChat2cd52e8f8e57daf00d0d2105455005e9.png

InnoDB 里的数据都是用 B+ 树的结构组织的。

假设,我们要删掉 500这个数据,InnoDB 引擎只会把 100个记录标记为删除。如果之后要再插入一个 ID 在 300 和 600 之间的记录时,可能会复用这个位置。但是,磁盘文件的大小并不会缩小。

 

在innodb中还存在数据页默认是16K 如果把这整个数据页删除,那就是数据页复用

但是,数据页的复用跟记录的复用是不同的。

记录的复用,只限于符合范围条件的数据。

而当整个页从 B+ 树里面摘掉以后,可以复用到任何位置

 

如果数据是按照索引递增顺序插入的,那么索引是紧凑的。但如果数据是随机插入的,就可能造成索引的数据页分裂。

在有些时候会发现id自增,但是突然发现有个id不见了,如 100 101 103 少了102  这时候查询数据表是能够查到102这个id,就被添加到空洞

 

如果要收缩一个表,只是 delete 掉表里面不用的数据的话,表文件的大小是不会变的,你还要通过 alter table 命令重建表,才能达到表文件变小的目的。

alter table t engine=innodb,ALGORITHM=inplace;

这个方式是可以考虑在业务低峰期使用的,而 MySQL 5.5 及之前的版本,这个命令是会阻塞 DML 的

如果整个表需要删除释放空间可以使用

truncate table T;

 



推荐阅读
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Linux环境下MySQL的安装与配置
    本文详细介绍了在Linux系统上安装和配置MySQL的步骤,包括安装前的准备工作、下载和解压安装包、初始化数据库、配置文件编辑、启动服务以及设置开机自启动等。 ... [详细]
  • 本文介绍了如何在Linux系统中将命令添加到PATH环境变量中,以便在任何位置都能直接运行这些命令。PATH是一个包含多个目录路径的字符串变量,当输入不带路径的命令时,系统会在这些路径中查找并执行相应的命令。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上安装和配置 MySQL、Tomcat 和 JDK 的步骤。通过本文,您将了解如何顺利安装这些组件,并确保它们能够正常协同工作。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • 本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ... [详细]
  • 本文探讨了在某些情况下,为何需要将完整的PHP代码分成多个部分编写。通过示例代码和详细解释,帮助读者理解这种做法的好处。 ... [详细]
  • 树莓派4B:安装基础操作系统指南
    本文将详细介绍如何为树莓派4B安装基础操作系统,包括所需材料、镜像下载、镜像烧录以及更换国内源等步骤。 ... [详细]
  • 环境变量是用于描述系统运行环境的一系列变量,如PATH指定了命令的搜索路径,SHELL指定了默认的Shell。本文介绍了如何加载和管理这些环境变量,以及普通变量与环境变量的区别。 ... [详细]
  • 本文将详细介绍如何使用PHP获取文件夹的大小,包括子文件夹的大小,并提供实用的代码示例。 ... [详细]
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • 本文介绍了Linux系统中的expect命令及其在自动化任务中的应用,同时探讨了Python中的pexpect模块如何实现类似功能。 ... [详细]
  • 本章将详细介绍如何快速搭建第一个Spring Boot应用,包括项目创建、配置和运行步骤。更多详细内容将在后续章节中展开。 ... [详细]
author-avatar
你不必害怕q因为我会发光
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有