MYSQL--基础--06--delete删除数据,磁盘空间未释放的解决办法

2023-11-05

MYSQL–基础–06–delete删除数据,磁盘空间未释放的解决办法


1、原因

  1. 使用delete删除数据,不会把数据文件删除,而是将数据文件的标识位删除,因此会留下数据碎片,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。如果碎片空间满,就不能插入。

2、 解决方法

2.1、 OPTIMIZE TABLE命令

  1. 该命令会优化表,并整理数据文件的碎片。重新生成未使用的空间。
  2. 该命令将会整理表数据和相关的索引数据的物理存储空间,用来减少占用的磁盘空间,并提高访问表时候的IO性能。
  3. 该命令对视图无效
  4. 该命令目前只对MyISAM、InnoDB,ARCHIVE的表起作用,其余引擎的不起作用
  5. 该命令执行时会将表锁住,所以不要在高峰期使用。也不要经常使用,每月一次就足够了

2.2、 语法

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
该语法本质命令

ALTER TABLE 表名 ENGINE=InnoDB;
ANALYZE TABLE 表名;

2.3、 查看表空间语法

SELECT
	TABLE_NAME AS "表名",
	( DATA_LENGTH + INDEX_LENGTH )/ (1024*1024)  AS "M",
	TABLE_ROWS AS "行数" 
FROM
	information_schema.TABLES 
WHERE
	TABLE_SCHEMA = '数据库名称' 
	AND TABLE_NAME = '表名';

3、 测试

表删除前

在这里插入图片描述

优表删除前后

在这里插入图片描述

执行优化:提示不支持

在这里插入图片描述

Table does not support optimize, doing recreate + analyze instead

我们执行该优化语句的本质命令

ALTER TABLE oa_oct_clock_data ENGINE=InnoDB;
ANALYZE TABLE oa_oct_clock_data;

在这里插入图片描述

执行优化后

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL--基础--06--delete删除数据,磁盘空间未释放的解决办法 的相关文章

  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 即使没有结果也返回一个值

    我有这种简单的查询 它返回给定 id 的非空整数字段 SELECT field1 FROM table WHERE id 123 LIMIT 1 问题是如果找不到 id 结果集就是空的 我需要查询始终返回一个值 即使没有结果 我有这个东西工
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my

