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() оставит транзакцию открытой, пока вы не подтвердите ее, но оператор все равно будет отправлен, интерпретирован и выполнен, а результаты будут возвращены. Однако любые изменения на самом деле не будут сохранены в хранилище данных и не будут видны запросам вне транзакции. Вы должны отметить транзакцию как успешную и зафиксировать ее, иначе она будет отменена.

Вы должны стараться не использовать транзакции; открытые транзакции предотвращают изменения индексов и ограничений и увеличивают использование памяти. Единственная причина использовать транзакции - это потенциал отката; если вы хотите посмотреть, каковы результаты запроса, и, возможно, отменить его в зависимости от этих результатов, используйте транзакцию. В противном случае используйте сеанс.

Другие вопросы по тегам