首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQLite WAL文件会自动减小大小吗?

SQLite WAL文件会自动减小大小。WAL(Write-Ahead Logging)是SQLite数据库的一种日志模式,用于提高并发性能和数据完整性。WAL文件是用于记录事务操作的日志文件,它可以自动增长以容纳更多的事务记录,但不会自动减小大小。

当事务提交后,WAL文件中的日志记录将被应用到数据库文件中,然后WAL文件的空间可以被重用。但是,WAL文件的大小不会自动减小,即使其中的日志记录已经被应用到数据库文件中。

为了减小WAL文件的大小,可以执行以下步骤:

  1. 执行checkpoint操作:通过调用PRAGMA wal_checkpoint命令,可以手动触发WAL文件的checkpoint操作。这将导致WAL文件中已经应用到数据库文件的日志记录被清除,从而减小WAL文件的大小。
  2. VACUUM命令:执行VACUUM命令可以重建数据库文件并清除未使用的空间,包括WAL文件中的空间。这将导致WAL文件的大小减小。

需要注意的是,WAL文件的大小对SQLite数据库的性能并没有直接影响。WAL文件的大小主要影响数据库的存储空间占用。如果对存储空间有严格要求,可以定期执行上述步骤来减小WAL文件的大小。

腾讯云提供了云数据库 TencentDB for SQLite,它是基于SQLite的云数据库服务,支持高可用、备份恢复、性能优化等功能。您可以通过腾讯云官网了解更多关于 TencentDB for SQLite 的信息:https://cloud.tencent.com/product/tcbsqlite

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微信 iOS SQLite 源码优化实践

该方案上线后,卡顿检测系统检测到 等待线程锁的造成的卡顿下降超过90% SQLITE_BUSY 的发生次数下降超过95% I/O 性能优化 保留 WAL 文件大小 如上文多线程优化时提到,开启 WAL...待文件增长到一定长度后,SQLite 进行 checkpoint。这个长度默认为1000个页大小,在 iOS 上约为3.9MB。...下次数据库打开时,SQLite 识别到 WAL 文件不可用,重新从头开始写入。 保留 WAL 文件大小后,每个数据库都会有这约3.9MB的额外空间占用。如果数据库较多,这些空间还是不可忽略的。...因此,SQLite 没有实现对 WAL 文件的 mmap。 还记得我们上一个优化?没错,我们保留了 WAL 文件大小。因此它在这个场景下是不会缩短的,那么不能 mmap 的条件就被打破了。...实现上,只需在 WAL 文件打开时,用unixMapfile将其映射到内存中,SQLite 的 OS 层即自动识别,将普通的 I/O 接口切换到 mmap 上。

97120

微信 iOS SQLite 源码优化实践

该方案上线后,卡顿检测系统检测到 等待线程锁的造成的卡顿下降超过90% SQLITE_BUSY的发生次数下降超过95% I/O 性能优化 保留WAL文件大小 如上文多线程优化时提到,开启WAL模式后...待文件增长到一定长度后,SQLite进行checkpoint。这个长度默认为1000个页大小,在iOS上约为3.9MB。 同样的,在数据库关闭时,SQLite进行checkpoint。...下次数据库打开时,SQLite识别到WAL文件不可用,重新从头开始写入。 保留WAL文件大小后,每个数据库都会有这约3.9MB的额外空间占用。如果数据库较多,这些空间还是不可忽略的。...因此,SQLite没有实现对WAL文件的mmap。 还记得我们上一个优化?没错,我们保留了WAL文件大小。因此它在这个场景下是不会缩短的,那么不能mmap的条件就被打破了。...实现上,只需在WAL文件打开时,用unixMapfile将其映射到内存中,SQLite的OS层即自动识别,将普通的I/O接口切换到mmap上。

3.6K13

【Dev Club 分享】微信 iOS SQLite 源码优化实践

