oceanbase事务引擎-笔记

 

外存数据库的特点

每次写入需要读取一个完整单元,不同的块做不同的修改,再写回硬盘

oceanbase的特点

本质上差不多,但是快大小不一样,但是增量数据(修改点)集中存储。可以更好的利用内存,利用低峰期合并到内存。但是每次需要读取静态数据和修改。

相对来讲,优化了写入,牺牲了部分读取(完全命中bloomfilter的可以不读静态,相当于内存数据库,不存在动态数据的查询相当于传统数据库)。

业界的内存数据库

  • VoltDB
  • MemSQL

内存数据库很贵

存储事务引擎

  • hash索引:散列存储,单点查询更快
  • B+树索引:顺序索引,范围查询

更新流程

  • 根据主键找到行所在位置
  • 加锁

多版本并发控制

针对高并发的请求,分配在一个队列里面,排队,不需要抢锁。线程可以省下来给其他

通过 /hot_spot/的hint实现,交给用户决定

写日志的性能瓶颈

每次写两条日志,保证两台备机写成功,1333条每秒

只能通过软件上的改变,group commit

每次commit合并多个写日志请求。

条件:

  • 空闲的时候直接commit。有日志来的时候判断没有日志在写,就提交。
  • 聚集到一个阈值的时候写。有日志在写,就放到buffer里面。直到达到阈值。
  • 如果第一个写完日志,系统空闲,就写日志。

总结

  • 内存数据库+分布式系统的设计
  • mvcc的实现
  • group commit