互斥锁 ib_mutex_t
typedef FutexMutex ib_mutex_t;
UT_MUTEX_TYPE(TTASFutexMutex, GenericPolicy, FutexMutex); 这个宏定义展开是
typedef PolicyMutex<TTASFutexMutex<GenericPolicy>> FutexMutex;
PolicyMutex是个mutex框架,具体实现依赖模板参数MutexImpl。
1234567891011121314151617
templat...
Rethink the Scan in MVCC Databases
这是SIGMOD'21 上的论文《Rethink the Scan in MVCC Databases》,论文针对像HTAP等场景下可能出现大量versioned data中执行scan慢的问题提出了一种比较有效的方案。
Scan性能问题
首先,论文看到了这种场景下scan慢的一个重要原因:
Scan的时候,每一个key都要分别从自己的多个版本里面做一次线性查找,找到当前读快照可见的版本。
这个过程中假如有一种ridgy pointer,用于从key A的可见...
REMIX: Efficient Range Query for LSM-trees
《REMIX: Efficient Range Query for LSM-trees》FAST'20
LSM-Tree引擎的scan操作是一个引擎固有的短板,其根源在于相比基于B+Tree的引擎如InnoDB的数据全局有序,LSM-Tree的数据有序性差,它由多个sort run组成,因此scan的时候需要对多个sort run进行merge。
考虑如下的情况,比如做一次全表扫描,扫描过程中对若干sort run进行了merge。但再有一次全表扫描时,还是需要进行一次merge。两次merge...
阿里LSMTree存储引擎X-Engine
X-Engine是阿里云研发的LSM-Tree结构的存储引擎,主打低存储成本带来的性价比。
问题
the tsunami problem 海啸问题:122倍突发流量
the flood discharge problem 泄洪问题:将内存数据快速转到持久化存储组件
the fast-moving current problem 快变洋流问题:热点行变化快
架构
优化总结
读路径优化
Extent
Cache
多版本SuperVersion
增量cache替换
写路径优化
memtable热点行优化
...
MyRocks in Facebook UDB
MyRocks Paper《MyRocks: LSM-Tree Database Storage Engine Serving Facebook's Social Graph》
这篇文章介绍了Facebook为了解决UDB数据库成本迁移MyRocks的挑战和解决方案。
Introduction
迁至MyRocks所遇到的挑战
在Facebook UDB场景下,MyRocks将存储空间压缩了一半,因此实例数目减半,也意味着UDB集群的CPU和IO硬件资源减半。
Range Scan的Forward和Backward性能不一样,这个主要是底层数据...
RocksDB演进
《Evolution of Development Priorities in Key-value Stores ServingLarge-scale Applications: The RocksDB Experience》FAST'20
这篇文章是讲述Facebook大规模部署RocksDB的经验,主要是RocksDB优化目标的演变。
RocksDB应用比较广,除了作为KV产品服务业务,也在很多其他系统中作为存储组件。
Streaming Processing: Flink, Kafaka Stream, Samba, Facebook's Stylus.
Logging/Queuing Service: Fa...
LSMTree自适应内存管理
LSMTree自适应内存管理
Breaking Down Memory Walls: Adaptive Memory Managementin LSM-based Storage Systems(VLDB'21)
内存管理整体架构比较清晰,如图,无需赘言。
Write Memory内存管理
Write Memory的管理方式见下图。
像RocksDB的Write Memory就是一整个memtable,论文给出了另外一个思路,即使是write memory也用leveled方式,如图。Memory也分成M0,M1,M2三层,M0满则merge到M1,同理M1 merg...
构建分析LSM Compaction Design Space
《Constructing and Analyzing the LSM Compaction Design Space》 VLDB'21
四个原语
Compaction是LSM-Tree引擎中最重要的环节之一,一方面它主导了LSM-Tree的形状进而影响了LSM-Tree的包括性能、空间占用等对外表现,另一方面它本身要消耗相当的计算和IO资源,容易造成抖动等问题。
但目前业界针对compaction较少有系统的探索,很多系统的compaction策略依赖工程师的个人经验,大量可能的策略未被分析测试...
论文阅读 - OLTP Through the Looking Glass
这篇文章是08年SIGMOD的文章。
OLTP系统各组件开销
很多OLTP数据库的架构扔延续了70年代面向当时的硬件的设计,但30年来,现代CPU、内存、网络等等已经有了很大的变化。这篇论文分析了一个OLTP数据库的各个组件的开销。
OLTP系统设计趋势
Cluster Computing
从单机多线程的架构,在80年代有了shared disk的架构,最近20年又有shared nothing的架构。再以后的数据库必须要考虑面向集群。
Mem...
Databricks Lakehouse
《Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics》 CIDR21'
整片文章讲的比较宽泛。
Introduction
第一代数仓:结构化数据,用于决策支持和BI。
第二代数仓:解决存储和计算资源耦合、无弹性、非结构化数据激增等问题,采用了data lakes方案,采用开放格式,数据存储到分布式文件系统,主要代表是Hadoop运动。
第三代数仓,2015年...