A-A+

论文阅读 - OLTP Through the Looking Glass

2021年06月25日 数据库 暂无评论 阅读 106 次

这篇文章是08年SIGMOD的文章。

OLTP系统各组件开销

很多OLTP数据库的架构扔延续了70年代面向当时的硬件的设计,但30年来,现代CPU、内存、网络等等已经有了很大的变化。这篇论文分析了一个OLTP数据库的各个组件的开销。

 

OLTP系统设计趋势

Cluster Computing

从单机多线程的架构,在80年代有了shared disk的架构,最近20年又有shared nothing的架构。再以后的数据库必须要考虑面向集群。

 

Memory Resident Databases

内存越来越便宜,面向全内存的系统可能会更广泛应用。

 

单线程执行

磁盘IO需要多线程来overlap:全内存数据库执行存储过程的场景,基本上就是内存索引结构的读写,实际上不需要多线程overlap磁盘等待。

现代CPU是多核的:但是数据库可以用shared nothing的架构充分利用CPU的能力。

网络成为新的瓶颈:分布式事务的延迟确实不行,但很多场景实际上也很少有跨机事务。

 

高可用vs日志

日志是实现高可用standby节点的方法,但高可用不一定非要REDO日志,甚至Recovery也可以通过复制其他副本来实现,这样的话,Recovery相关的逻辑以及为支持Recovery儿带来的开销都是可以省掉的。

 

事务变体

业务场景可能并不需要完整严格的事务,比如允许最终一致性,隔离级别使用SI,或者如果事务是先完成所有读再执行所有写,那么UNDO也不是必须的。

 

 

 

OLTP优化

 

 

给我留言