SAP HANA中的CREATE TABLE和CREATE COLUMN TABLE有什么区别

问题描述 投票:-1回答:1

几乎如标题所述:CREATE TABLECREATE COLUMN TABLE有什么区别?

两个似乎都创建了一个表,有什么区别?

sap hana
1个回答
0
投票

SAP HANA支持将数据存储在列存储行存储中的表。

这些指的是数据库(HANA)如何管理表中存储的数据的不同方式。它们影响如何在SQL语句中使用数据。

从技术上讲,HANA中CREATE TABLE的语法已扩展为包括一种选择应创建两种表类型中的一种的方法:

CREATE [COLUMN|ROW] TABLE <table_name> ...

这意味着可以(可能应该)在任何CREATE TABLE命令中包括所需的表类型,但也可以选择不这样做(即,保持与标准SQL的兼容性)。

默认设置

现在,当not指定表类型时将获得哪种表类型取决于indexserver.ini配置文件中的HANA参数。如果参数[sql] - [default_table_type]设置为row,则不指定表类型将得到存储在行存储中的表。如果我没有记错的话,这也是参数直到HANA 2 SPS 03为止的默认值。

使用HANA 2 SPS 04,参数的默认值最终更改为column

您应该使用什么

这很重要:在SAP HANA中,几乎在所有情况下,您想要表类型为COLUMN

行存储表具​​有非常不同的性能和内存需求特征,实际上仅用于非常特定数据访问和修改模式。这些模式例如:

    通过选择完整的主键,进行
  • always全行访问。
  • UPDATE s在记录上的频率很高(想想每秒更新同一条记录数千次)。
  • 绝对需要始终在内存中的每/大多数列中具有几乎不同记录的记录。
所有用例和数据类型中的

对于绝大多数 CREATE COLUMN TABLE是SAP HANA中的选择。列存储表支持压缩,分区,内存移位以及行存储表不可用的许多其他技术。

它对程序的影响

然而,两种表类型的外观和感觉都与任何SQL命令相同。打个比方,其他DBMS支持“ cluster”或“ heap”等不同的表类型,这会影响数据在内部存储的方式,而无论使用哪种类型,都可以使用这些表。列存储或行存储的HANA设置与内部存储类似。

[所有(还有更多)当然都记录在案(例如here),并在许多不同的地方进行了解释(例如我的书SAP HANA Administration)。

什么列和行存储无关

请注意,在列存储还是行存储之间进行选择与该表是temporary还是permanent表无关。两种表类型都可以像预期那样永久保留数据。

[当然,人们总是可以使用CREATE TEMPORARY TABLE,它也提供了一系列的选择... CREATE TEMPORARY { ROW | COLUMN } TABLE | LOCAL TEMPORARY { ROW | COLUMN } TABLE,但是对于这个答案,我们假装我们没有想到要保存我们的理智。

带走

了解HANA具有内存表的这两种根本不同的实现非常重要。确保您不会意外地(通过使用默认值)为海量数据分析或真正为大多数用例创建行存储表。每当您不确定表类型时,请从column存储表开始,看看是否适用于您的用例。如果您确实有一个用例,行存储是更好的选择,则可以(几乎)始终通过ALTER TABLE命令将表从一种存储类型转换为另一种存储类型。

© www.soinside.com 2019 - 2024. All rights reserved.