我们在配置Phoenix二级索引的时候,除了一些必要的配置之外,还会根据我们的实际情况去配置一下涉及到性能上的配置,也就是我们常称为的性能调优。笔者在千万级别数据这恰好需要用到,因此为此做了一个简单的配置的说明。
index.builder.threads.max
- 用于从主表更新构建索引更新的线程数
- 增加此值可克服从底层HRegion读取当前行状态的瓶颈;
- 值增加后无法处理太多的并发扫描请求以及线程交换问题;
- 默认值为:10
1 | <property> |
index.builder.threads.keepalivetime
- 在使构建器线程池中的线程到期后的时间(以秒为单位)。
- 在这段时间之后,未使用的线程会立即释放,并且不会保留核心线程(尽管最后一个是一个小问题,因为期望表能够维持相当恒定的写入负载),但是同时如果我们看不到线程,则会允许我们删除线程预期负荷。
- 默认值:60
1 | <property> |
index.writer.threads.max
- 写入目标索引表时使用的线程数。
- 基于表的并行化的第一级-它应大致对应于索引表的数量
- 默认值:10
1 | <property> |
index.writer.threads.keepalivetime
- 使写程序线程池中的线程到期后的时间(以秒为单位)。
- 在这段时间之后,未使用的线程会立即释放,并且不会保留核心线程(尽管最后一个是一个小问题,因为期望表能够维持相当恒定的写入负载),但是同时如果我们看不到线程,则会允许我们删除线程预期负荷。
- 默认值:60
1 | <property> |
hbase.htable.threads.max
- 每个索引HTable可以用于写入的线程数。
- 增加它可以进行更多的并发索引更新(例如跨批次),从而提高总体吞吐量。
- 默认值:2,147,483,647
1 | <property> |
hbase.htable.threads.keepalivetime
- HTable的线程池中的线程到期后的时间(以秒为单位)。
- 使用“直接切换”方法,仅在必要时才创建新线程,并且新线程将无限增长。这可能很糟糕,但是HTables只能创建与区域服务器一样多的Runnable。因此,当添加新的区域服务器时,它也可以扩展。
- 默认值:60
1 | <property> |
index.tablefactory.cache.size
- 我们应该在缓存中保留的索引HTable的数量。
- 增加此数字可确保我们无需为每次写入索引表的尝试重新创建HTable。相反,如果此值设置得太高,您可能会看到内存压力。
- 默认值:10
1 | <property> |