SQLlitedelete删除表数据后文件大小没变

表已经空了,但是sql文件大小没变

SQL 姚友林 发布于 2024-7-3 09:54
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2024-7-3 09:55

这个你表数据量不大,看不出的

数据量大才会看出,删除后要稍微等下

  • 姚友林 姚友林(提问者) SQLlite 删了大小不会变
    2024-07-03 09:59 
  • snrtuemc snrtuemc 回复 姚友林(提问者) 你重启下服务器看看,这个删除后,内存还会占用,重启后释放下内存看效果
    2024-07-03 09:59 
最佳回答
0
CD20160914Lv8专家互助
发布于2024-7-3 09:58

表空间不会自动释放。在Oracle数据库中,删除一个表并不会自动释放与之关联的表空间,

这会导致数据库中出现大量的垃圾数据,进而浪费存储空间。

对于MySQL,虽然可以通过配置实现自动释放表空间,

但这需要特定的配置和示例来实现,而不是默认行为。在Oracle中,

临时表空间在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,

当运算完成之后系统会自动清理。然而,这仅适用于临时表空间,而不是用户表空间。12

对于用户表空间,如果需要释放空间,通常需要手动进行。例如,在Oracle数据库中,

可能需要使用特定的SQL语句或过程来收缩表空间的数据文件,

或者通过删除和重新创建表空间的方式来释放空间。

在MySQL中,使用optimize table语句可以帮助释放表空间,

尤其是当通过delete语句删除数据后,虽然记录的位置或数据页被标记为“可复用”,

但磁盘文件的大小不会改变,此时需要通过optimize table语句来实际回收表空间。

总的来说,虽然某些类型的表空间(如临时表空间)

在特定操作完成后可以自动清理并释放空间,但用户表空间通常需要手动管理来释放空间

  • 3关注人数
  • 103浏览人数
  • 最后回答于:2024-7-3 09:58
    请选择关闭问题的原因
    确定 取消
    返回顶部