创建一个网页要钱吗贵州seo

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

创建一个网页要钱吗,贵州seo,湛江大型网站模板建设,汽车维修东莞网站建设本文主要介绍SAP中的表缓存在查询数据#xff0c;更新数据时的工作情况以及对应概念。 SAP表缓存的工作 查询数据 更新数据 删除数据 表缓存的概念 表缓存技术设置属性 不允许缓冲#xff1a; 允许缓冲#xff0c;但已关闭#xff1a; 缓冲已激活#xff1a; 已…本文主要介绍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 UPDATEDISTINCTUNION聚合表达式JOIN连接GROUP BYORDER 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。仅仅依靠上面添加的隐含行为是不够的。