Impala数据类型

时间:2015-04-02 19:47:16

标签: sql impala

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

  1. 字符串
  2. 字符
  3. 的Varchar
  4. 在阅读架构时需要3种不同的类型。我想知道在我们知道列长度上限的情况下,使用Char / Varchars而不是字符串有什么性能优势吗?

1 个答案:

答案 0 :(得分:4)

STRING存储可变长度数据,并且(基本上 - 除了一些实际限制,当然)无限制。

VARCHAR(x)存储可变长度数据,其上限为x个字符,因此数据将被截断为定义的长度。例如,如果您有VARCHAR(10),则输入数据的大小可以为[0,10]。

CHAR(x)是x字符固定大小的数据类型。如果数据短于x,则填充数据。如果数据长于x,则会截断数据。

Impala 2.0.0(CDH 5.2.0)中引入了VARCHARCHAR,它们主要用于与其他数据库系统的兼容性。但是,除了一些特殊用例(使用特定的遗留系统)之外,不建议使用VARCHARCHAR,因为它们都有一些功能限制。

虽然STRINGVARCHAR之间应该有类似的效果,但CHAR有一些不同的特征:特别是它不是代码生成器,所以通常性能会受到影响。但是,小CHAR s(其中x < 128)在执行期间与元组一起存储,而不是作为可变长度数据存储在辅助存储器中。

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

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