sharding-jdbc配置maxConnectionsSizePerQuery
作用
设置每个查询最大获取的连接数,同时影响结果归并方式
最大连接数
简单来说就是当存在分表,且查询语句不包含分表键时,每个查询都需要分解成不同的分表sql查询数据库,能够同时执行的sql数量由此参数设置;
举个例子,假如maxConnectionsSizePerQuery = 128,分表有1024个
则在一般情况下(连接池资源充足):一个查询sql(不包含分表键)将拆分成1024个,但是maxConnectionsSizePerQuery = 128 < 1024,于是这个查询就被分成8批,一批同时执行128条sql(连接);
归并方式
详细的归并方式:https://zhuanlan.zhihu.com/p/44987856
总结来说,就是分表的结果需要组合之后,进行排序、分组、分页等操作,此时就需要先把分表查询结果合并(归并);
- 当maxConnectionsSizePerQuery < 分表数量时,将采用内存归并,对于服务的压力相对较大
- 反过来,则会采取流式归并,这种归并方式较为贴近sql处理,资源耗费也较少
遇到的坑
项目使用dr