如果我在 ScalarDB 中开始一个事务但不提交它会发生什么?
What happens if I start a transaction in ScalarDB but do not commit it?
我正在使用 ScalarDB 在 Cassandra
应用程序中添加 ACID 支持。如果我开始 Transaction
但不提交会发生什么。会不会有什么副作用?
例如
def somefunction= {
//Create the transaction
val transaction: DistributedTransaction = transactionService.start
if(all OK){
... //go ahead with DB operations
commitTransaction(transaction) //OK
(user: User, profileAndPortfolio: ExternalUserProfile, emailToken: UserToken)
} else {
//miss commiting the transaction here
}
}
没有效果。事务中的所有突变都存储在客户端的内存中,直到提交。其他交易看不到它们,数据存储区 (Cassandra) 没有收到任何变更请求。
更准确地说,如果您将 SERIALIZABLE 与 read-only 事务一起使用并使用读取数据,则可能会导致异常(读取偏斜异常或 read-only 事务异常)。
因此,作为最佳实践,调用 commit 总是更好。
我正在使用 ScalarDB 在 Cassandra
应用程序中添加 ACID 支持。如果我开始 Transaction
但不提交会发生什么。会不会有什么副作用?
例如
def somefunction= {
//Create the transaction
val transaction: DistributedTransaction = transactionService.start
if(all OK){
... //go ahead with DB operations
commitTransaction(transaction) //OK
(user: User, profileAndPortfolio: ExternalUserProfile, emailToken: UserToken)
} else {
//miss commiting the transaction here
}
}
没有效果。事务中的所有突变都存储在客户端的内存中,直到提交。其他交易看不到它们,数据存储区 (Cassandra) 没有收到任何变更请求。
更准确地说,如果您将 SERIALIZABLE 与 read-only 事务一起使用并使用读取数据,则可能会导致异常(读取偏斜异常或 read-only 事务异常)。
因此,作为最佳实践,调用 commit 总是更好。