journal_mode=WAL 此时写操作先 append 到 wal 文件末尾,而不是直接覆盖旧数据。...而读操作开始时,记下当前的 WAL 文件状态,并且只访问在此之前的数据。这就确保了多线程读与读、读与写之间可以并发地进行。 1.2 Busy Retry 方案 而写与写之间仍会互相阻塞。...原因如下: 开启 WAL 模式后,写入的数据先 append 到 WAL 文件的末尾。待文件增长到一定长度后,SQLite 进行 checkpoint。...这个长度默认为1000个页大小,在 iOS 上约为3.9MB。 而在多句柄下,对 WAL 文件的操作是并行的。...下次数据库打开时, SQLite 识别到 WAL 文件不可用,重新从头开始写入。 为 WAL 添加 mmap 的支持 有了上面两个优化,整体性能就会提升不少了。

1.4K80

SQLite这么娇小可爱,不多了解点都不行啊

Stable Cross-Platform Database File 数据库文件格式跨平台,无论是大小端,或者是32bit或64bit机器都没有关系 Compact 完整特性的SQLite编译出来在500KiB...同步WAL文件和数据库文件的行为被称为checkpoint(检查点),它由SQLite自动执行,默认是在WAL文件积累到1000页修改的时 候;当然,在适当的时候,也可以手动执行checkpoint,SQLite...在一般情况下,WAL提高SQLite的事务性能;但是在某些极端情况下,却会导致SQLite事务性能的下降。...在事务执行时间较长或者要修改的数据量达到GB级的时候,WAL文件会被占用,它会暂时阻止checkpoint的执行(checkpoint清空WAL文件),这将导致WAL文件变得很大,增加寻址时间,最终导致读写性能的下降...当checkpoint执行的时候,降低当时的读写性能,因此,WAL可能导致周期性的性能下降 END

1.2K80

SQLite读写同步之WAL机制

同步WAL文件和数据库文件的行为被称为checkpoint(检查点),它由SQLite自动执行,默认是在WAL文件积累到1000页修改的时候;当然,在适当的时候,也可以手动执行checkpoint,SQLite...WAL兼容性问题 在启用了WAL之后,数据库文件格式的版本号由1升级到了2,因此,3.7.0之前的SQLite无法识别启用了WAL机制的数据库文件。...WAL引入的性能问题 在一般情况下,WAL提高SQLite的事务性能;但是在某些极端情况下,却会导致SQLite事务性能的下降。...如: 1.在事务执行时间较长或者要修改的数据量达到GB级的时候,WAL文件会被占用,它会暂时阻止checkpoint的执行(checkpoint清空WAL文件),这将导致WAL文件变得很大,增加寻址时间...2.当checkpoint执行的时候,降低当时的读写性能,因此,WAL可能导致周期性的性能下降。

1.5K30

sqlite wal模式

同步WAL文件和数据库文件的行为被称为checkpoint(检查点),它由SQLite自动执行,默认是在WAL文件积累到1000页修改的时候;当然,在适当的时候,也可以手动执行checkpoint,SQLite...四、WAL引入的兼容性问题 在启用了WAL之后,数据库文件格式的版本号由1升级到了2,因此,3.7.0之前的SQLite无法识别启用了WAL机制的数据库文件。...五、WAL引入的性能问题 在一般情况下,WAL提高SQLite的事务性能;但是在某些极端情况下,却会导致SQLite事务性能的下降。...1.在事务执行时间较长或者要修改的数据量达到GB级的时候,WAL文件会被占用,它会暂时阻止checkpoint的执行(checkpoint清空WAL文件),这将导致WAL文件变得很大,增加寻址时间,最终导致读写性能的下降...2.当checkpoint执行的时候,降低当时的读写性能,因此,WAL可能导致周期性的性能下降。

85720

WCDB 的 WAL 模式和异步 Checkpoint

