SAP缓存 表缓存( Table Buffering)

news2024/11/27 6:32:12

本文主要介绍SAP中的表缓存在查询数据,更新数据时的工作情况以及对应概念。

SAP表缓存的工作

查询数据

更新数据

删除数据

表缓存的概念

表缓存技术设置属性

不允许缓冲:

允许缓冲,但已关闭:

缓冲已激活:

已缓冲单个记录

通用区域缓冲:

完全缓冲:

OPEN SQL不使用缓冲区的情

SAP表缓存的工作
查询数据

激活ST05并执行如下OPEN SQL查询语句(新建表,无数据)

缓冲监视器中出现一条记录(即使数据不存在,也会将对应键记录,下一次获取不存在的记录会更快)

查看ST05跟踪如下

第一次执行OPEN SQL 时是做了三步操作

第一步:查询缓存中是否存在该记录

第二步:缓存中无该查询数据的记录,查询数据库该表当前client所有记录(表设置为通用区域缓冲,通用键值为client)并更新缓冲区(无数据,仍然记录键值,以备下一次查询)

第三步:续第一步查询缓冲中的结果并返回

第二次执行OPEN SQL 直接从缓冲区查询结果,然后返回

更新数据

激活ST05并执行如下OEPN SQL更新语句

缓冲监视器记录,记录已失效

ST05跟踪记录(PS:这就是为什么modify比insert慢的原因)

更新数据库数据,并更新缓冲区

激活ST05并执行如下OPEN SQL查询语句

ST05跟踪结果

数据更新后五次的数据库访问将不经过缓存,第六次访问优先读取缓冲区,符合前述测试场景。

删除数据

激活ST05并执行如下OPEN SQL删除语句(被删除数据本身不存在)

缓冲监视器中记录无更新,ST05跟踪无缓冲更新记录,不影响后续执行查询语句的缓冲访问

激活ST05并执行如下OPEN SQL删除语句(被删除数据存在)

缓冲监视器记录中上次失效时间更新

ST05跟踪记录中有缓冲失效记录

此时执行查询语句ST05跟踪结果与更新时一致

PS: 上述所有操作均基于OPEN SQL,多台服务器实例还涉及缓冲区同步,如下截图

表缓存的概念

        SAP缓冲发生在每个应用程序服务器的共享内存中。SAP缓冲区由一个中央管理结构、一个按字母顺序排列的表目录和一个数据区组成。一般缓冲表或数据库视图的各个区域作为单独的完全缓冲表进行管理。缓冲的数据作为内部表保存在数据区域中。数据区域使用SAP内存管理进行管理。

        当使用Open SQL访问缓冲表或视图时,首先在表目录中搜索表的名称,然后对数据进行二进制搜索。

        在单记录缓冲和通用缓冲中,也会保存表或视图中不存在的行的信息。第一次读取不存在的行时,主键或泛型键的键值将加载到具有(否则为空)行和适当标志的相关数据区域中。下次尝试读取此行时,缓冲区已指示此行不存在。

        单记录缓冲区的管理不如通用缓冲区或全缓冲区有效。在单记录缓冲中,行被逐个加载到数据区的内部表中。在通用缓冲和完全缓冲中,表或视图的所有数据都在一个步骤中加载并在数据库中排序。

        缓冲区监视器

        缓冲区监视器是一个SAP内存管理工具(事务ST02),用于分析当前应用程序服务器的SAP缓冲区。这包括以下任务:

◾显示过去几天应用程序服务器上的缓冲区负载

◾显示和修改关联的配置文件参数

◾显示有关表缓冲区的详细信息

◾显示用于分析缓冲区有效性的表统计信息。当优化相关的配置文件参数和检测昂贵缓冲的表时,显示的值是有用的。

表缓存技术设置属性

不允许缓冲:

        Open SQL总是直接访问数据表的当前数据。该表在任何其他系统中也不应启用SAP缓冲。

允许缓冲,但已关闭:

        交付时,该表不允许SAP缓冲,但是原则上在其它系统可以根据表的使用激活缓冲。

缓冲已激活:

        该表执行缓冲,如果可能,Open SQL语句访问共享内存中的SAP缓冲而不是直接访问表。

已缓冲单个记录

        只有表中那些实际被访问的行才被缓冲。与使用通用缓冲或完全缓冲相比,这需要更少的缓冲空间。另一方面,需要更多的管理工作,并且需要更直接的数据库访问。

        如果WHERE子句用于访问非缓冲行,并且此子句指定使用and联接的相等条件,则会尝试加载此行。如果找不到该行,则会在缓冲区中进行记录,并使用完全指定的WHERE子句来避免在下次读取时访问新的数据库。

注意事项

◾使用单记录缓冲时,任何Open SQL语句都必须尊重完整的主键,以防止它们绕过SAP缓冲。

