Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
06135c64
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
06135c64
编写于
1月 15, 2020
作者:
echo艾布企鹅
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Using multithreading make loadDefaultTables faster and remove repeat
load tableMetaData
上级
96e4315e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
33 addition
and
5 deletion
+33
-5
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/sharding/execute/metadata/loader/ShardingTableMetaDataLoader.java
.../execute/metadata/loader/ShardingTableMetaDataLoader.java
+33
-5
未找到文件。
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/sharding/execute/metadata/loader/ShardingTableMetaDataLoader.java
浏览文件 @
06135c64
...
...
@@ -44,6 +44,7 @@ import java.util.Collection;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.LinkedHashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -194,7 +195,7 @@ public final class ShardingTableMetaDataLoader implements TableMetaDataLoader<Sh
public
TableMetas
loadAll
(
final
ShardingRule
shardingRule
)
throws
SQLException
{
Map
<
String
,
TableMetaData
>
result
=
new
HashMap
<>();
result
.
putAll
(
loadShardingTables
(
shardingRule
));
result
.
putAll
(
loadDefaultTables
(
shardingRule
)
);
loadDefaultTables
(
shardingRule
,
result
);
return
new
TableMetas
(
result
);
}
...
...
@@ -206,19 +207,46 @@ public final class ShardingTableMetaDataLoader implements TableMetaDataLoader<Sh
return
result
;
}
private
Map
<
String
,
TableMetaData
>
loadDefaultTables
(
final
ShardingRule
shardingRule
)
throws
SQLException
{
private
Map
<
String
,
TableMetaData
>
loadDefaultTables
(
final
ShardingRule
shardingRule
,
final
Map
<
String
,
TableMetaData
>
result
)
throws
SQLException
{
Optional
<
String
>
actualDefaultDataSourceName
=
shardingRule
.
findActualDefaultDataSourceName
();
if
(!
actualDefaultDataSourceName
.
isPresent
())
{
return
Collections
.
emptyMap
();
}
Collection
<
String
>
tableNames
=
loadAllTableNames
(
actualDefaultDataSourceName
.
get
());
Map
<
String
,
TableMetaData
>
result
=
new
HashMap
<>(
tableNames
.
size
(),
1
);
for
(
String
each
:
tableNames
)
{
result
.
put
(
each
,
load
(
each
,
shardingRule
));
removeRepeatTable
(
tableNames
,
result
);
List
<
TableMetaData
>
metaList
=
executorEngine
.
execute
(
getTableNamesInput
(
tableNames
),
new
GroupedCallback
<
String
,
TableMetaData
>()
{
@Override
public
Collection
<
TableMetaData
>
execute
(
final
Collection
<
String
>
inputs
,
final
boolean
isTrunkThread
,
final
Map
<
String
,
Object
>
dataMap
)
throws
SQLException
{
String
logicTableName
=
inputs
.
iterator
().
next
();
Collection
<
TableMetaData
>
result
=
new
LinkedList
<>();
result
.
add
(
load
(
logicTableName
,
shardingRule
));
return
result
;
}
});
Object
[]
tableNameArr
=
tableNames
.
toArray
();
for
(
int
i
=
0
,
size
=
tableNames
.
size
();
i
<
size
;
i
++)
{
result
.
put
(
tableNameArr
[
i
].
toString
(),
metaList
.
get
(
i
));
}
return
result
;
}
private
void
removeRepeatTable
(
final
Collection
<
String
>
tableNames
,
final
Map
<
String
,
TableMetaData
>
result
)
{
Iterator
<
String
>
tabIter
=
tableNames
.
iterator
();
while
(
tabIter
.
hasNext
())
{
if
(
result
.
containsKey
(
tabIter
.
next
()))
{
tabIter
.
remove
();
}
}
}
private
Collection
<
InputGroup
<
String
>>
getTableNamesInput
(
final
Collection
<
String
>
tableNames
)
{
Collection
<
InputGroup
<
String
>>
inputCollection
=
new
LinkedList
<>();
for
(
String
tname
:
tableNames
)
{
inputCollection
.
add
(
new
InputGroup
<
String
>(
Lists
.
newArrayList
(
tname
)));
}
return
inputCollection
;
}
private
Collection
<
String
>
loadAllTableNames
(
final
String
dataSourceName
)
throws
SQLException
{
Collection
<
String
>
result
=
new
LinkedHashSet
<>();
DataSourceMetaData
dataSourceMetaData
=
dataSourceMetas
.
getDataSourceMetaData
(
dataSourceName
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录