sharding (五) Hint 表达式分片策略

Hint分片指的是对于分片字段非SQL决定,而由其他外置条件决定的场景,可使用SQL Hint灵活的注入分片字段。举个实例的例子,我们都知道mysql insert values相对于循环插入来说,性能差距基本上可以说是网络延时的倍数,比如说插入1000条记录,网络来回1ms,1000条就得1m,如果是跨网段的,延时就更长了。而sharding-jdbc和Mycat都不支持多values(sharding-jdbc 3.x支持,但还没有正式发布),有些SQL语句比较复杂比如说有(a = var or b = var) and member_id = N,这个时候druid sqlparser并不支持的时候,虽然可以通过多数据源解决,但是我们不希望架构搞得太复杂,这种情况下,可以通过sharding-jdbc的Hint分片策略来实现各种sharding-jdbc不支持的语法的限制。因为Hint分片策略是绕过SQL解析的,所以对于这些比较复杂的需要分片的非DSS查询,采用Hint分片策略性能可能会更好。同样,我们还是使用mybatis作为数据库访问层作为例子,对于Hint分片策略,帖子大都是基于1.x版本进行源码分析路由,顺带提及,基本上都是瞎扯,同时在用法上sharding-jdbc-example没有提及。因为我们实际要用,所以笔者基于2.0.3版本进行了完整的测试确保结果符合我们的预期。

你可能感兴趣的:(sharding (五) Hint 表达式分片策略)