分布式数据库核心难点之乐观锁适配问题探讨?

在金融领域,绝大多数的银行业应用设计都是基于传统单机关系型数据库,没有从整体应用架构考虑与第三代分布式数据库进行适配,尤其在银行核心系统应用第三代分布式数据库案例甚少,没有可复制的成功经验可以借鉴,从数据库自身机制和核心系统应用等方面,面临核心难点之乐观锁适配问...显示全部

在金融领域,绝大多数的银行业应用设计都是基于传统单机关系型数据库,没有从整体应用架构考虑与第三代分布式数据库进行适配,尤其在银行核心系统应用第三代分布式数据库案例甚少,没有可复制的成功经验可以借鉴,从数据库自身机制和核心系统应用等方面,面临核心难点之乐观锁适配问题:

乐观锁在事前对表不会加锁,只在提交的时候比对提交版本号,不能保证每笔交易都能提交成功,在高并发的金融记账业务场景里,会造成大量的交易超时,出现用户短款现象,不能满足银行业务连续性和数据“强一致性”的要求。

大家针对这个核心难点问题有何解?有什么比较好的方法和经验吗?欢迎谈谈!

收起
参与16

查看其它 3 个回答lulihuan1987的回答

lulihuan1987lulihuan1987课题专家组数据库管理员张家港行

乐观锁和悲观锁应用的场景不同,悲观锁更注重数据安全,更新数据前,读取数据时先利用数据库的锁机制将该数据行进行锁定,直到事务提交才释放,强调安全性,持有锁时间长,并发效率在某些场景效率不高;

乐观锁在最后提交的时候才去比较数据版本号,锁持有时间短,并发效率高,但是如果出现大量的数据冲突,会导致大量交易失败,所以乐观锁应用的前提应该是该业务场景下数据冲突的概率很小。

所以还是要结合业务场景和特点,在安全性保证的前提下,考虑使用乐观锁还是悲观锁,我们行大部分业务场景都是采用的悲观行锁,通过其他途径去提升并发效率,比如大事务改小事务,事务中锁尽量往后放等。

分布式数据库比集中式数据库有个全局一致性读的特殊性,现在分布式数据库通过增加全局时间戳组件实现了全局一致性读,能满足数据“强一致性”的要求。

银行 · 2021-07-01
浏览1876

回答者

lulihuan1987
数据库管理员张家港行
擅长领域: 数据库服务器分布式系统

lulihuan1987 最近回答过的问题

回答状态

  • 发布时间:2021-07-01
  • 关注会员:7 人
  • 回答浏览:1876
  • X社区推广