!注意:
1.一切都是瓶颈的时候(内存、CPU、IO),所有手段都作用不大;
2、没有绝对的有效手段,必须针对场景具体分析;
3、大多数情况下,都是磁盘IO存在问题(CPU和内存其实问题都不大,除非配置太差)。
优化分类:
一、表设计
1.适当增加列族个数,一起读写的列放在一个列族
原理:
family多,获取单个cell数据时就不会去扫描同一个rowkey的所有数据(按列族存储),明显降低IO。
适用场景:
1)读多写少(多family反而增加写的开销,甚至带来过多的split)
2)经常是某些字段一起读(有规律的)
3)内存较为充裕,每个region的每个family对应一个store,每个store对应一个memstore
注意:
1)family不要超过三个
2)如果读少写多,反而整体上增加了IO
3)一般建议单列族,除非IO确实成为瓶颈
2.预建分区
原理:
可以分散IO压力,同时各节点存储也是均匀的,