Ответ 1
Я сам не использовал persistent
, но Yesod book упоминает, что
Важно отметить, что все, что происходит внутри один вызов
runSqlConn
выполняется в одной транзакции. У этого есть два важные последствия:
Для многих баз данных, совершающих транзакцию может быть дорогостоящей деятельностью. Помещая несколько шагов в один транзакции, вы можете значительно ускорить код.
Если исключение брошенный где-нибудь внутри одного вызова
runSqlConn
, все действия будут (при условии, что у вашего backend есть поддержка отката).
Независимо от того, дает ли это вам гарантии изоляции, возможно, зависит от того, предоставляет ли данный сервер гарантии изоляции для транзакций.