hint自定义分库策略不生效

使用环境:mysql-5.7,sharding-proxy 5.1.2,

场景、问题:使用shardingsphere-sharding-api包作为依赖,实现HintShardingAlgorithm接口,打成jar包放在sharding proxy的ext-lib目录下,客户端使用hintMnagaer设置分片值,执行sql无法分库。

依赖包 :

image

sharding config :

自定义hint分库实现:

测试代码:

image

现状:使用sql hint透传是正常路由的,使用hintManager无法正常路由

HintManager 控制的是本地线程,用于 ShardingSphere-JDBC。
Proxy 请使用 DistSQL 设置 hint value。

感谢回复,在应用端,每次都要先执行set sharding hint database_value= db,再执行业务sql是否会有原子性 或 线程安全的问题?

根据设计规则,不同的连接在 Proxy 中使用的是不同的线程,Thread Local 互不干扰。
但若你的应用中同时复用某一连接进行多线程访问,可能导致 hint 值安全问题。(这个场景需要在应用侧处理,Proxy 无法保证)

京ICP备2021015875号