当前位置: 首页 > 编程笔记 >

Mysql单文件存储删除数据文件容量不会减少的bug与解决方法

柏修洁
2023-03-14
本文向大家介绍Mysql单文件存储删除数据文件容量不会减少的bug与解决方法,包括了Mysql单文件存储删除数据文件容量不会减少的bug与解决方法的使用技巧和注意事项,需要的朋友参考一下

MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed

问题描述

当innodb引擎使用单个文件进行存储的时候,当对数据库中数据进行删除的时候,文件的大小并不会发生变化,意味着文件将会越来越大并且即使删除也没办法 让其释放磁盘的空间。

验证过程

创建一个测试使用的表,如下创建好t这样的一个表。

创建简单的存储过程来批量的插入数据。

查看开始前的文件的大小

当批量插入接近十万的数据后

然后进行删除操作

占用磁盘空间并未减少

解决方案

两种方式:

1. 先备份后删除然后进行导入

mysqldump -uxxx -pxxx --all-databases > db.sql 
service mysql stop 
rm ibdata 
rm ×log文件 
service mysql start 
mysql -uxxx -pxxx < db.sql 

2. 把表设置为单表存储的形式,这样每个表中的数据单独存储,在删除数据的时候,会随着数据的删除而释放存储空间。

set global innodb_file_per_table = on 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

 类似资料:
  • 我有一个火花作业,它管理上的。 我的问题是它会生成很多文件,包括 95% 的空 avro 文件。我尝试使用合并来减少RDD上的分区数量,从而减少输出文件的数量,但它没有效果。 我想分区配置和分区之间丢失了一些东西,也许没有考虑到它,但我不确定。 我错过了什么吗? 有人能解释一下根据rdd分区调用时真正附加的内容吗?

  • 本文向大家介绍Linux中文件/文件夹无法删除的解决方案,包括了Linux中文件/文件夹无法删除的解决方案的使用技巧和注意事项,需要的朋友参考一下 前言 最近我们的服务器被黑客攻击,然后有些文件的属性被修改,导致我们无法删除病毒文件,同时采用 root 用户也无法删除,现在把解决方案记录下来。 普通删除 如果文件是当前用户的,那么使用 rm 命令就可以删除 如果无法删除,则尝试使用 root 用户

  • 本文向大家介绍android数据存储之文件存储方法,包括了android数据存储之文件存储方法的使用技巧和注意事项,需要的朋友参考一下 文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。 概述 文件存取的核心就是输入流和输出流。 Android文件的操作模式 文件的相关操作方法 文件读写的实现 openFileOu

  • 本文向大家介绍MySQL数据文件存储位置的查看方法,包括了MySQL数据文件存储位置的查看方法的使用技巧和注意事项,需要的朋友参考一下 我们可能会有一个疑惑,那就是:当我们在本地(自己的电脑)安装完 MySQL 之后,也创建了很多的数据库啊、表啊,也存储了很多的数据啊,但是这些内容都存储到哪里了呢?特别是,当我们需要直接操作这些数据文件的时候,翻遍了整个电脑,却找不到 MySQL 的数据文件到底在

  • 本文向大家介绍Android用文件存储数据的方法,包括了Android用文件存储数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android用文件存储数据的具体代码,供大家参考,具体内容如下 存储数据示例: 从文件读取数据: 注意: 1. openFileOutput()方法有两个参数: 第一个是文件名,可以不包含路径,因为文件会默认存储到data/data/包名/fil

  • 我有一个文件夹,我想完全删除的文件: 但是我得到了: 如你所见:这是正确的道路 我的错在哪里??