Session.run() VS транзакция.run () в Neo4j Bolt
В чем разница между Session.run() и action.run() в драйвере болта Neo4j?
Мои знания:
Session.run() will execute a single statement
transaction.run() executes multiple statements.
Это информация, которую я знаю, которая является правильной. Каковы все другие различия?
1 ответ
Session.run()
фактически создаст транзакцию, выполнит инструкцию и зафиксирует транзакцию. Transaction.run()
оставит транзакцию открытой, пока вы не подтвердите ее, но оператор все равно будет отправлен, интерпретирован и выполнен, а результаты будут возвращены. Однако любые изменения на самом деле не будут сохранены в хранилище данных и не будут видны запросам вне транзакции. Вы должны отметить транзакцию как успешную и зафиксировать ее, иначе она будет отменена.
Вы должны стараться не использовать транзакции; открытые транзакции предотвращают изменения индексов и ограничений и увеличивают использование памяти. Единственная причина использовать транзакции - это потенциал отката; если вы хотите посмотреть, каковы результаты запроса, и, возможно, отменить его в зависимости от этих результатов, используйте транзакцию. В противном случае используйте сеанс.