《吴辉静-PolarDB-PG企业级特性Global Cache(1).pdf》由会员分享,可在线阅读,更多相关《吴辉静-PolarDB-PG企业级特性Global Cache(1).pdf(17页珍藏版)》请在三个皮匠报告上搜索。
1、PolarDB-PG 企业级特性Global Cache吴辉静(花名:午光)阿里云PolarDB数据库技术专家PostgreSQL 的 CacheCatalogBuffer PoolBackend ProcessRelCachePlanCacheSys/CatCachePostmaster ProcessWalsender ProcessParallel WorkerAutoVacuum ProcessData CacheBuffer Pool共享内存Meta CacheRelCache,Sys/CatCache,Plan Cache,Type Cache 等进程私有内存PostgreSQL
2、的 Data Cache:Buffer PoolKey:BufferTag容量管理:预分配所有进程共享Shared Memory ManagementHuge PageBuffer ManagerDatabase ClusterShared Buffer PoolBackend ProcessBackend ProcessBackend ProcessPostgreSQL 的 Data Cache:Buffer Pool并发控制buffer table lock,buffer descriptor lockpin/unpin淘汰算法Clock SweepRing Buffer刷脏Postgre
3、SQL 的 Meta Cache:Sys/CatCache用于快速查询系统表里的某个字段本质上缓存的是系统表里的 Tuple绝大多数模块都会使用,访问频率非常高SysCache 基于 CatCache 构建进程私有,无淘汰基于 SINVAL 机制失效内存管理使用 Memory Context,可观测性不强CatCacheSysCachepg_classParserOptimizerExecutorpg_typepg_attributeCatalogPostgreSQL 的 Meta Cache:RelCacheRelCache 中缓存了和表相关的所有元数据,加载多个系统表的数据组成了一个庞杂的
4、结构体绝大多数模块都会使用,访问比较高频进程私有,无淘汰基于 SINVAL 机制失效内存管理使用 Memory Context,可观测性不强RelCachetable1ParserOptimizerExecutortable2view1Catalogpg_classpg_indexpg_attributePostgreSQL 的 Meta Cache 失效机制:SINVALSINVAL 支持所有的 Cache 和 Catalog Snapshot 的失效事务提交时广播 SINVAL message随时检查 SINVAL QueueSINVAL Queue 如果溢出,通知所有 Process 执
5、行 Flush CacheSharedSINVALQueueProcess1(DDL)beginalter tablecommitLocal Queue语句结束执行 Local Queue 中的 sinval msgpushsinval msgpushsinval msgProcess2(DML)beginselectcommitacceptsinval msgacceptsinval msgPostgreSQL 的 Meta Cache 总结SINVAL 机制保证正确性进程私有大量冗余副本,OOM内存管理基于 Memory Context可观测性问题强生命周期管理&长连接只加载不淘汰Back
6、end ProcessBackend ProcessShared MemoryBuffer PoolCatalogGlibcMemory ContextSys/CatCacheRelCacheSINVALPolarDB-PG 的 Global Cache 架构Global Cache(L2)CatalogShared Memory ManagerSys/CatCacheRelationCachePlanCacheGeneric Global Cache LayerGlobal Cache Component ManagerGlobal CacheInvalidateSINVALMonitorB
7、ackend Process(L1)Sys/CatCacheRelationCacheL1&L2拷贝 or 引用Write-Update or Write-Invalidate容量管理共享内存分配管理在线弹性扩缩容淘汰失效PolarDB-PG 的 Global Cache 正确性Backend Processbeginalter tablecommitGlobal CacheGlobal GenerationSINVALGlobal Cache InvalidateLOCKupdateupdaterelease版本管理Catalog SnapshotWrite Invalidate基于 SIN
8、VAL谁修改谁负责Global Cache Generation事务提交时更新 Global CachePolarDB-PG 的 Global Cache 共享内存管理基础设施Block Allocator大块内存分配最小粒度根据实例总内存容量设置 Block 大小Chunk Allocator小块内存分配基于 Block 再切分借鉴了 ptmalloc,jemalloc,tcmalloc,DSA 等优秀思想特定场景更优的 fixed-size chunk 管理Dynamic Shared Memory AllocatorOSBlock AllocatorChunk AllocatorFixe
9、d-sizeChunk AllocatorGlobal CacheChunk AllocatorBlockPolarDB-PG 的 Global Cache 共享内存管理基础设施和 malloc/free 一样方便支持内存整理、动态扩缩容使用灵活不同模块可以使用同一个 Allocator,也可以使用独立的 Allocator完善的监控内存泄漏快速定位内存水位、使用状态统计Block Pool1Block Pool2Shrinking Pool128B256B512BFreeChunkAllocatedChunkPolarDB-PG 的 Global Cache 内存弹性满足不同场景下各种极端需
10、求,在线伸缩不同 Cache 容量详细的监控数据帮助决策不同 Cache 的容量设置充分利用内存最大化提升性能ServerlessDynamic Shared Memory AllocatorSys/CatCacheRelCacheOSGlobal CacheComponentManager执行扩缩容任务PolarDB-PG 的 Global Cache 使用Global Cache 打开前后进程内存增长对比新建实例默认打开,可以直接使用polar_global_cache 插件已经安装,只需要 create extensionpolar_xxx_stat 视图查看 Global Cache
11、相关统计数据polar_xxx_component 可以查看 Global Cache Component 相关信息更多细节:https:/ PolarDBPolarDB PostgreSQL PostgreSQL 版版兼容兼容PG14 PG14 2 2核核8 8GBGB 3 3个月个月PolarDB 免费试用阿里云推出飞天免费试用计划,免费领用云产品,开启云上实践之旅扫码立即试用扫码立即试用云原生数据库云原生数据库 PolarDBPolarDB PostgreSQL PostgreSQL 版版兼容兼容Oracle 4Oracle 4核核1616GBGB 3 3个月个月欢迎交流联系方式PolarDB-PG 交流群和开源地址:https:/