Ниже моя тестовая программа для тестирования производительности при удалении ребер в Titan:Titan увеличивает производительность при удалении ребра
Vertex v1 = g.addVertex(null); int i = 0; long lastTime = System.currentTimeMillis(); while (true) { Vertex v2 = g.addVertex(null); Iterable iterable = v1.getEdges(Direction.IN, "last-data"); for(Edge e : iterable) { e.remove(); } v2.addEdge("last-data", v1); g.commit(); if (i % 100 == 0) { long duration = (System.currentTimeMillis() - lastTime); System.out.println("count:" + String.format("%7s", i) + ", duration:" + String.format("%7s", duration) + "ms"); lastTime = System.currentTimeMillis(); } // end if i++; } // end while
В течение долгого времени, время, необходимое для удаления край становится все длиннее и длиннее, хотя число краев остается 1 все время.
Это ошибка? Не следует ли время, затраченное на удаление края, постоянным, так как число ребер всегда равно 1? Что вызывает такое поведение? В любом случае обходной путь?
который бэкэнд вы используете? Cassandra? –
Да, я использую cassandra 2.0.4 в качестве внутреннего хранилища. это кассандра, вызывающая эту проблему? –