Sqlite在删除纪录时不会减小文件大小,只是在文件中将数据块标志为可用。 如果需要强制删除可以运行VACCUM这个命令。具体的可以查看FAQ
(12) I deleted a lot of data but the database file did not get any
smaller. Is this a bug?
No. When you delete information from an SQLite database, the
unused disk space is added to an internal "free-list" and is reused
the next time you insert data. The disk space is not lost. But
neither is it returned to the operating system.
If you delete a lot of data and want to shrink the database file,
run the VACUUM
command.
VACUUM will reconstruct
the database from scratch. This will leave the database with an empty
free-list and a file that is minimal in size. Note, however, that the
VACUUM can take some time to run (around a half second per megabyte
on the Linux box where SQLite is developed) and it can use up to twice
as much temporary disk space as the original file while it is running.
As of SQLite version 3.1, an alternative to using the VACUUM command
is auto-vacuum mode, enabled using the
auto_vacuum pragma
.
分享到:
相关推荐
在提供的压缩包文件“SQLite数据库文件自收缩.pdf”中,可能包含了关于如何使用VACUUM和PRAGMA语句进行数据库文件收缩的详细步骤、注意事项以及最佳实践。通过阅读这份文档,你可以深入理解这两个方法的工作原理,并...
总之,SQLite数据库文件格式的全面分析涵盖了从基本的数据库组织到复杂的页结构,通过深入研究这些细节,开发者和分析师能够更好地理解SQLite的工作原理,从而更有效地使用和调试SQLite数据库。对于嵌入式系统开发者...
然而,执行`VACUUM`命令能够通过重新构建数据库来释放未使用的空间,从而减小文件大小。 **auto-vacuum**是一种特殊的数据库配置,它能够在删除操作提交之后自动进行空间回收,无需手动执行`VACUUM`命令。虽然这种...
7. **内存管理**:SQLite使用一种称为“交易日志”的方法来管理内存,确保在内存不足时能够有效地回收资源。 8. **可移植性**:SQLite是跨平台的,可以在多种操作系统和硬件平台上运行,包括Windows、Linux、macOS...
- **Auto-Vacuum 数据库**:这种类型的数据库会在删除操作后自动回收空间,从而减小数据库文件的大小。不过,这种方式可能会增加数据库操作的时间开销。 - **数据库映像、数据库文件和日志文件**:数据库映像指的是...
7. **自动 vacuum**:SQLite提供自动或手动的VACUUM操作,用于优化磁盘空间使用。 8. **扩展函数**:用户可以编写C语言的扩展函数来增加SQLite的功能。 9. **安全性**:支持权限控制,可以为不同用户设置不同的访问...
如果使用旧的journal模式,Sqlite会检查日志文件并回滚未提交的事务。 总的来说,Sqlite数据库文件的更新机制是通过事务、日志记录、页管理和恢复策略来保证数据一致性、安全性和性能的。其设计考虑了嵌入式环境的...
除了基本的使用,开发者还可以利用SQLite的特性进行优化,如创建索引来加速查询,使用VACUUM命令进行数据库维护,或者通过PRAGMA语句调整数据库参数以适应特定需求。SQLite还支持多种编程语言的接口,如Python、Java...
3. **B-tree结构**: 对于数据表,SQLite使用B+tree结构,它在叶子页上存储完整的行数据,而分支页则包含指向其他页的指针。这种结构使得快速的范围查询和排序成为可能。 4. **索引**: 索引通常使用B-tree结构,其中...
同时,SQLite3还支持VACUUM操作,用于优化数据库空间使用。 十、嵌入式应用 SQLite3因其轻量级的特性,常被嵌入到移动设备应用、桌面应用、Web服务器等中,作为本地数据存储解决方案。 总结,SQLite3是一个功能...
5. **自动真空(Auto-Vacuum)**:SQLite允许设置自动真空功能,删除的数据占用的空间会在事务提交后立即回收,从而减小数据库文件大小。但这会增加操作时间,适用于对空间需求敏感但对性能要求不高的场景。 6. **...
-auto_vacuum 标记的含义是:正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以后的添加操作中再次使用。 设置 auto_vacuum 标记可以通过执行以下命令:PRAGMA...
sqlite数据库文件经多次添加删除操作后 文件占用磁盘空间过大 c++压缩文件代码 sqlite数据库文件经多次添加删除操作后 文件占用磁盘空间过大 c++压缩文件代码 测试调用TestFunction.h文件 bool commit_vacuum...
9. **性能优化**:SQLite允许你创建索引以加速查询,并且可以通过VACUUM命令进行碎片整理,提高数据库读写速度。 10. **分布式使用**:尽管SQLite主要用于单用户应用,但通过网络协议,它也可以实现多用户访问。...
在命令行中,可以使用`CREATE DATABASE`来创建数据库,`.open`命令来打开数据库文件,`CREATE TABLE`来定义表结构,`INSERT INTO`插入数据,`SELECT`查询数据,`ALTER TABLE`修改表结构,以及`DROP TABLE`删除表等。...
1. **安装与使用**:sqlite3.exe是一个可执行文件,只需将其放置在系统的PATH环境变量中,就可以在命令行中使用。输入`sqlite3 <database_name>`即可打开或创建一个数据库文件。 2. **SQL语句支持**:SQLite3.0支持...
3. **VACUUM命令**:SQLite 3.7.13支持VACUUM命令,用于优化数据库文件结构,清理碎片,以及在需要时缩小数据库文件的大小。 4. **触发器和存储过程**:SQLite允许用户创建触发器和存储过程,扩展了数据库的功能,...