SQLite .journal 文件

在之前插入大量数据测试的时候,发现在数据库文件同级目录下会产生一个同名.journal的文件,并且不是一直会存在,而是生成一会就会自动删除,然后继续生成继续删除,直到数据插入完成。

初步猜测,应该是类似 redis 的 rdb持久化文件一样,防止服务宕机或者插入中断丢失数据。

带着此疑惑,翻阅下SQLite官方文档,如下:

File Locking And Concurrency In SQLite Version 3

翻译过来大概就是指: 当进程想要更改数据库文件时,它首先记录原始未更改的数据库内容 在_回滚日志_中。回滚日志是普通的始终位于的磁盘文件在与数据库文件相同的目录或文件夹中,并具有与数据库文件同名,但添加了 -journal 后缀。回滚日志还记录初始数据库的大小,以便在数据库文件增长时可以截断它 回滚时恢复到其原始大小。

简单理解当SQLite数据库进行事务处理时,.journal文件用于存储修改前的数据页(page)的副本。如果在事务提交之前发生崩溃或错误(如宕机),SQLite可以使用这些存储的副本来回滚(roll back)事务,从而保持数据库的一致性和完整性。

这样看来,与我一开始的猜测出入不大,.journal文件还是蛮重要的,是一个重要角色。


相关推荐
TOPGO智能3 分钟前
在腾讯CloudStudio上成功部署Moltbot接入飞书
数据库
云边有个稻草人5 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库·国产数据库·kingbasees·金仓数据库·关系数据库替换用金仓
星辰_mya5 分钟前
Es之只读
数据库
Tangcan-11 分钟前
【Redis】通用命令 1
数据库·redis·缓存
MSTcheng.15 分钟前
【C++】C++异常
java·数据库·c++·异常
草莓熊Lotso1 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七1 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
岳麓丹枫0012 小时前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
陌上丨8 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56789 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws