您的位置:首页 > 数据库

关系数据库实现的一些基本技术

2016-09-27 13:13 603 查看
并发控制和事务引擎
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
谓词下推
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: