水平分表的方式对大数据量表的优化是有一定作用的。但是从分布式的角度来讲感觉并没有削减当前库的压力,所以水平分表适合对大数据量表做优化。
水平分表基于表结构一直,根据某些字段划分不同数据存在不同的表中,提高数据查询的效率。例如一张庞大的订单信息表,可以根据订单类型或者日期划分为多个表,Mybatis中使用动态表名拦截器的方式动态指定目标表名称进行查询。
下面的示例,对替换目标CAP_DOCUMENT_CATALOG表明自定义逻辑动态决定最终查询的表名进行替换后查询目标表数据
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
List<ISqlParser> sqlParserList =new ArrayList<>();
DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2) {
{
put("CAP_DOCUMENT_CATALOG", (metaObject, sql, tableName) -> {
// metaObject 可以获取传入参数,这里实现你自己的动态规则
System.out.p