在我的场景中,我使用 HTTP 目标将我的 ABAP 系统连接到非基于 ABAP 的系统。
我想在 ABAP 中实现缓存,以便可以使用应用程序的性能,而不必每次都点击后端。
我想在 ABAP 中,缓存只能通过使用共享内存来实现。
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abenuse_shared_memory_guidl.htm
这是对的吗?
缓冲"是指"加载到 ABAP 内存中并避免额外的数据库往返"?
如果是,我同意您的理解,即共享内存将是实现这一目标的唯一方法。
但是,考虑到在数据库之上,您可以有 1..n 个应用程序服务器,每个服务器可以有 1..n 个工作进程。共享内存将允许您在一个应用程序服务器内跨工作进程缓冲内容,但不能跨应用程序服务器缓冲内容。
如果考虑其他"缓冲"方法(例如联接速度较慢的数据的聚合视图(,则可以通过使用适当的数据库视图或具体化来获得其他方法。
每次 ABAP AS 收到一个 http 请求时,您都会得到一个新的"会话"(滚动区域(。您是对的,共享内存可能是实现缓冲区的一种选择。另一种选择是在 SE11 中打开表缓冲。
但典型的方法实际上是始终从数据库开始并再次读取数据。
为了提高应用程序的性能,您可以尝试减少从http到ABAP的调用,因为在http端实现更多逻辑。
还请考虑 DBMS 缓存。也许这也可以改善许多配置的响应时间。
您必须在ABAP上启动所有选择,然后将所有数据发送到http请求。您可以在其他系统上详细说明它并做任何您想做的事情。最后,将结果发送到abap并完成您的目的。这是快速的方法
这取决于您的服务正在做什么。 如果它访问一个表,你可以简单地缓冲表本身: 从 ABAP tx SE11 转到技术设置->缓冲开关开>完全缓冲。
这应该足以加快您的服务速度。