sqlite删除数据
sqlite删除数据 某日, 在使用sqlite的时候发现查询速度极慢, 查看了一下文件大小, sqlite数据库文件已经达到了 22G! 对于一个文件数据库来说, 已经相当致命了,先不说后面如果解决文件过大的问题, 首先手动删除一些文件, 释放一些空间; 本文就释放空间的过程遇到的问题做一个记录 问题一: 删除表后, 数据库文件占用磁盘空间并没有释放 在 drop table ** 之后, 查看文件占用空间大小, 发现并没有变化 是因为sqlite的机制是, 当你删除表后, sqlite会把释放出来的空间, 放到一个空闲列表中, 用于下次你插入数据的时候用, 并不会把空间返还给操作系统 , 很流氓的做法 这时如果想强制释放空间, 需要用 vacuum; 命令 问题二:db or disk is full 当你执行完 vacuum命令后, 满心欢喜的等待释放空间, 结果等了好久, 最后报了一个这个错, 说磁盘或者数据库空间已满; 这是因为 sqlite执行 vacuum命令释放空间的机制, 是需要把数据库文件拷贝到一个临时文件中, 然后再删除;所以需要两倍于 数据库文件大小 的磁盘空间 问题三:Vacuum命令的临时文件目录, 是哪个 磁盘当然是不够用的, 那这时需要挂载一个硬盘了, 可是, 挂载到哪个目录呢? 在上一步执行 vacuum命令的时候, 观察了一下 磁盘使用情况,