版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Luomingkui1109/article/details/82762680
在大多数的工厂环境下,往往只会设计一个列族,以为列族数量过多会导致如下的性能问题:
1. Flush 会产生大量 IO
Flush 的最小单元是 region,也就是说一个 region 中的某个列族做 Flush 操作,其他的 列族也会 Flush,对每个列族而言,每次 Flush 都会产生一个文件,频繁 Flush 必然会产生更 多的 StoreFile,StoreFile 数量增多又会产生更多的 Compact 操作,Flush 和 Compact 都是很 重的 IO 操作。
2. Split 操作可能会导致数据访问性能低下
Split 的最小单元是 region, 如果这个 region 有两个列族 A、B,列族 A 有 100 亿条记录,列族 B 有 100 条记录,如果最终 Split 成 20 个 region, 那么列族 B 的 100 条记录会分 布到 20 个 region 上, 扫描列族 B 的性能低下。
因此,在设计列族时,过多的列族会导致很多性能问题,列族设计最重要的一点就是减 少列族数量。