主日志文件-线性代数及其应用中文版

时间:2024-06-22 11:56:06
【文件属性】:

文件名称:主日志文件-线性代数及其应用中文版

文件大小:2.3MB

文件格式:PDF

更新时间:2024-06-22 11:56:06

sqlite 数据库 嵌入式 入门必备

5.1 每个数据库文件单独拥有日志文件 当一个事务涉及到多个数据库文件时,每个数据库文件都会有其相应的独立的回滚日志文件,并且每个数据库都是 分别加锁的。下图显示了某个事务中修改了三个不同的数据库文件。这种情况与 3.6 步骤处理单个文件的事务还是 有一些类似的。每个数据库文件有一个独享锁。针对每个数据库,要被修改页的原始内容被写入它们相应的回滚日 志文件,但日志文件的内容还没有被 flush 到硬盘中。这时针对数据库的变更还没有发生,虽然有可能用户空间的 数据已经发生了变化。 简 单的说,下图已经简化了它们之前的状态。蓝色仍然指明是原始内容,而粉红是新的内容。但日志文件及数据 库单独的页我们没有指示出来,同时我们也没有指明信 息在操作系统磁盘缓存与硬盘中信息的差异。所有这些因 素在一个多文件提交的场合下仍然起作用。这些因素会占据图中许多位置,但并没有增加新的信息,因此它 们在 此图中被省略掉了。 5.2 主日志文件 多文件提交的下一步是生成“主日志”文件。主日志文件的名称是与原始的数据库文件名 (数据库指的是用 sqlite3_open 的,而不是 ATTACHed 等辅助数据库),再加上文本"-mjHHHHHHHH"。附加的 HHHHHHHH 是一个 随机 32 位 16 进数。每一个新的主日志文件会有一个变化的随机数 HHHHHHHH 后缀。 (注意:前面计算主日志文件名的算法是与 SQLite3.5.0 是一致的,但这不是 SQLite 规范的一部分,或许在新版本 中发生变化) 不同于回滚日志文件,主日志文件并不包含任何数据库文件的页的原始内容。主日志文件包含了此事务所涉及的数 据库的回滚日志文件的全路径。 当主日志文件已经创建完成之后,它会被立即 flush 到硬盘,这个操作早于任何其他操作。在 unix 下面,这个主日 志文件所在目录也被同步到了硬盘,保证掉电以后主日志文件显示在此目录中。


网友评论