Re: [请益] 交易方面的知识(DB)

楼主: DarkKiller (System hacked)   2019-06-01 17:11:00
※ 引述《MOONY135 (脱俗仙子谈无欲)》之铭言:
: 最近要开始搞 DB了
: 不过对于交易这块不知道要怎样去写CODE
: EX 进入帐
: 钱汇进来 可能有两处的DB的不同TABLE要更新资讯
: (两个要一起成功 只要一个失败就是得ROLLBACK)
能改架构就改看看,不行的话...
: 但有张TABLE可能会经常被其他支程式LOCK住(需要频繁的UPDATE)
: 不知道关于这方面大家都是怎样学的
: 是书上建议怎样做就照着做了吗?
: 还是看前人的CODE这样用就用了
如果改架构不是可能的选择的话,这就是 distributed trx (或是 global trx)
在解决的问题,推文提到的 2PC 是底层算法,在比较高阶有被标准化:
https://en.wikipedia.org/wiki/X/Open_XA
To guarantee integrity, XA uses a two-phase commit (2PC) to ensure that
all of a transaction's changes either take effect (commit) or do not
(roll back), i.e., atomically.
常见的 database 都有实作:(拿 xa transaction 搜寻)
https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions
https://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_xa.htm
https://dev.mysql.com/doc/refman/5.7/en/xa.html
https://jdbc.postgresql.org/development/privateapi/org/postgresql/xa/PGXADataSource.html
没用过但是看讨论知道效能应该不是强项...
作者: MOONY135 (谈无欲)   2019-06-01 18:14:00
感恩
作者: qrtt1 (有些事,有时候。。。)   2019-06-02 10:48:00
推第 1 句。先天体质好,才不会后天顾得辛苦啊。

Links booklink

Contact Us: admin [ a t ] ucptt.com