【論文解讀】OLTP 數(shù)據(jù)庫(kù)引擎性能優(yōu)化
共 10097字,需瀏覽 21分鐘
·
2024-05-10 11:47
本篇文章解讀兩篇關(guān)于 OLTP 數(shù)據(jù)庫(kù)引擎性能優(yōu)化的論文,分別是發(fā)表于VLDB-2021的《CoroBase: coroutine-oriented main-memory database engine》和發(fā)表于VLDB-2024的《The Art of Latency Hiding in Modern Database Engines》。在此基礎(chǔ)上探討論文的系統(tǒng)設(shè)計(jì)與 TDSQL 計(jì)算引擎設(shè)計(jì)的異同,以及論文帶來(lái)的啟發(fā)。
● 論文一的研究對(duì)象是純內(nèi)存計(jì)算的 OLTP 引擎,作者通過(guò)引入 C++ 20 的 coroutine 特性將 thread-to-transaction 的執(zhí)行模型修改為兩級(jí) coroutine-to-transaction,在不需要內(nèi)部接口改動(dòng)的條件下實(shí)現(xiàn)了事務(wù)間的 batch 機(jī)制和基于協(xié)程的 prefetch,減少了后續(xù)計(jì)算的 cache miss,提升了事務(wù)的整體執(zhí)行性能。
● 論文二在論文一的基礎(chǔ)上,研究對(duì)象從純內(nèi)存計(jì)算的 OLTP 引擎擴(kuò)展為更通用的內(nèi)存計(jì)算和存儲(chǔ) IO 訪問(wèn)混合的 OLTP 引擎,更完整的討論了數(shù)據(jù)庫(kù)引擎可能在哪些環(huán)節(jié)產(chǎn)生性能問(wèn)題(重點(diǎn)關(guān)注端到端的吞吐和延遲):包括 CPU 的 cache miss、存儲(chǔ) IO、操作系統(tǒng)調(diào)度、數(shù)據(jù)同步等等。論文沿用 coroutine-to-transaction 的執(zhí)行模型,通過(guò)控制線程數(shù)量、靈活的 coroutine 策略(可選擇性的協(xié)程嵌套、存儲(chǔ)感知的調(diào)度策略、流水線式的調(diào)度)在不同的場(chǎng)景實(shí)現(xiàn) latency hiding ,以達(dá)到系統(tǒng)整體吞吐的提升。
純內(nèi)存計(jì)算場(chǎng)景
OLTP引擎
內(nèi)存計(jì)算和存儲(chǔ)IO
混合場(chǎng)景
TDSQL計(jì)算引擎對(duì)比
和論文啟發(fā)
1、TDSQL 計(jì)算引擎介紹
2、有棧協(xié)程和無(wú)棧協(xié)程
3、后臺(tái)線程的影響
Buffer pool 和 hot-cold 架構(gòu)
論文缺少了哪些討論
1、延遲的穩(wěn)定性和可預(yù)測(cè)性
2、吞吐和延遲的相互影響
總結(jié)
﹀
﹀
﹀
搶鮮體驗(yàn)!騰訊云PostgreSQL國(guó)內(nèi)首支持PG 16
