Skip to content

Commit 6697617

Browse files
committed
optimize SimpleShardRouter when route rule is null
1 parent 8f592a6 commit 6697617

File tree

5 files changed

+25
-13
lines changed

5 files changed

+25
-13
lines changed

ddal-ddr/src/main/java/org/hellojavaer/ddal/ddr/datasource/manager/rw/DefaultReadWriteDataSourceManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public class DefaultReadWriteDataSourceManager implements ReadWriteDataSourceMan
7676
private boolean initialized = false;
7777

7878
// cache
79-
private Map<String, Set<String>> physicalTables = null;
79+
private volatile Map<String, Set<String>> physicalTables = null;
8080

8181
private DefaultReadWriteDataSourceManager() {
8282
this.metaDataChecker = new DefaultMetaDataChecker("mysql");
@@ -569,6 +569,9 @@ private void check(Connection conn, String scName) {
569569
Set<String> tbNames = physicalTables.get(scName);
570570
if (tbNames != null && !tbNames.isEmpty()) {
571571
metaDataChecker.check(conn, scName, tbNames);
572+
if (stdLogger.isInfoEnabled()) {
573+
stdLogger.info("MetaDataCheck - sc:{}, tb:{} meta data checking is passed", scName, tbNames);
574+
}
572575
}
573576
}
574577
}

ddal-ddr/src/main/java/org/hellojavaer/ddal/ddr/shard/simple/SimpleShardRouter.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,24 @@ public void setRouteRuleBindings(List<SimpleShardRouteRuleBinding> bindings) {
8686
putToCache(cache, sb.toString(), b0, true);
8787
putToCache(cache, tbName, b0, false);
8888

89+
// 构建 逻辑sc+逻辑tb下包含的所有物理表信息
8990
final Set<ShardRouteInfo> routeInfos = new LinkedHashSet<>();
90-
if (sdValues != null) {
91-
new RangeExpressionParser(sdValues).visit(new RangeExpressionItemVisitor() {
92-
93-
@Override
94-
public void visit(Object val) {
95-
ShardRouteInfo routeInfo = getRouteInfo(b0, scName, tbName, val);
96-
routeInfos.add(routeInfo);
97-
}
98-
});
91+
if (binding.getRule() == null) {// 如果路由规则为空,则使用原表名
92+
ShardRouteInfo routeInfo = new ShardRouteInfo();
93+
routeInfo.setScName(scName);
94+
routeInfo.setTbName(tbName);
95+
routeInfos.add(routeInfo);
96+
} else {
97+
if (sdValues != null) {
98+
new RangeExpressionParser(sdValues).visit(new RangeExpressionItemVisitor() {
99+
100+
@Override
101+
public void visit(Object val) {
102+
ShardRouteInfo routeInfo = getRouteInfo(b0, scName, tbName, val);
103+
routeInfos.add(routeInfo);
104+
}
105+
});
106+
}
99107
}
100108
String key = buildQueryKey(scName, tbName);
101109
if (routeInfoMap.containsKey(key)) {

ddal-example/ddal-example-example0/src/main/resources/datasource.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<list>
3232
<bean class="org.hellojavaer.ddal.ddr.shard.simple.SimpleShardRouteRuleBinding">
3333
<property name="scName" value="base"></property>
34-
<property name="tbName" value="user"></property>
34+
<!--<property name="tbName" value="user"></property>-->
3535
<property name="rule" ref="idRule"></property>
3636
<property name="sdKey" value="id"></property>
3737
<property name="sdValues" value="[0..7]"></property>

ddal-example/ddal-example-example0/src/main/resources/log4j.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<logger name="org.hellojavaer.ddr.ds" additivity="false">
1717
<!-- if the value of 'value' is 'trace', target datasource will be printed out -->
18-
<priority value="error"/>
18+
<priority value="info"/>
1919
<appender-ref ref="console"/>
2020
</logger>
2121

ddal-example/ddal-example-example1/src/main/resources/datasource.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<list>
2828
<bean class="org.hellojavaer.ddal.ddr.shard.simple.SimpleShardRouteRuleBinding">
2929
<property name="scName" value="acl"></property>
30-
<property name="tbName" value="role"></property>
30+
<!--<property name="tbName" value="role"></property>-->
3131
</bean>
3232
</list>
3333
</property>
@@ -45,6 +45,7 @@
4545
</bean>
4646
<bean id="dataSourceManager"
4747
class="org.hellojavaer.ddal.ddr.datasource.manager.rw.DefaultReadWriteDataSourceManager">
48+
<property name="shardRouter" ref="shardRouter"/>
4849
<property name="readOnlyDataSourceMonitorServer">
4950
<bean class="org.hellojavaer.ddal.ddr.datasource.manager.rw.monitor.mbean.MBeanReadOnlyDataSourceMonitorServer"></bean>
5051
</property>

0 commit comments

Comments
 (0)