SAP 关于ABAP TABLE BUFFER的解释

来源:互联网 发布:ps制作淘宝模板 编辑:程序博客网 时间:2024/05/16 16:09

Index可以被看成是表记录的特殊几个字段的copy。这个copy是排序的,这样可以提高查询表的性能。Index中含有指针用于指向其在表中所在的位置。

使用index时的注意事项:

l         要利用Index提升性能,索引字段必须位于where子句的最前面。

l         只用那些可以明显的减少记录数量的字段才适合作为索引。

l         当修改表中的记录时,索引的顺序就会被改变,所以对于频繁修改的表不适合建索引。

l         一个表中不同的索引的耦合要尽量松散

当要去表中的记录时database optimizer会决定应当使用那个index。用户可以创建自己的index但是必须以Y或Z开始。在创建索引是你可以选择在那些类型的数据库中创建索引。

Table buffer可以大大提高访问表的性能。随着数据的增加对缓存的空间要求越来越多较长时间没有被访问到得数据就会被置换掉。只有当缓存剩余的空间小于阀值或访问性能没有达到要求时缓存中的数据才会被置换掉。可以再command field中敲入/$TAB来清空所在application server上的缓存。/$SYNC可以清空所在application server上的所有缓存。

SAP系统在每个application server上管理和同步缓存。当程序读取表的数据时database interface首先到application server得缓存中去查看是否有符合条件的数据如果有就直接从换从中读取,如果没有就到数据库中去读取,然后把读取到的数据放到缓存中。

按照往换从放数据方式的不同可以分成三种缓冲类型:

l         Full buffer:当表中的一条记录被访问时,所有的记录都会被放到缓存中

l         Genric buffer:访问到得记录的key的左连接(left join)被缓存。

l         Single-record buffer:只有被访问到得记录被缓存。

Fully buffer:比较小的表,很少被修改适合fully buffer。对于那种场景是表中的记录不存在的查询经常被使用的表也适合做fully buffer。另外对于fully buffer由于buffer中的记录是按照key排序的所以查询条件要充分利用索引,否则的话很有可能性能还没有直接从数据库中访问利用secondary index好。

Single-record buffer适合于select single语句对于select single找不到记录的情况,buffer中也会记录这种情况下找不到,下次使用这个语句时就不会再读取数据库了。

由于buffer是在服务器本地管理的,buffer中的数据必须与数据库同步。同步的动作在一定周期内发生,这个周期是有参数rdisp/bufreftime设置的。

Buffer在application server本地保存的有点时减少了网络流量,缺点是在buffer中可能存在脏数据。所以使用buffer时应当注意这几点。

1 0