我们都知道,在Hbase官网有这么一句话:“A typical schema has between 1 and 3 column families per table. HBase tables should not be designed to mimic RDBMS tables.”,中文意识大概是:一个典型的模式每个表有1到3个列族。HBase表不应设计为模拟RDBMS表。

Hbase中当某个Region的数据达到一定阈值后,会对其进行split(分裂)操作,Split是针对整个Region的。不同的列簇存储在不同文件中,但是不同的列簇可能会共享一个Region。由于不同的列簇共享Region,所以可能会出现一个列簇已经有1000万行,而另一个才100行,当一个Region进行split的时候,会导致100行的列同样会分布到多个Region中,当查询的时候系统效率会受到影响。某个column family在flush的时候,它临近的列簇也会因关联效应被触发flush,最终导致系统产生更多的I/O。所以一般不建议设置多个列簇。
结论:因此hbase表中的列簇的数量不应过多,最好是3个以下最优(经常查询的放一个列簇)
————————————————
版权声明:本文为CSDN博主「不想秃头的SQL Boy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38879682/article/details/89181240