数据表示
涉及浮点数和定点数的存储,不同的是我们需要更多的信息去记录浮点数,包括字符串形式的数据以及其他辅助信息,运算过程为字符串相加相乘类似。
- buffer池组成
- frame:缓冲池由frame组成,每次我们需要一个page,就吧这个page替换进frame
- page table:用来记录page到buffer pool的映射关系
- 其他元信息:脏页面(页面是否被修改),引用计数(页面被线程正在访问的计数)
- multiple buffer pools(多个缓冲池,每个池有其策略)
- 减少线程竞争
- 提供多种策略
- 如何实现?根据Object id映射或者哈希
- pre-fetching(预取)
- 提前把一些顺序信息读入buffer pool中
- 可以完成一些操作系统不能完成的预读,如index分支跳转
- scan sharing(扫描共享)
- 查询复用计算结果
- 允许多个查询附加到一个游标上
- buffer pool bypass
- 给查询线程分配一小块内存,查询page的时候不经过缓存池,为了不污染缓存
- 查询量小的时候使用
- O_DIRECT
- 避免操作系统文件缓存