Impala 数据类型

use*_*133 0 sql impala

我试图理解 Impala 中以下数据类型之间的区别

  1. 细绳
  2. 查尔
  3. 瓦尔查尔

作为读取模式,需要 3 种不同类型。我想知道在我们知道列长度上限的情况下使用 Char/Varchar 是否比字符串有任何性能优势?

Mat*_*att 5

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具有一些不同的特征:值得注意的是它不是代码生成的,因此通常性能会受到影响。然而,小CHARs (其中x < 128)在执行期间与元组一起存储,而不是像可变长度数据那样存储在辅助存储器中。

上面提供了这些类型之间的一些差异,但建议尽可能使用STRING

有关更多详细信息,请参阅STRINGVARCHARCHAR文档。