统一内存管理

主要观点:数据库内存管理设计中有一个令人兴奋的趋势,即重新思考缓冲池的抽象边界,将用于缓存磁盘数据的缓冲池和用于查询处理的内存机制整合为一个大的缓冲池,DuckDB 有相关博客介绍,Otaki 等人有进一步研究论文,此想法虽解决诸多问题但也带来新问题,如缓冲池需更复杂处理不同页面,查询操作需针对这种存储编写等,且需良好手动内存管理的语言才能充分受益。
关键信息:数据库有缓存磁盘数据的缓冲池和用于查询处理的内存,调优缓冲池对数据库性能重要,Go 语言在实现数据库时处理内存限制机制不佳,Rust 虽较好但标准库无可失败分配较烦人,整合缓冲池可解决自身经历的问题并开拓新思考,如同时服务 IO 重和查询重的工作负载等,但也带来新问题。
重要细节:缓冲池由“页”组成对应磁盘页,有逻辑确保页更改同步到 WAL 及磁盘;查询处理需内存限制防止 OOM 及溢出到磁盘行为;DuckDB 有相关博客,Otaki 等人有论文深入探讨,此想法需更复杂缓冲池及特定语言编写查询操作等。

阅读 12
0 条评论