With the growing DRAM capacity and core count in modern servers, database systems are becoming increasingly multi-engine to feature a heterogeneous set of engines. In particular, a memory-optimized engine and a conventional storage-centric engine may coexist for various application needs. However, handling cross-engine transactions that access more than one engine remains challenging in terms of correctness, performance and programmability. This paper describes Skeena, a holistic approach to cross-engine transactions. We propose a lightweight transaction tracking structure and an atomic commit protocol to ensure correctness and support various isolation levels in multi-engine systems. Evaluation on a 40-core server shows that Skeena (1) does not penalize single-engine transactions and (2) enables the use of cross-engine transactions to improve throughput by up to 30x and/or reduce storage cost by judiciously placing tables in different engines.
翻译:随着现代服务器中DRAM能力和核心计数能力的不断增长,数据库系统正在变得越来越多功能,以突出一套不同引擎,特别是内存优化引擎和常规存储中心引擎可能同时存在,以满足各种应用需要,然而,处理进入一个以上引擎的跨引擎交易在正确性、性能和可编程性方面仍然具有挑战性。本文描述了Skeena,这是跨引擎交易的一种整体处理方法。我们提议了一个轻量交易跟踪结构和一个原子承诺协议,以确保正确性并支持多引擎系统中的各种隔离水平。对40核心服务器的评估表明,Skeena(1) 不惩罚单引擎交易,(2) 能够使用跨引擎交易,通过在不同的引擎中明智地放置表格,将吞吐量提高30x和(或)降低储存成本。