summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwanglihui <[email protected]>2020-08-20 10:00:07 +0800
committerwanglihui <[email protected]>2020-08-20 10:00:07 +0800
commit233cf20d50eb4db74293d6c532cdda95c6867d4c (patch)
tree1fb102c954ba9cd9d4e4c597b4d93cc46bbfcc38
parentb13fc2bce1c2dd711170e973e7341a71248862fa (diff)
修改读取arangoDb方式为分页读取。
-rw-r--r--IP-learning-graph/src/main/java/cn/ac/iie/dao/BaseArangoData.java29
1 files changed, 27 insertions, 2 deletions
diff --git a/IP-learning-graph/src/main/java/cn/ac/iie/dao/BaseArangoData.java b/IP-learning-graph/src/main/java/cn/ac/iie/dao/BaseArangoData.java
index 759e5b2..841c32b 100644
--- a/IP-learning-graph/src/main/java/cn/ac/iie/dao/BaseArangoData.java
+++ b/IP-learning-graph/src/main/java/cn/ac/iie/dao/BaseArangoData.java
@@ -41,9 +41,11 @@ public class BaseArangoData {
map.put(i,new ConcurrentHashMap<>());
}
CountDownLatch countDownLatch = new CountDownLatch(ApplicationConfig.THREAD_POOL_NUMBER);
- long[] timeRange = getTimeRange(table);
+// long[] timeRange = getTimeRange(table);
+ Long countTotal = getCountTotal(table);
for (int i = 0; i < ApplicationConfig.THREAD_POOL_NUMBER; i++) {
- String sql = getQuerySql(timeRange, i, table);
+// String sql = getQuerySql(timeRange, i, table);
+ String sql = getQuerySql(countTotal, i, table);
ReadHistoryArangoData<T> readHistoryArangoData =
new ReadHistoryArangoData<>(arangoDBConnect, sql, map,type,table,countDownLatch);
threadPool.executor(readHistoryArangoData);
@@ -56,6 +58,29 @@ public class BaseArangoData {
}
}
+ private Long getCountTotal(String table){
+ long start = System.currentTimeMillis();
+ Long cnt = 0L;
+ String sql = "RETURN LENGTH("+table+")";
+ try {
+ ArangoCursor<Long> longs = arangoDBConnect.executorQuery(sql, Long.class);
+ while (longs.hasNext()){
+ cnt = longs.next();
+ }
+ }catch (Exception e){
+ LOG.error(sql +"执行异常");
+ }
+ long last = System.currentTimeMillis();
+ LOG.info(sql+" 结果:"+cnt+" 执行时间:"+(last-start));
+ return cnt;
+ }
+
+ private String getQuerySql(Long cnt,int threadNumber, String table){
+ long sepNum = cnt / ApplicationConfig.THREAD_POOL_NUMBER + 1;
+ long offsetNum = threadNumber * sepNum;
+ return "FOR doc IN " + table + " limit "+offsetNum+","+sepNum+" RETURN doc";
+ }
+
private long[] getTimeRange(String table){
long minTime = 0L;
long maxTime = 0L;