sqlite 中的 .sqlite-shm 和 `.sqlite-wal` 是做啥用的?

yufei       3 年, 7 月 前       2941

好久没用 sqlite3 ,昨天小用了下,发现除了正常的 .sqlite 外,还有两个 .sqlite-shmsqlite-wal 文件,它们都是做啥的? 能不能删呢?

答案显而易见的,可删除,但最好不要删

sqlite 官网( http://www.sqlite.org/fileformat2.html 有对这两个文件后缀做了说明,大概的意思就是说呀

  1. walwrite ahead log 的缩写,也就是保存的是一个日志,类似于 mysqlbinlog.log 文件。 sqlite3.7 之后的版本开始有了这个功能。

    当一个 sqlite 数据库开启了 write ahead log 功能,那么所有连接数据的操作都必须使用 WAL 模式,然后就会在数据库文件夹 ( .sqlite 同目录 ) 下生成一个后缀为 .sqlite-wal 的文件保存操作日志。

    如果你打开这个文件看一眼里面的内容,有点像数据库备份文件。

    这个文件的大小有点坑,有时候比数据库还大。

  2. 当我们开启了 WAL 模式,极端情况下,每次读都需要扫描 .sqlite-wal 文件和 .sqlite 文件。为了提高性能,WAL 模式中有一个 wal-index 文件,这个文件记录了页号和该页在 WAL 文件中的偏移,并且 wal-index 文件采用共享缓存实现,这个文件名,你应该猜到了,就是 .sqlite-shm

    判断 page 是否在 wal 文件存在的操作实质是一次内存读。

    wal-index 采用 hash 表存储,因此查询效率也非常高

具体的内容,你们可以看看这篇文章 https://www.cnblogs.com/cchust/p/4754619.html

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
什么意思
什么意思
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.