2017-10-04 3 views
0

J'ai besoin de suivre l'historique des fichiers et j'ai besoin d'afficher l'historique à un utilisateur en fonction du nœud sélectionné. J'utilise Apache jackrabbit pour obtenir les données pour une étiquette de version particulière. J'utilise la requête suivante:Requête Jackrabbit pour les étiquettes de version prenant 40 minutes

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] 

Mais ma version DB a 133129 enregistrements. La requête prend 35 minutes à exécuter. S'il vous plaît laissez-moi savoir comment puis-je obtenir le meilleur temps de performance. Toute personne ayant des exigences similaires et mis en œuvre avec de bonnes performances, s'il vous plaît faites le moi savoir. Merci d'avance.

Répondre

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); 
     }