У нас есть график, состоящий из наборов данных (~ 500) и пользователей (~ 15). Когда я попытался очистить оба набора узлов, используя следующий запрос, использование памяти Neo4J (v2.3.1) увеличилось до 1,5 ГБ, и запрос был довольно медленным.Запрос удаления Cypher вызывает высокий уровень использования памяти
MATCH (ds:DataSet), (u:User)
OPTIONAL MATCH (ds)-[r1]-(), (u)-[r2]-()
DELETE ds, u, r1, r2
Удивительно разделив запрос на следующие два запроса:
MATCH (ds:DataSet) OPTIONAL MATCH (ds)-[r]-() DELETE ds, r
MATCH (u:User) OPTIONAL MATCH (u)-[r]-() DELETE u, r
сохранили память при ~ 240 МБ. Начальное потребление памяти после запуска составляет около ~ 230 МБ.
вопрос есть ли концептуальная проблема с первым запросом шифрования. Предполагается ли, что это очень неэффективно для одновременного удаления нескольких наборов узлов?
TL/дг:
Оба узла множества (пользователей и наборы данных) не перекрывают друг друга, но связаны друг с другом, то есть пользовательский узел быть соединен с узлом набора данных через отношения.
Декартовой продукт 'DataSet' и' User' не был проблемой, он просто позволял ~ 7000 удаленным ударам, что на самом деле не очень много. Спасибо за отзыв о 'ПРОФИЛЬ' –