2017-10-04 21 views
0

파일 기록을 추적해야하며 선택한 노드를 기반으로 사용자에게 기록을 표시해야합니다. 아파치 jackrabbit을 사용하여 특정 버전 레이블에 대한 데이터를 얻고 있습니다. 다음 쿼리를 사용하고 있습니다 :Jackrabbit는 40 분 시간이 걸리는 버전 레이블을 묻습니다.

SELECT versioned.[jcr:uuid] 
FROM [nt:frozenNode] AS versioned 
INNER JOIN [nt:version] AS version 
ON ISCHILDNODE(versioned,version) INNER JOIN [nt:versionLabels] as node 
ON node.[20170921114713] = version.[jcr:uuid] 

그러나 내 버전 DB에는 133129 개의 레코드가 있습니다. 쿼리 실행에는 35 분이 걸립니다. 최선의 성과 시간을 어떻게 달성 할 수 있는지 알려주십시오. 비슷한 요구 사항을 가지고 있고 우수한 성능으로 구현 된 사람이라면 알려 주시기 바랍니다. 미리 감사드립니다.

답변

0
Found that query is taking too much of time because of huge data in forzen node. Also getting GC over limit . 

Used API to fetch the data. now time decreased to 90seconds. 

TreeTraverser traverse = new TreeTraverser(node, null, TreeTraverser.InclusionPolicy.LEAVES); 
     int count = 0; 
     for (Node r : traverse) { 
      count++; 
      Node parent = r.getParent(); 
      String test = parent.getPath(); 
      VersionHistory history1 = session.getWorkspace().getVersionManager().getVersionHistory(test); 
      HashSet<String> test1 = printHistory1(history1); 
      map.put(test, test1); 
     }