SAP缓存 表缓存( Table Buffering)

本文主要介绍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。仅仅依靠上面添加的隐含行为是不够的。        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

笔记1:基于锚框(先验框)的目标检测

一、边缘框(bounding box) 1.1 定义 边缘框:真实标注的物体位置 2.1 表示方式 1、(x1,y1)和(x2,y2) 2、(x1,y1)和w,h 二、锚框(anchor box)/先验框(prior bounding box) 2.1 定义 对边缘…

webpack打包批量替换路径(string-replace-webpack-plugin插件)

string-replace-webpack-plugin 是一个用于在 webpack 打包后的文件中替换字符串的插件。它可以用于将特定字符串替换为其他字符串,例如将敏感信息从源代码中移除或对特定文本进行本地化处理。比如文件的html、css、js中的路径地址想批量更改一下 http://localhost:…

软件安装(详细讲解VMware虚拟机的安装及VMvare安装winServer2012)实施必用!!!

文章目录 前言:一、VMware虚拟机的安装1.1VMware虚拟机的安装步骤(一直下一步):1.2Vmware配置虚拟机: 二、VMware安装winServer20122.1激活windows: 思维导图: 前言: 本编给大家详细的介绍VMware虚拟机的安装和安装wi…

自定义View绘制基础之Canvas

画布Canvas Canvas(画布)是一个用于绘制图形的重要类,它提供了一组绘图操作的方法,允许你在屏幕上绘制各种形状、图像和文本。下面是Canvas类的主要函数: 目录 一、绘制图形和图像 1.drawColor 2.drawCircle 3.dr…

Gitlab 定时备份

要求 1.为了能够备份和恢复,请确保你的系统上安装了Rsync #Debian/Ubauntu sudo apt-get install rsync # RHEL/Centos sudo yum install rsync 配置与备份目标机器之间的免密认证 修改gitlab配置文件 vim /etc/gitlab/gitlab.rb gitlab_rails[manage_backup_…

服务器运行状况监控工具

服务器运行状况监视提供了每个服务器状态和性能的广泛概述,通过监控服务器指标,如 CPU 使用率、内存消耗、I/O、磁盘使用率、进程等,服务器运行状况监控可以避免服务器停机。 服务器性能监控指标 服务器是网络中最重要的组件之一&#xff0…

AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库

在SREWorks社区聚集了很多进行运维数仓建设的同学,大家都会遇到类似的挑战和问题: 数仓中存储大量数据消耗成本,但很多存储的数据却并没有消费。进数仓的ETL学习成本高、管理成本高,相关同学配合度低,以及上游结构改动…

OpenAPI,已支持表单数据格式校验

OpenAPI 路径 开放平台 功能简介 「OpenAPI」- 支持表单数据格式校验。 通过「OpenAPI-新增表单数据」接口,新增数据时,若数据格式不匹配,会导致无法新增。 例如,数字不能新增到日期格式的表单字段。 请参考数据格式传参&a…

3d光学轮廓仪测微光学器件应用及其重要意义

微光学器件是光学器件的重要分支,为光学通信、光传感、光计算等领域的发展提供重要支撑。微光学器件具有尺寸小、功耗低、低成本等优势,可以于电子器件集成,实现更高效的数据传输和信号处理。未来,随着微纳加工技术的进一步发展&a…

【办公软件】Excel双坐标轴图表

在工作中整理测试数据,往往需要一个图表展示两个差异较大的指标。比如共有三个数据,其中两个是要进行对比的温度值,另一个指标是两个温度的差值,这个差值可能很小。 举个实际的例子:数据如下所示,NTC检测温…

在STM32中集成TSL2561光强传感器的开发和调试

在STM32中集成TSL2561光强传感器的开发和调试是一个常见的应用场景。TSL2561是一款数字光传感器,能够测量可见光和红外光的光强,并通过I2C接口将数据传输给微控制器。下面将为您介绍在STM32中集成TSL2561传感器的开发步骤,并附上相应的代码示…

【Linux】指令(本人使用比较少的)——笔记(持续更新)

文章目录 ps -axj:查看进程ps -aL:查看线程echo $?:查看最近程序的退出码jobs:查看后台运行的线程组fd 任务号:将后台任务提到前台bg 任务号:将暂停的后台程序重启netstat -nltp:查看服务及监听…

关于 K8s 的一些基础概念整理

〇、前言 Kubernetes,将中间八个字母用数字 8 替换掉简称 k8s,是一个开源的容器集群管理系统,由谷歌开发并维护。它为跨主机的容器化应用提供资源调度、服务发现、高可用管理和弹性伸缩等功能。 下面简单列一下 k8s 的几个特性: 自…

React Hooks 面试题 | 06.精选React Hooks面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

02.Git远程仓库

一、常用的托管服务 1.gitHub 一个面向开源及私有软件项目的托管平台,只支持Git作为唯一的版本库格式进行托管。 2.码云(gitee) 是国内的一个代码托管平台,服务器在国内,所有相较于gitHub使用起来更加方便一点。 3.gitLab 是一个用于仓库管…

【JS笔记】JavaScript语法 《基础+重点》 知识内容,快速上手(二)

数组 什么是数组? 字面理解就是 数字的组合 其实不太准确,准确的来说数组是一个 数据的集合 也就是我们把一些数据放在一个盒子里面,按照顺序排好 [1, 2, 3, hello, true, false]这个东西就是一个数组,存储着一些数据的集合 …

解决VNC连接Ubuntu服务器打开终端出现闪退情况

服务器环境 阿里云ECS服务器 操作系统:Ubuntu 20.0.4 如何使用VNC连接阿里云ECS服务器 1.阿里云官方指导:通过VNC搭建Ubuntu 18.04和20.04图形界面 2.新手入门ECS——ubuntu 20.04安装图形化界面和本地VNC连接 问题描述 使用VNC连接上新申请阿里云服…

《HelloGitHub》第 93 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C、Swift...让你在短时间内…

OfficeWeb365 Indexs 任意文件读取漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 /Pi…

广播信道的局域网

目录 一. 局域网的数据链路层二. 广播信道局域网三. 以太网标准四. CSMA/CD协议五. 以太网最短的帧六. 冲突解决方法-―退避算法 \quad 一. 局域网的数据链路层 \quad 局域网的特点 \quad 局域网的拓扑结构 \quad 局域网传输媒体 \quad \quad 媒体共享技术 \quad 二. 广播信道…