- 并发控制和事务引擎
- redo log undo log
- MVCC基于乐观锁的并发控制
- 对于undo和MVCC大致有两种实现,oracle、mysql等在表空间文件只保留一个版本,旧版本放到undolog中。pg的做法比较特殊,会在表空间文件中保留所有的副本,对于failed的事务副本、过期的副本,定期从表空间中vacuum回收掉。pg的vacuum的做法会影响性能。
- 2PL基于悲观锁的并发控制
- 每种数据库针对serializable实现也不太一样,mysql是按照2PL实现的序列化,PG实现的是基于serializable snapshot isolation。PG的SSI也有些问题,特殊情况下,也会导致write skew。
- cache buffer multi write问题
- mysql每次insert新数据会有triple write,第一次写binlog,第二次会把表空间文件对于的block复制一份写到另外的buffer文件,第三次才是去写block文件。当然针对多次写有有些优化的工作,例如fusionIO的硬件支持的原子写,aws aurora的存储引擎等等。
- 存储引擎、索引技术
- B+树索引
- 堆表/索引表
- 列式存储/行式存储
- 前缀压缩编码/数据字典/压缩存储
- 事务索引
- 聚簇索引
- 多维索引
- LSM-tree索引
- COLA-B+tree索引
- fractal tree索引
- 位图索引
- BloomFilter
- SQL/查询优化
- vulcano cascading
- LLVM
- 查询结果缓存
- rule based
- cost based
- Join操作
- hash join
- nested loop join
- 谓词下推
关系数据库实现的一些基本技术
最新推荐文章于 2022-08-03 13:00:53 发布