Abap 字典表列中的字符串类型
我有一个SE11表,其中有一列类型为Abap 字典表列中的字符串类型,abap,hana,sap-data-dictionary,Abap,Hana,Sap Data Dictionary,我有一个SE11表,其中有一列类型为STRING,我想知道它是如何存储在底层数据库系统(本例中为SAP Hana)上的 我了解到,实际上只有对LOB的引用保存在一个列中,该列键入为STRING,而字符串本身保存在表外。这是真的吗?在Hana上也一样吗?我试图RTFM,但我找不到那个信息 如果可能,通常建议使用具有特定长度的CHAR 免责声明。尽管我为SAP SE工作,但我与SAP HANA的团队或代码没有关系。以下信息是通过SAP HANA 2 SP02(2.00.024.00.15198060
STRING
,我想知道它是如何存储在底层数据库系统(本例中为SAP Hana)上的
我了解到,实际上只有对LOB的引用保存在一个列中,该列键入为STRING
,而字符串本身保存在表外。这是真的吗?在Hana上也一样吗?我试图RTFM,但我找不到那个信息
如果可能,通常建议使用具有特定长度的CHAR
免责声明。尽管我为SAP SE工作,但我与SAP HANA的团队或代码没有关系。以下信息是通过SAP HANA 2 SP02(2.00.024.00.1519806017)中的反复试验收集的。它既不可靠,也不具有法律约束力,将来可能会在不另行通知的情况下进行更改
好了,现在让我们来看一些事情:
- SAP HANA有一个列存储(=新奇的事物)和一个行存储(=从其他关系数据库中得知)。这两个是非常不同的。因此,在优化结构时,您应该了解要处理的存储
- ABAP DDIC将透明表中的
列转换为STRING
列,并将NCLOB
转换为CHAR
NVARCHAR
- ABAP DDIC对于字符串非常特殊:它们不能用作键,因为它们超过了255个字符的最大键长度。它们还防止应用服务器缓冲表,从而增加重复查询的响应时间。这本身通常就是避免使用
而改用STRING
的原因。总之,可以说在透明表中添加多个CHAR
列是没有意义的STRING
- SAP HANA确实将LOB存储在表的外部,而表只保存一个引用。内容的处理方式与文件类似。他们的
可以从中收集。相关信息为您提供了有关已占用空间的更多详细信息容器ID
- 最近的一项研究揭示了另一个有趣的事实:“因为SAP HANA不会压缩LOB列,无论它是驻留在磁盘中还是内存中[…]”。这意味着该列将消耗与您放入的内容相同的磁盘空间。这与SAP HANA的其他列store content(存储内容)有很大不同,后者需要大量压缩以优化存储和访问。由此得出的结论还值得注意:“[…]在从数据库写入/读取时,在应用层应用任何可能的压缩算法逻辑(如gzip)是至关重要的”
- 一般来说——我所知道的所有数据库管理系统都是如此——最好选择可变字符类型,因为它们可以让系统自由地优化实际保留的空间。因此,SAP HANA的合理默认值应该是
(=Unicode-capable)”NVARCHAR