ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SAP ABAP CDS Static Cache 的能力边界与限制,为什么参数化 View、空字段缓存和 AVG 都不被支持

SAP ABAP CDS Static Cache 的能力边界与限制,为什么参数化 View、空字段缓存和 AVG 都不被支持 在做 SAP ABAP CDS 性能优化时,很容易产生一种直觉,只要某个 CDS 查询计算量大、访问频繁,就给它加一层 cache,把结果保留下来,下一次直接复用即可。这个思路在普通应用缓存里没有太大问题,但放到 CDS Static Cache 上,就不能这样泛化。SAP 对 Static Cache 划出的边界其实相当明确。它并不是覆盖所有 CDS Entity 的通用缓存框架,而是一种面向特定 CDS View Entity、特定查询结果和特定聚合场景的数据库侧性能优化机制。SAP 官方文档明确说明,Static Cache 目前只能定义在 CDS View Entity 上,并且还排除了几种情况,包括没有 Field Entry 的 Static Cache、带参数的 View Entity,以及包含AVG的场景。理解这几条限制之前,最好先把 Static Cache 放回整个 ABAP CDS 运行架构中。Static Cache 并不是传统意义上的 AS ABAP Table Buffer。CDS View Entity Buffer 工作在 AS ABAP 一侧。数据进入 Application Server 的 Shared Memory,后续 ABAP SQL 请求在满足条件时可以直接由 ABAP SQL Engine 从 Buffer 中取得结果。SAP 对 CDS View Entity Buffer 的定义非常明确,它属于 CDS Tuning Object,使用define view entity buffer on定义,核心目标是减少 Application Server 与数据库之间的数据传输。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进