由于写操作将内容临时写到 -wal 文件,-wal 文件不断增大且拖慢读操作,因此需要定期进行 Checkpoint 操作将 -wal 文件保持在合理的大小。...SQLite 官方默认的 Checkpoint 阈值是 1000 page,即当 -wal 文件达到 1000 page 大小时,写操作的线程在完成写操作后同步进行 Checkpoint 操作;Android...通过前面的先验知识,我们推测:阈值越低,Checkpoint 越频繁,写磁盘次数越多,-wal 大小越小,非阻塞时读性能越好(-wal 大小影响索引速度);阈值越高,则相反。...然而这个策略很快就发现问题了:如果一直有读写请求,频繁尝试 Checkpoint 一直失败,以至 -wal 文件不断增大最终严重影响性能。...损坏率对比 性能指标以外,DB 损坏率也是我们关注的重点,SQLite 一些性能选项影响到 DB 损坏的概率,提高性能的同时牺牲 DB 稳定性和损坏率的话,我们是不能接受的。

4.2K82

SQLite 预写式日志

SQLite在3.7.0版本引入了WAL (Write-Ahead-Logging),WAL的全称是Write Ahead Logging,它是很多数据库中用于实现原子事务的一种机制,引入WAL...WAL机制的原理是:修改并不直接写入到数据库文件中,而是写入到另外一个称为WAL文件中;如果事务失败,WAL中的记录会被忽略,撤销修改;如果事务成功,它将在随后的某个时间被写回到数据库文件中,提交修改...同步WAL文件和数据库文件的行为被称为checkpoint(检查点),它由SQLite自动执行,默认是在WAL文件积累到1000页修改的时候;当然,在适当的时候,也可以手动执行checkpoint,SQLite...在读的时候,SQLite将在WAL文件中搜索,找到最后一个写入点,记住它,并忽略在此之后的写入点(这保证了读写和读读可以并行执行);随后,它确定所要读的数据所在页是否在WAL文件中,如果在,则读WAL文件中的数据...在写的时候,SQLite将之写入到WAL文件中即可,但是必须保证独占写入,因此写写之间不能并行执行。

1.3K90

每天4亿行SQLite订单大数据测试(源码)

SQLite极致性能 关闭同步,Synchronous=Off,提升性能。添删改操作时不必同步等待写入磁盘,操作系统延迟若干毫秒批量写入 设置WAL模式,Journal Mode=WAL,减少锁定。...写入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件中,延迟合并 加大缓存,Cache Size=5000,提升性能。...总的来说,SQLite数据库甭管多少数据多大库文件,只要配置得当,内存管够,性能不是太大问题! SQLite大数据 为了验证SQLite的性能巅峰,我们来做一个大数据测试。...1, Test项目生成4亿行订单数据,主键自增ID,订单号建立索引,文件大小26.5G image.png 2, Web项目,魔方+XCode,首次查询较慢,约427毫秒,需要预热 不同机器的首次查询时间偏差比较大...,最大可能达到几秒钟 本机第一次启动该项目时,魔方需要从公网下载SQLite驱动文件以及样式资源文件 image.png 3, 第二页,99毫秒,操作系统文件映射缓存生效 image.png 4, 第20000

7.2K60

每天4亿行SQLite订单大数据测试(源码)

SQLite极致性能 关闭同步,Synchronous=Off,提升性能。添删改操作时不必同步等待写入磁盘,操作系统延迟若干毫秒批量写入 设置WAL模式,Journal Mode=WAL,减少锁定。...写入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件中,延迟合并 加大缓存,Cache Size=5000,提升性能。...总的来说,SQLite数据库甭管多少数据多大库文件,只要配置得当,内存管够,性能不是太大问题! SQLite大数据 为了验证SQLite的性能巅峰,我们来做一个大数据测试。...模拟每天4亿票销售订单,分表分库,每天一个数据库文件,有订单号、部门节点、时间等。 1, Test项目生成4亿行订单数据,主键自增ID,订单号建立索引,文件大小26.5G ?...2, Web项目,魔方+XCode,首次查询较慢,约427毫秒,需要预热 不同机器的首次查询时间偏差比较大,最大可能达到几秒钟 本机第一次启动该项目时,魔方需要从公网下载SQLite驱动文件以及样式资源文件

93001

五年沉淀,微信全平台终端数据库WCDB迎来重大升级!

