使用nhmicro使分库分表支持排序后的分页查询
常见的在创建数据时根据规则分库分表保存,查询时往往只支持按照id进行查询。
Nhmicro(开源地址为 https://github.com/jeffreyning/nh-micro )支持将分库分表中的数据进行分页查询,同时支持排序,支持连续性的向前向后翻页。
原理是根据不同的库分别进行(可带有排序)分页查询,Nhmicro将各个库返回结果合并后,内存中进行二次排序,再次分页后返回给客户端。
这样做可以将查询压力分散到多个读库中,且每个读库可以起不同线程并发查询,提高了查询速度,降低了热点。
分库分表合并查询接口:
/NhEsbServiceServlet?cmdName=Groovy&subName=MicroMergeQueryTemplate&groovySubName=getInfoList4Page
参数标识 |
参数名称 |
样例值 |
说明 |
originSql |
原始查询sql |
select * from <REP_VIEW_NAME> order by col1 desc |
<REP_VIEW_NAME>执行时被替换为分表名称 |
memOrderStr |
内存排序str |
col1 desc |
应该与原始sql中的一致 |
dbNameList |
分库标识 |
default |
配置的microDao实例标识,多个库用逗号分隔。 |
viewNameList |
分表标识 |
test_merge_1,test_merge_2 |
每个库中可以有1个或多个分表,但要求每个库中的分表个数一致。 |
Test_merge_1中数据
Test_merge_2中的数据
合并查询后分页结果:
向后翻页