☰
从 DDIC 到 AS ABAP 共享内存,彻底理解 SAP 数据库表 Table Buffering
2026/10/22 13:08:51 网站建设 项目流程

在做 SAP ABAP 性能分析时,一个很有意思的场景经常出现在ST05。程序里明明执行了一条SELECT SINGLE,但数据库侧几乎看不到对应的 SQL 请求。继续往下追踪,才会发现数据根本没有再次到 SAP HANA 里读取,而是直接从当前 AS ABAP 实例的共享内存返回了。

这背后就是 ABAP Dictionary 里一个存在了很多年的机制,Table Buffering。

到了 SAP S/4HANA 时代,这个机制有时容易被忽略。一个常见想法是,SAP HANA 已经是内存数据库,既然数据本身就在内存中,再给 DDIC Database Table 做 Table Buffering 好像没有多少意义。

实际上这两个内存完全不是一个层面的东西。

SAP HANA 的内存属于数据库层,而 ABAP Table Buffer 位于 AS ABAP 实例自己的 Shared Memory。一次没有命中 Table Buffer 的读取,即使 SAP HANA 已经把相关列页保存在内存中,ABAP 应用服务器仍然需要通过数据库接口把 SQL 请求送往数据库,再经过数据库解析、执行以及数据库与 Application Server 之间的数据传输。命中 Table Buffer 后,ABAP SQL 可以直接处理当前 Application Server 内存中的数据,数据库服务器甚至不需要参与这次读取。

SAP 当前的 ABAP Keyword Documentation 仍然明确把 Table Buffer 定义为当前 AS 实例 Shared Memory 中的一块区域,而且 Table Buffer 由 Databas

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询