因为单个数据库文件可能会比较大,单次将它 map 到虚拟内存,可能因为虚拟地址空间不够,导致失败。所以这里按需按内存的页大小为单位,根据每次申请的页,在其前后 map 共 1MB 的内存。...3、WAL 文件头更新优化 WAL 文件文件头保存着 WAL 文件的版本号、页大小、salt 值、校验值等关键信息,每次写入 WAL 文件的第一页数据的时候,都需要一起更新文件头的内容(只有这个时机更新...SQLite 的早期版本(WCDB 1.0.8版本之前用的 SQLite 版本)在写入 WAL 文件头时,只是将内容写到磁盘缓存,没有调用 fsync。...SQLite 后来发现如果磁盘缓存是随机写入到磁盘,那可能存在 WAL 文件头以外的内容已经写入到磁盘但是文件头还没更新的情况,导致数据库损坏(具体见https://sqlite.org/src/info...为了解决这个问题,WCDB 修改 SQLite 源码,对 WAL 文件头的更新做了个优化。

52220

五年沉淀,微信全平台终端数据库WCDB迎来重大升级

因为单个数据库文件可能会比较大,单次将它 map 到虚拟内存,可能因为虚拟地址空间不够,导致失败。所以这里按需按内存的页大小为单位,根据每次申请的页,在其前后 map 共 1MB 的内存。...3、WAL 文件头更新优化 WAL 文件文件头保存着 WAL 文件的版本号、页大小、salt 值、校验值等关键信息,每次写入 WAL 文件的第一页数据的时候,都需要一起更新文件头的内容(只有这个时机更新...SQLite 的早期版本(WCDB 1.0.8版本之前用的 SQLite 版本)在写入 WAL 文件头时,只是将内容写到磁盘缓存,没有调用 fsync。...SQLite 后来发现如果磁盘缓存是随机写入到磁盘,那可能存在 WAL 文件头以外的内容已经写入到磁盘但是文件头还没更新的情况,导致数据库损坏(具体见https://sqlite.org/src/info...为了解决这个问题,WCDB 修改 SQLite 源码,对 WAL 文件头的更新做了个优化。

44941

应当使用 SQLite 的五个原因

想要确保数据库服务器正确配置,需要了解不少东西,比如共享缓存、有效缓存大小、work mem、work mem 的维护以及 wal 缓存等等。...SQLite 便于管理——只有单个文件(有时候是一个文件+事务日志),这个文件的格式在多个主要版本中都是通用的,也就是说如果我有一个3.0.0版本(2004年)的 SQLite 数据库文件,便可以在最新的...SQLite 也可以在资源匮乏、要求高效率的移动设备上运行,并支持大量的编译标记:允许用户移除没有计划使用的功能。 SQLite 的速度弥补了它的最大缺点之一:写入时数据库文件锁定。...WAL模式 SQLite 的3.7.0发布版增加了新的日志记录方法:使用预写日志。...使用 BerkeleyDB 主要的缺点在于:它对配置数值非常敏感,而了解正确的页面大小、缓存大小以及其他设置参数需要对相关知识有较深的了解。

1.9K80

PG备份恢复工具pg_probackup

自动数据一致性校验和按需备份校验,无须实际数据恢复。 5、校验。使用checkdb命令按需验证PG实例 6、保留。根据保留策略管理存档和备份。可以根据恢复实际或要保留的备份数配置保留策略。...这个目录存储所有备份文件包括额外的元信息,以及WAL归档。可以将不同实例的备份存储在单个目录的不同子目录中。通过该工具可以进行完整备份和增量备份。...1、全量备份,包含从头恢复数据库集群需要的所有数据文件 2、增量备份。只存储自上次以来更改的数据。允许减小备份大小并加快备份操作。支持以下增量备份模式: 1)PAGE备份。...扫描自上次备份以来归档的所有WAL文件。新创建的备份仅包含WAL记录到的页面。如果这些文件大小与数据库集群文件大小相当,则加速比较小,但备份占用空间仍然较小。 2)DELTA备份。...无论选择哪种备份类型,都支持以下WAL传递策略: 1)自主备份,通过复制协议传输将集群恢复到备份时的一致性状态需要的所有WAL文件。即使没有设置连续归档,需要的WAL段也包含在备份中。

1.4K10
领券