随机推荐

  • Path的Data生成归总

    Path的Data数据有三种生成方式 1 最简单的是用Expression Design 可以粘贴来自其它软件的矢量图形 导出时选择 文件 gt 导出 gt 导出属性 gt 格式 gt XAML Silverlight 画布 即可得到XAM
  • ES6中var let const三种变量(一文弄清楚)

    ES6中三种变量声明 ECMAScript 变量是松散类型的 变量可以用于保存任何类型的数据 有3个关键字可以声明变量 var const 和 let 其中 var在ECMAScript 的所有版本中都可以使用 而 const 和 let
  • 判断密码是否包含键盘连续字母

    新增内容为增加键盘列排序检测 原理 用两个与传入密码长度相等的一维数组 Row行数组 Column列数组 按密码顺序在二维键盘数组中查找每个字符 找到了则用 一维行列数组分别存放密码中每个字符的行号和列号 然后循环分析行号和列号是否满足二维
  • Alist V3 “全新版本“ 使用 安装/启动 教程!

    Introduction AList文档 nn ci 如果安装了Docker 请确保将其添加到系统的PATH变量中 您可以通过在终端中运行命令echo PATH来检查这一点 输出应该包括码头工人二进制文件的路径 通常是 usr bin 码头
  • RuntimeError: Pin memory thread exited unexpectedly 或 OSError: [Errno 9] Bad file descriptor 的解决方法

    遇到这几个错 大多是因为内存不足 我的解决方法 方案一 pin memory 不变 pin memory的值仍然为True 不需要改为False 而是把batch size 和 num worker的值分别调成 batch size 2 n
  • 10-20-010-简介-目录-Kylin目录详解

    文章目录 1 视界 1 Kylin二进制源码目录解析 2 HDFS 目录结构 2 1 cardinality 2 2 coprocessor 2 3 kylin job id 2 4 resources 2 5 jdbc resources
  • 基于vue构建lib + 类型声明文件

    构建lib 通过创建一个vue项目 实现自己的组件或工具类 然后创建一个index ts作为导出的入口文件 接下来就可以通过Vue CLIkais构建自己的lib了 index ts export Fns from utils fn 创建了
  • 基于STM32的阿里云物联网项目实战

    引言 之前自学了一些关于阿里云物联网项目的开发 收获颇丰 但是总感觉网上的东西太散了 需要自己去不停的收集整理 于是在项目结束后决心自己写一篇比较具有实用性的指导文档 需要声明的是本文档只适合像我一样的新人小白 路过的大佬不喜勿喷 如有疏漏
  • java开发实习生-面试

    redis常用命令 登录 redis cli p a 检查key是否存在 exists key 设置和获取一个键的值 set get 删除键对 del key 同时获取多个 mget linux常用命令 list 查看文件 cd 切换目录
  • 持续交付与敏捷开发的历史

    软件中的 持续交付 不仅仅是一个热门话题 软件的持续交付是软件开发实践和客户保留的圣杯 这也是DevOps今天是如此热门的概念的原因 要了解持续交付的重要性 你需要了解敏捷的历史以及敏捷方法的来源 敏捷软件开发的历史并不是从敏捷宣言开始的
  • Spark:failed to launch: nice -n 0 /opt/spark/bin/spark-class org.apache.spark.deploy.worker.

    查看真实的报错结果 bash 4 4 cat spark org apache spark deploy master Master 1 spark manager 77d4d75859 kbr5v out nohup can t exec
  • 2023-9-11 台阶-Nim游戏

    题目链接 台阶 Nim游戏 include
  • 七大排序算法详解,动图展示 +代码实现,老奶奶看了都直呼内行

    七种 基于比较 的排序 1 插入排序 元素少时插排最快 2 希尔排序 3 选择排序 4 堆排序 5 冒泡排序 6 快速排序 重点 7 归并排序 重点 排序总结 1 插入排序 元素少时插排最快 1 有序区间 黄色区间 无序区间 蓝色区间 每次
  • 人脸识别之目标追踪识别

    人脸识别之目标追踪识别 1 开发工具 Python版本 Anaconda 3 8环境 开发软件 Pycharm社区版 相关模块 sys模块 pypinyin模块 os模块 opencv contrib python 模块 opencv py
  • grafana改用https登录

    grafana添加HTTPS证书 安装 openssl yum install y openssl 创建 certificates openssl req x509 out server crt keyout server key newk
  • mysql--排序

    在项目开发时 为了使查询的数据结果满足用户的要求 通常会对查询出的数据进行上升或下降的排序 MySQL针对不同的开发需求提供两种排序的方式 分别为单字段排序和多字段排序 接下来将对这两种排序方式的语法及使用进行详细讲解 1 单字段排序 单字
  • Android 7.0新特性总结

    2016年8月22日 谷歌正式推送Android 7 0 Nougat 牛轧糖 正式版 他们还会三个月一次推送开发版 而曝光的消息看 第一个开发版就是Android 7 1 Android N主要新增了以下的新特性和优化 一 新的Notif
  • LeetCode_433. 最小基因变化

    题目链接 力扣 这道题是一道经典的BFS题型 我觉得可能会踩坑导致不能一次AC的地方有两处 一是bankSize可能为0 那么我们开辟一个记录数组的时候会报错 二是题目所说的 起始基因序列 start 默认是有效的 但是它并不一定会出现在基
  • java 多线程 总结三

    本文转载至 http blog csdn net vking wang article details 9952063 1 synchronized 把代码块声明为 synchronized 有两个重要后果 通常是指该代码具有 原子性 at
  • MYSQL--基础--06--delete删除数据,磁盘空间未释放的解决办法

    MYSQL 基础 06 delete删除数据 磁盘空间未释放的解决办法 1 原因 使用delete删除数据 不会把数据文件删除 而是将数据文件的标识位删除 因此会留下数据碎片 当有新数据写入的时候 mysql会利用这些已删除的空间再写入 如