The NVMeVirt paper analyzes the implication of storage performance on database engine performance to promote the tunable performance of NVMeVirt. They perform analysis on two very popular database engines, MariaDB and PostgreSQL. The result shows that MariaDB is more efficient when the storage is slow, but PostgreSQL outperforms MariaDB as I/O bandwidth increases. Although this verifies that NVMeVirt can support advanced storage bandwidth configurations, the paper does not provide a clear explanation of why two database engines react very differently to the storage performance. To understand why the above two database engines have different performance characteristics, we conduct a study of the database engine's internals. We focus on three major differences in Multi-version concurrency control (MVCC) implementations: version storage, garbage collection, and index management. We also evaluated each scheme's I/O overhead using OLTP workload. Our analysis identifies the reason why MariaDB outperforms PostgreSQL when the bandwidth is low.
翻译:NVMeVirt论文通过分析存储性能对数据库引擎性能的影响,旨在提升NVMeVirt的可调性能。研究针对两种主流数据库引擎MariaDB和PostgreSQL展开性能分析。结果表明:在存储性能较低时MariaDB更具效率,但随着I/O带宽增加,PostgreSQL性能表现优于MariaDB。虽然这验证了NVMeVirt能够支持高级存储带宽配置,但原论文未能清晰解释两种数据库引擎对存储性能产生显著差异的原因。为探究上述数据库引擎性能差异的成因,我们对数据库引擎内部机制展开研究。重点聚焦多版本并发控制(MVCC)实现中版本存储、垃圾回收和索引管理三大核心差异,并采用OLTP工作负载评估各方案的I/O开销。通过分析,我们明确了低带宽环境下MariaDB性能优于PostgreSQL的根本原因。