◾对于经常读取单行的大型表,建议使用单记录缓冲。在读取许多行的较小表中,通常首选全缓冲,因为这减少了需要加载的直接数据库访问次数。

◾单记录缓冲区的使用仅由WHERE子句指定,而不使用single加法。

通用区域缓冲:

        当对一行执行读取时,所有行都会加载到SAP缓冲区中,这些行与主键左对齐部分的此行相匹配。所涵盖的关键字段的数量在定义中指定,并且始终小于关键字段的总数。这些键字段合在一起就是通用键。

        单独的泛型区域像独立的表或视图一样处理,它们的主键是泛型键,并且是完全缓冲的。

        如果在Open SQL中使用完全指定的泛型键访问未缓冲的行,则会尝试加载该区域。如果找不到行,则会在缓冲区中记录这一点,并且下次使用完全指定的泛型键访问行时不会再次访问数据库。

注意事项

◾在一般缓冲的表或视图中,对不存在的数据的访问非常快。

◾使用通用缓冲时,任何Open SQL语句都必须考虑通用关键字,以防止它们绕过SAP缓冲。

◾如果通常只需要表或视图的某些区域,则应使用通用缓冲。这些区域不应太小,以防止创建过多的区域并使缓冲区管理过载。它们也不应该太大,以防止加载过多的数据。在某些情况下,完全缓冲也可能更有效。因此,通用关键字不能覆盖太多或太少的字段。

完全缓冲:

        读取一行时,表或视图中的所有行都会加载到SAP缓冲区。缓冲的表或视图要么完全在缓冲区中,要么根本不在。在缓冲区中,缓冲的数据记录按表或视图的键进行排序。优化访问要求主键或辅助索引字段的左对齐部分尽可能大。如果不是,则以线性方式扫描缓冲区。

        如果在特定于客户端的表或视图中打开了完全缓冲,则会在内部执行使用客户端列作为泛型键的泛型缓冲。

注意事项

◾在完全缓冲的表或视图中,对不存在的数据的访问非常快。

◾应在小表中使用完全缓冲,例如自定义表。在较大的表中,只有在频繁读取大量数据的情况下,完全缓冲才是值得的。应该很少对完全缓冲的表执行写入操作。

OPEN SQL不使用缓冲区的情况

SELECT 语句使用FOR UPDATE,DISTINCT,UNION,聚合表达式,JOIN连接,GROUP BY,ORDER BY

使用了关键字CLIENT SPECIFIED 但是WHERE 条件中没有client ID

WHERE条件中使用了IS NULL的判断

在WHERE条件中使用子查询。

WHERE条件将一列与from之后指定的数据库表或数据库视图中的另一列进行比较

访问具有单个记录缓冲的表或视图,而不指定(在WHERE条件中)主键的所有键字段的所有由AND连接的相等条件。

对一般缓冲区的访问,而不完全指定由WHERE条件中的AND连接的相等条件。

如果违反了精确指定通用区域的要求(如上所述),则在访问具有通用缓冲的表或视图时使用FOR ALL ENTRIES进行选择。FOR ALL ENTRIES之后的条件不能在多个常规区域之间产生OR关系。

WHRE条件列不是按正确顺序排列的主键的左对齐子集或者其中的列使用了DESCENDING

读取为其定义了替换对象的数据库表或数据库视图。

在使用写语句使缓冲区中的某个条目无效后,默认情况下,接下来五次本应访问该条目的读取将绕过当前应用程序服务器的缓冲区。对更改的条目执行的下一次读取会将其重新加载到缓冲区中,并删除无效项。在配置文件参数zcsa/sync_reload_c中指定了在重新加载之前绕过缓冲区的读取次数。

注意:

        出于性能原因,访问缓冲的数据库表或视图时应注意使用上述添加绕过SAP缓冲区。要显式绕过SELECT语句中的SAP缓冲区,应始终使用添加的BYPASSING buffer。仅仅依靠上面添加的隐含行为是不够的。        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯云价格计算器,一键计算精准报价,好用!

腾讯云价格计算器:可以计算腾讯云服务器不同CVM实例规格、CPU内存、公网带宽和系统盘费用明细表,可以一键计算出精准报价明细表,腾讯云服务器网txyfwq.com分享大家腾讯云服务器价格计算器入口链接、使用方法及限制说明: 腾讯云服…

KSO-SAP,ABAP创建远程RFC函数

文章目录 概要创建rfc函数创建函数修改函数处理类型小结 概要 (这是创建rfc ,远程调用rfc请到 KSO-SAP ABAP调用远程RFC函数详细过程) SAP RFC(Remote Function Call)是一种用于处理系统间通信的协议,允…

融汇贯通 —— 2023年技术与心灵的双重成长旅程

