7.3 Транзакции

Любой запрос, который обновляет граф, запускается в транзакции. Любой запрос на обновление всегда будет либо успешно выполнен, либо не выполнен вообще.

Cypher будет либо создавать новую транзакцию, либо запускать внутри существующей:

Следующие действия могут быть выполнены, чтобы результаты несколько запросов фиксировались в рамках единой транзакции:

  1. Открыть транзакцию,
  2. запустить ряд модифицирующих запросов Cypher,
  3. и зафиксировать их все одновременно.

Отметим, что запрос будет держать изменения в памяти, пока он не будет полностью выполнен. Большой запрос будет, соответственно, требовать виртуальную машину Java (JVM) с большим объёмом выделенной памяти.

Для использования транзакций поверх REST API обратитесь к Разделу 19.1 “Транзакционная конечная точка HTTP”.

При использовании встроенного Neo4j следует помнить, что все итераторы, возвращаемые из результата выполнения, должны быть полностью выбраны, чтобы гарантировать, что ресурсы, связанные с ними будут надлежащим образом закрыты. Ресурсы включают транзакции, запущенные запросом, поэтому при нарушении правильного сценария могут, например, привести к тупикам или другому неадекватному поведению.

Предыдущая | Следующая