Performance SQLite在修改大文件时速度如何如此之快?
所以,我一直在玩2GB的SQLite数据库文件,我真的很好奇如何修改数据库数据执行得这么好。如果我插入、更新或删除一些数据,这些数据将在大约0.5s内保存到数据库文件中—保存到(机械)硬盘上的2GB文件中 我一直认为,要在文件中插入一个字节,需要移动所有后续字节,但我的HDD的速度远不及在0.5s内处理如此大的文件所需的速度Performance SQLite在修改大文件时速度如何如此之快?,performance,sqlite,Performance,Sqlite,所以,我一直在玩2GB的SQLite数据库文件,我真的很好奇如何修改数据库数据执行得这么好。如果我插入、更新或删除一些数据,这些数据将在大约0.5s内保存到数据库文件中—保存到(机械)硬盘上的2GB文件中 我一直认为,要在文件中插入一个字节,需要移动所有后续字节,但我的HDD的速度远不及在0.5s内处理如此大的文件所需的速度 有人知道SQLite是如何实现这一黑魔法壮举的吗?这不是它的工作原理。文档中有详细的说明,但总而言之,新行通常会追加到表中,并且在任何情况下,数据库文件中的页面都可以随机排
有人知道SQLite是如何实现这一黑魔法壮举的吗?这不是它的工作原理。文档中有详细的说明,但总而言之,新行通常会追加到表中,并且在任何情况下,数据库文件中的页面都可以随机排列。(有趣的是数据库如何找到和读取数据。)
这0.5秒中的大部分是事务开销(强制数据到磁盘,并等待写入完成)。您可以通过启用或。酷,我想我大致了解到了:在末尾插入行,删除时只需将范围标记为空闲,更新只会覆盖某些字节,但不会影响后续行。不过,这可能过于简单化了。我想所有的数据库都有同样的问题需要解决,而且可能以类似的方式解决。本质上,一切都是如此。