当我们站在2023年的岁末,回望这一年赋予我们的经历和挑战,心中涌动的感慨与启示像朝日初升的光芒,照亮脚下的路,亦照见心中的路。在此,我想分享几个方面的感悟和成长,愿它们能有所触动,成为您前…

【QT】QStringListModel类的应用介绍

目录 1 概述 2 QStringListModel常用方法 3 使用QStringListModel的步骤 4 QStringListModel的使用 4.1 Model/View结构对象和组件初始化 4.2 编辑、添加、删除项的操作 4.3 以文本显示数据模型的内容 4.4 其他功能 1 概述 QStringListModel用于处理字符串列表的数据模型…

Android Studio 如何实现软件英文变中文教程

目录 前言 一、确认版本号 二、下载汉化包 三、汉化包安装 四、如何实现中英文切换 五、更多资源 前言 Android Studio是一款功能强大的集成开发环境(IDE),用于开发Android应用程序。默认情况下,Android Studio的界面和…

英语中修饰头发的形容词顺序是怎么样的(加补充)

一、英语描述发型 :漂亮长短形状颜色头发。 例如她有一头美丽的黑色的直发。She has beautiful long straight black hair.二、多个形容词修饰同一名词时的顺序是固定的,其顺序为:①冠词、指示代词、不定代词、物主代词②序数词基数词③一般性描绘形容词…

圆钢在线直线度测量仪的配置都有哪些?

圆钢产线有很多,并且很多都是需要对直线度尺寸进行检测的,这就是在线直线度测量仪的应用所在,在线检测远比人工检测能带给工厂更大的利益与效率。 在线直线度测量仪原理 直线度测量仪设置3台位置测量仪,每台位置测量仪内布置呈十字…

【VTK-Rendering::Core】第一期 vtkCoordinate坐标系统

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享vtkCoordinate源码解析,并对VTK中的各种坐标变换进行分析,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享&#xff…

折磨人的回文数

题目: 描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数…

idea的pom.xml文件灰色删除线解决办法

以上是点击了移除module后就变成这样 如果再次对着已移除的module右键会发现有个delete,点击这个是真删了,要谨慎备份哦 解决方案:恢复误操作remove module的解决方法 idea最右边,有个Maven控件,找到要恢复的module&a…

【C语言深度剖析——第一节(关键字1)】《C语言深度解剖》+蛋哥分析+个人理解

你未曾见过火光,难怪甘愿漂泊寒夜 本文由睡觉待开机原创,未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 首先简单介绍一下《C语言深度解剖》: 全书特点&am…

亚信安慧AntDB MTK数据同步工具之数据稽核

数据稽核是一种用于确保表数据准确性和一致性的重要方法,它涉及到检查数据的完整性、致性、有效性和合法性,以及与预期规范的匹配程度等多个方面。随着大数据时代的到来,通过有效的数据稽核,组织可以提高决策的准确性和效率&#…

【产品应用】一体化步进伺服电机在自动稀释仪中的应用

在许多化学实验和生物实验中,稀释是一个关键步骤。为了提高稀释的准确性和效率,自动稀释仪被广泛使用。随着科技的进步,一体化步进伺服电机在自动稀释仪中的应用越来越广泛,大大提高了仪器的性能和效率。本文将详细介绍一体化步进…

2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作…

网页设计期末 建筑博物馆首页 HTML+CSS+js 完整代码(轮播图+瀑布流)

文章目录 前言:完整代码在总结处跳转!!! 描述:结果展示:部分代码演示:(完整代码在总结处跳转)总结:(完整代码在此处跳转) 前言&#x…

ELK----filebeat日志收集工具

ELK:filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小的多。 filebeat可以运行在非java环境。他可以代理logstash在非java环境上收集日志 filebeat无法实现数据的过滤&…

查看IOS游戏FPS

摘要 本篇技术博客将介绍如何使用克魔助手工具来查看iOS游戏的帧率(FPS)。通过克魔助手,开发者可以轻松监测游戏性能,以提升用户体验和游戏质量。 引言 在iOS游戏开发过程中,了解游戏的帧率对于优化游戏性能至关重要…

顶配版SAM:由分割一切迈向感知一切

文章目录 0. 前言1. 论文地址1.1 项目&代码1.2 模型地址1.3 Demo 2. 模型介绍2.1 亮点2.2 方法 3. 量化结果、可视化展示Reference 0. 前言 现有的视觉分割基础模型,如 SAM 及其变体,集中优势在形状、边缘等初级定位感知,或依赖外部模型…

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、Map阶段实现(1)创建Maven项目(2)添加相关依赖…

红警1源代码下载,编译,单步调试操作步骤

注意视频无声音: 红警1代码单步调试操作步骤_哔哩哔哩_bilibili红警1,源代码下载,编译,单步调试操作步骤。1、下载代码:https://gitee.com/r77683962/CnC_Remastered_Collection/repository/archive/master.zip这里边…