1

在我的 HANA 数据库上,我对执行了许多 INSERT 语句的几个表执行了增量合并

我看到合并命令成功完成

另一方面,当我查询 M_CS_TABLES 表时,我看到 MEMORY_SIZE_IN_DELTA 大于零,并且与 MEMORY_SIZE_IN_MAIN 相比百分比很高。事实上,我期待看到 0 或更少的百分比。

您能帮我理解增量问题中的增量合并和内存大小吗?

我在 HANA 数据库的架构中创建了示例列表,并使用 INSERT 命令填充了数据。然后我执行了以下命令

MERGE DELTA OF "SALESORDERHEADER";

要查询列表的合并统计信息,

select * from M_CS_TABLES where schema_name = Current_schema;

尽管表的大小非常小,但我预计表的增量或行存储部分接近于零

此外,所有表的 RAW_RECORD_COUNT_IN_DELTA 都是 0,因为我理解这意味着在 delta 中没有等待合并的记录。

在此处输入图像描述

对于基于列的统计信息,我执行

select * from M_CS_ALL_COLUMNS
where schema_name = Current_schema and table_name = 'SALESORDERHEADER';

输出如下

在此处输入图像描述

4

1 回答 1

0

感谢您添加信息。

当您查看每列 ( M_CS_ALL_COLUMNS) 的增量存储的大小时,您会发现大多数值都非常接近 8K(8196 字节)。这并非偶然,而是增量存储结构的内部最小分配大小。

所以,是的,如果没有要合并的条目,列存储表的每一列仍然有一个 - 至少 8K 大小的 - 增量存储内存结构“挂在它上面”。

您关于此增量存储的相对大小的评论是有效的,但重要的是要认识到此表很小。就数据库表而言,480KB 几乎不算什么。

对于如此小的表,列存储结构的空间效率通常低于其他数据结构。这当然会改变,一旦您加载了您想要/需要列存储的数据量。然后是压缩、并行化、CPU 缓存友好性等,一直到用于空增量存储的额外内存。

无论如何,这里都很好,没什么可看的......继续前进:-D

于 2019-03-17T23:17:10.630 回答