lealone / Lealone

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库
Other
2.47k stars 518 forks source link

能否用多线程实现region的操作 #46

Closed freemanhjr closed 11 years ago

freemanhjr commented 11 years ago

我测试发现,lealone的性能与region的数量和大小关系很大。 region数量多且region不是很大时,效果会好;反之则不然;

能否实现在针对一个region中用多线程来实现查询;比如某个region的大小超过某个值就开启多个线程; 或者给用户留一个配置每个region用多个线程的参数的地方;这样用户可以根据场景来调优!

codefollower commented 11 years ago

有三个参数可以调: lealon.command.parallel.core.pool.size lealon.command.parallel.max.pool.size lealon.command.parallel.keep.alive.time 其实就是java.util.concurrent.ThreadPoolExecutor的几个参数

codefollower commented 11 years ago

region大小这个是hbase的问题,还是要看region的数据是否全在blockcache中,如果小的话,显然能够全在blockcache中

freemanhjr commented 11 years ago

你提到的pool是在多region时用的吧,我希望在一个region中也能用多线程?

codefollower commented 11 years ago

这个第一是没有必要,如果仅仅是查询,通常是需要什么才scan什么,是一个串行操作, 第二,如果是做统计,在一个region中要多线程,实际上需要按rowKey切分成几段才能做,怎么切分rowKey,粒度是什么,应用更熟悉,我们之前的实践经验也是在client端做的,比如把24小时按两小时分段统计。