文件名称:提交前缓存溢出-tdc-gp30 external circuit for gas meters application note
文件大小:1.95MB
文件格式:PDF
更新时间:2024-06-29 08:14:39
SQlite 学习教程
6.3 提交前缓存溢出 节 3.0 描述的提交过程都假定了所有变更的数据都保存在用户内存中,直到真正提交。这是通常会出现的状况。 但 有时一个非常大或(多)的修改会超出用户空间的内存缓存大小。在这种情况下,一个事务完成之前,缓存不得不 将数据先写入到数据库中。 在一个缓存发生溢出之前,这个数据库联接的状态如 3.6 节。数据库原始的内容已经被写入回滚日志文件中了, 页 面修改部分还保存在用户内存中。要处理这种缓存溢出,SQLite 会执行 3.7 节到 3.9 节。换而言之,回滚日志被 flush 到硬盘,独享锁已经申请到,修改已经被写入到数据库了。但剩余的步骤会延迟,直到这个事务被真正提交。一个 新的日志文件头会追加到回滚日志文件尾部(处于它自己单独的扇区中),独享锁仍然保留,但其他处理则回到节 3.6.当这个事务提交时,或者另外的缓存溢出发生,节 3.7 及节 3.9 会再次发生(节 3.8 在第二次或以后过程中