Skip to content

Commit

Permalink
fix typo in STORAGE_AND_CACHE.md
Browse files Browse the repository at this point in the history
  • Loading branch information
zhenghe3119 committed Aug 23, 2019
1 parent 4aa1d2c commit 2f96242
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion STORAGE_AND_CACHE.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ freelist 中保存着顺序排列的空闲 page id,举例如下:

mmap 是操作系统提供的系统调用,它将系统中的某个文件或设备的数据直接映射到一块大小给定的虚拟内存中,这块虚拟内存可以大于或小于该文件或设备的实际所占空间大小。映射完毕后,应用程序可以认为(实际并不会)映射对象的数据已经全部读入内存中,任意访问这块虚拟内存中的数据,操作系统在背后全权负责数据的缓冲读写。

boltDB 利用 mmap 管理数据的读缓冲,即让操作系统来决定何时将数据读入内存,当缓冲区大小不足时如何选择被置换的数据,boltDB 只管像访问字节数组一样访问数据库文件即可。当然,使用 mmap 也失去了数据读取的控制权,无法根据数据库系统的运行逻辑来优化数据预取(prefetching)及缓存置换(buffer replacement)过程。话虽说如此,但实际情况是,boltDB 每次都选择将数据库文件 mmap 到一块小于数据库文件本身大小的虚拟内存中,因此实际上只有 demand paging,没有 buffer replacement。
boltDB 利用 mmap 管理数据的读缓冲,即让操作系统来决定何时将数据读入内存,当缓冲区大小不足时如何选择被置换的数据,boltDB 只管像访问字节数组一样访问数据库文件即可。当然,使用 mmap 也失去了数据读取的控制权,无法根据数据库系统的运行逻辑来优化数据预取(prefetching)及缓存置换(buffer replacement)过程。话虽说如此,但实际情况是,boltDB 每次都选择将数据库文件 mmap 到一块不小于数据库文件本身大小的虚拟内存中,因此实际上只有 demand paging,没有 buffer replacement。

以以下的简化代码为例:

Expand Down

0 comments on commit 2f96242

Please sign in to comment.