【08】SAP ABAP性能优化 - 正确使用簇表(Cluster Table)和池表(Pooled Table)

本文深入探讨了SAP系统中的簇表和池表,这两种特殊的数据库表类型在数据库层面上的真实物理存在及其存储方式。文章详细解释了簇表和池表的概念,包括它们在数据库层面的存储形式——“表簇”和“表池”。并通过具体实例,如簇表BSEG和池表A001,展示了在SE11中如何操作这些表型。同时,文章还提醒开发者在使用簇表和池表时的注意事项,如不支持INDEX和JOIN等数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SAP提供了三种类型的数据库表,透明表(Transparent Table),簇表(Cluster Table)和池表(Pooled Table)。其中,透明表是最常见的数据库表,其使用主要注意“Buffer”和“Index”两个方面。但对于簇表和池表,很多ABAPer并不熟悉其原理和用法。

在本篇博客中,将介绍如何在ABAP中使用簇表和池表。

1.概念解析

1.1 “簇表”和“表簇”

首先要强调的一个认知是,簇表和池表在数据库层是真实的物理存在,这也就是说簇表和池表是真实的数据库表。

在应用层SE11中定义和看到是簇表(Cluster Table)和池表(Pooled Table),在数据库层面存在的物理实体是“表簇(Table Cluser)”和“表池(Table Pool)”,也即簇表和池表并不是以独立表的形式存在的,而是以“表簇”和“表池”的存储形式存在。

下图展示了“表簇”在数据库层的存储方式。表簇是以簇表中定义的主键为Key值字段,然后通过特殊主键Pageno来确保数据的唯一性的。簇表中实际的字段内容是在Vardata字段中,通过压缩后的字符串的形式存储的。

簇表这种存储方式的优点是,簇表可以将相关的数据归集到一起,便于统一管理;并在存储过程中,通过压缩的形式存储,进行数据加密,同时节省数据空间。

但也带来了一些缺点,簇表不支持Index。当通过非主键字段访问簇表时,数据库的搜索效率是很低的。可以想象一下这个过程,数据的搜索对象是一个表簇(不仅仅是一张簇表,而是多个簇表的集合),面对的数据量是远大于真实的数据量的,通过在搜索之前,数据库还要经历解压的过程,然后在经过数据的处理和搜索。

因此,在面对簇表的数据时,首先尽可能要使用主键访问,如不能满足需求,使用簇表所对应的业务透明表进行操作。

1.2 “池表”和“表池”

与簇表的概念类似,池表和簇表的不同点在于,池表的主键包括Tabname和Varkey, 这样的话,不同的池表在表池中是以相对独立的方式存储的,但在数据的压缩程度上(压缩的数据存储在Vardata字段中),要小于簇表的效果。因此,池表面对的对象通常是数据量较小的系统表。

2. 举例

2.1 簇表BSEG和表簇RFBLG

在SE11中,可以看到这张非常著名的簇表BSEG,以及其对应的表簇RFBLG。

表簇RFBLG是众多簇表的大集合,包括BSEG,BSED, BSEC 等等。

当使用Open SQL操作簇表BSEG时,可以看到转化的Native SQL操作的对象是表簇RFBLG。

2.2 池表A001和表簇KAPOL

在SE11中,可以看到池表A001的定义,以及其对应的表池KAPOL。

表簇KAPOL是众多池表的大集合,包括A001,A004, A005 等等。与簇表类似,在Open SQL操作池表A001时,可以看到转化的Native SQL操作的对象是表池KAPOL。

3 使用备注

1. 簇表和池表不支持INDEX,JOIN, GROUP BY, ORDER BY 等类型的数据库操作( 这是由于数据的存储形式造成的 )。

2. 簇表和池表不支持DB View

3. 避免使用非主键字段检索簇表,否则对于程序性能将会造成很大的影响。应使用对应的透明表进行操作(例如:使用BSID、BSAD, BSIK、BSAK, BSIS、BSAS替代簇表BSEG )。

4. 在S/4版本上,BSEG和A001等簇表或池表已经变成的透明表,上述约束仅对ECC版本的程序。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年铸器

给作者赏杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值