数据表示

涉及浮点数和定点数的存储,不同的是我们需要更多的信息去记录浮点数,包括字符串形式的数据以及其他辅助信息,运算过程为字符串相加相乘类似。
Read more »

并行处理模型

  • Process per DBMS Worker
    • 使用一个进程处理一个请求
    • 使用共享内存对全局数据进行共享,如buffer pool,不用将相同的page加载两次
    • 单进程奔溃不会导致整个系统崩溃
  • Process Pool
    • 使用进程池来处理请求
    • 对cpu缓存不友好
    • 减少了创建销毁进程开销
  • Thread per DBMS Worker
    • 单进程多线程
    • 线程崩溃导致进程崩溃
    • 上下文切换开销很小
    • 不需要管理共享内存
      Read more »

ACID

  • A:原子性
  • C:如果事务是一致的,数据库是一致的,那么结束时也必须是一致的
  • I:隔离性
  • D:事务提交之后会持久化
    Read more »

buffer pool manager

- 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
    - 避免操作系统文件缓存
Read more »

Pod

  • 概念:多个docker的集合,有一个pause容器,其他容器共享这个容器的网络栈和存储,这样多个应用可以实现本地访问其他应用。
  • 分类
    • 自主式pod(不是被控制器管理的pod)
    • 控制器管理的pod
      Read more »