当前位置: 首页 > news >正文

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

相关文章:

SAP缓存 表缓存( Table Buffering)

本文主要介绍SAP中的表缓存在查询数据,更新数据时的工作情况以及对应概念。 SAP表缓存的工作 查询数据 更新数据 删除数据 表缓存的概念 表缓存技术设置属性 不允许缓冲: 允许缓冲,但已关闭: 缓冲已激活: 已…...

Mybatis插件入门

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...

DOA估计算法——迭代自适应算法(IAA)

1 简介 迭代自适应法 (Iterative Adaptive Approach,IAA)估计算法最早由美国的电气工程师和数学家Robert Schmidt和Roy A. Kuc在1986年的一篇论文"Multiple Emitter Location and Signal Parameter Estimation"中首次提出了这一算法, IAA DOA …...

Python If语句以及代码块的基本介绍

if语句 在编程中if语句是一种根据条件执行不同代码块的控制结构,他根据条件的真假来分支程序的执行路径,所以我们可以通过if语句根据不同情况而执行不同的程序 格式 if [条件(bool值或者计算结果为bool类型的算式)] : a11if a>10:print("a大于10") # --> a大…...

[嵌入式专栏](FOC - SVPWM扇区计算Part1)

文章目录 1 . 概要2 . 扇区计算2.1 扇区Ⅰ计算2.2 扇区Ⅱ计算2.3 扇区Ⅲ计算 3 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 概要 经过扇区判断后,就知道在哪个扇区进行输出了 【Q】但是每个扇区分别输出怎样的结…...

亚马逊美国站ASTM F2613儿童折叠椅和凳子强制性安全标准

ASTM F2613折叠椅和凳子安全标准 美国消费品安全委员会(CPSC)发布的ASTM F2613儿童折叠椅和凳子的强制性安全标准,已于2020年7月6日生效,并被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》。 亚马逊要求在美国站上架的儿…...

【机组期末速成】指令系统|机器指令概述|操作数类型与操作类型|寻址方式|指令格式

🎥 个人主页:深鱼~🔥收录专栏:计算机组成原理🌄欢迎 👍点赞✍评论⭐收藏 目录 前言: 一、本章考点总览 二、考点分析 1、以下有关指令系统的说法中错误的是( )。 2…...

java美容管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web美容管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...

Redis哨兵

1.哨兵介绍 1.1.为何需要哨兵? 为了解决master节点宕机问题,选举salve节点为新的master节点。 1.2.哨兵的作用 1.3.服务状态监控 1.4.选举新的master 1.5.如何实现故障转移 2.搭建哨兵集群 2.1.集群结构 这里我们搭建一个三节点形成的Sentinel集群&…...

面试算法78:合并排序链表

题目 输入k个排序的链表,请将它们合并成一个排序的链表。 分析:利用最小堆选取值最小的节点 用k个指针分别指向这k个链表的头节点,每次从这k个节点中选取值最小的节点。然后将指向值最小的节点的指针向后移动一步,再比较k个指…...

鸿鹄电子招投标系统:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台源码与立项流程

在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…...

node.js对应npm安装和使用

介绍 node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境,安装node后自带npm。NPM :Node Package ManagerNPM是Node.js标准的软件包管理器 。2010年底,Node.js 的包管理器 npm 诞生,是全球最大的开源库生态系统。 node 20…...

(self-supervised learning)Event Camera Data Pre-training

Publisher: ICCV 2023 MOTIVATION OF READING: 自监督学习、稀疏事件 NILM link: https://arxiv.org/pdf/2301.01928.pdf Code: GitHub - Yan98/Event-Camera-Data-Pre-training 1. Overview Contributions are summarized as follows: 1. A self-supervised framework f…...

关于个人Git学习记录及相关

前言 可以看一下猴子都能懂的git入门,图文并茂不枯燥 猴子都能懂的git入门 学习东西还是建议尽可能的去看官方文档 权威且详细 官方文档 强烈建议看一下GitHub漫游指南及开源指北,可以对开源深入了解一下,打开新世界的大门! …...

【eclipse】eclipse开发springboot项目使用入门

下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 安装eclipse 其他一步一步即可 我们是开发java web选择如下 界面修改 Window->Preferences-> 修改eclipse风格主题 Window->Preferences->General->Appearance 修改字体和大小…...

Android 13 默认关闭 快速打开相机

介绍 在设置菜单的手势界面里,快速打开相机是默认开启的,此功能当开启时连续点击两次电源键会打开相机,现在客户需要默认关闭。 效果展示 修改 这里一开始想到的就是配置文件,在路径下果然找到了,从注释中看使我们需要的&#x…...

pytest pytest-html优化样式

conftest.py import pytest from pytest_metadata.plugin import metadata_keydef pytest_html_report_title(report):report.title"接口测试报告"def pytest_configure(config):# 获取命令行参数中的测试环境、测试版本、开始时间、测试人员config.stash[metadata_…...

Visual Studio 配置DLL

我们在用Visual Studio进行开发时,如果没有正确配置DLL,就会出现类似“丢失***.dll”的错误。DLL配置有哪些方法? 1、手动复制 将dll文件拷贝到生成的.exe所在的文件夹里 2、配置环境 在右键属性->配置属性->调试->环境&#xf…...

C/C++转WebAssembly及微信小程序调用

上一篇文章讲了C/C如何转WebAssembly,并测试了在Web端调用。本篇内容和上篇一样,介绍C/C包转的.wasm包如何在小程序中调用。 说明 本篇是在上一篇步骤1-4的基础上,再做修改,供微信小程序端调用的方法和步骤。 本篇操作手册可以…...

【WPF.NET开发】弱事件模式

本文内容 先决条件为什么要实现弱事件模式?应该由谁实现弱事件模式?如何实现弱事件模式 在应用程序中,附加到事件源的处理程序可能不会与将处理程序附加到源的侦听器对象一同销毁。 这种情况下会导致内存泄漏。 Windows Presentation Found…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...