Impala 数据类型
Impala Data types
我正在尝试了解 Impala
中以下数据类型之间的区别
- 字符串
- 字符
- 可变字符
读取模式时需要 3 种不同的类型。我想知道在我们知道列长度上限的情况下,使用 Char/Varchars 而不是字符串是否有任何性能优势?
STRING
存储可变长度数据并且(本质上——当然,除了一些实际限制外)是无限的。
VARCHAR(x)
存储可变长度数据,上限为 x 个字符,因此数据将被截断为定义的长度。例如,如果您有 VARCHAR(10)
,您的输入数据的大小可以在 [0,10].
CHAR(x)
是 x 字符固定大小数据类型。如果数据比 x 短,则填充数据。如果数据比 x 长,数据将被截断。
VARCHAR
和 CHAR
都是在 Impala 2.0.0 (CDH 5.2.0) 中引入的,主要用于与其他数据库系统的兼容性。但是,不推荐使用 VARCHAR
和 CHAR
,除非某些特殊用例(具有特定遗留系统),因为它们都有一些功能限制。
虽然 STRING
和 VARCHAR
之间应该有相似的性能,但 CHAR
有一些不同的特征:值得注意的是它不是代码生成的,因此通常性能会受到影响。但是,小 CHAR
s(其中 x < 128
)在执行期间与元组一起存储,而不是像可变长度数据那样存储在辅助存储器中。
以上提供了这些类型之间的一些差异,但建议尽可能使用 STRING
。
我正在尝试了解 Impala
中以下数据类型之间的区别- 字符串
- 字符
- 可变字符
读取模式时需要 3 种不同的类型。我想知道在我们知道列长度上限的情况下,使用 Char/Varchars 而不是字符串是否有任何性能优势?
STRING
存储可变长度数据并且(本质上——当然,除了一些实际限制外)是无限的。
VARCHAR(x)
存储可变长度数据,上限为 x 个字符,因此数据将被截断为定义的长度。例如,如果您有 VARCHAR(10)
,您的输入数据的大小可以在 [0,10].
CHAR(x)
是 x 字符固定大小数据类型。如果数据比 x 短,则填充数据。如果数据比 x 长,数据将被截断。
VARCHAR
和 CHAR
都是在 Impala 2.0.0 (CDH 5.2.0) 中引入的,主要用于与其他数据库系统的兼容性。但是,不推荐使用 VARCHAR
和 CHAR
,除非某些特殊用例(具有特定遗留系统),因为它们都有一些功能限制。
虽然 STRING
和 VARCHAR
之间应该有相似的性能,但 CHAR
有一些不同的特征:值得注意的是它不是代码生成的,因此通常性能会受到影响。但是,小 CHAR
s(其中 x < 128
)在执行期间与元组一起存储,而不是像可变长度数据那样存储在辅助存储器中。
以上提供了这些类型之间的一些差异,但建议尽可能使用 STRING
。