扳手与MySQL的锁定行为

时间:2017-10-27 15:12:16

标签: google-cloud-platform google-cloud-spanner

我正在探索将构建在MySQL之上的应用程序移植到Spanner中,并且我不确定是否可以从MySQL数据库中复制某些功能。

基本上我们的mysql架构的简化版本看起来像这样

  

用户
id
姓名
余额

user_transactions
id
USER_ID
EXTERNAL_ID


user_locks
USER_ID
日期

当应用程序收到用户的事务时,应用程序启动mysql事务,更新该用户的user_lock,检查用户是否有足够的事务余额,创建新事务,然后更新余额。应用程序可能同时为用户接收事务,因此锁定会强制它们是顺序的。

是否可以在Spanner中复制它?我该怎么办?基本上如果应用程序同时收到两个事务,我想确保给他们一个订单,并且第一个事务中更改的数据传播到第二个事务。

1 个答案:

答案 0 :(得分:0)

Cloud Spanner默认情况下会执行此操作,因为它提供了可序列化,这意味着所有事务似乎都是按顺序发生的。您可以在此处阅读有关事务语义的更多信息: https://cloud.google.com/spanner/docs/transactions#rw_transaction_semantics