【发布时间】:2020-09-02 13:35:42
【问题描述】:
根据我在https://mysqlserverteam.com/mysql-connection-handling-and-scaling/ 中阅读和理解的内容
每个连接都有一个 THD 对象,我们使用该对象更新或插入的内容存储在 THD 中并提交到数据库。
对于事务,尤其是程序化事务,我的理解是,我们保持连接,直到我们完成我们的操作然后提交。同时,我们可以进行与数据库相关的更新或插入以及其他可能导致一些异常/错误的计算。 示例:
Begin;
IN-Transaction :
UPDATE Table-1
c = A/B
Insert Table-2 with c
... so on
Commit;
在这个程序化事务中,我们必须传递一个事务的引用来执行多个数据库操作,并且该引用不是一个事务对象,而是一个连接,并且在连接和事务上下文之间存在一对一的映射。 如果遇到异常,我们会进行回滚,并且 DB 知道它需要丢弃与 THD 相关的更改。
我的问题是:
我的理解是否正确,如果有什么遗漏,请帮帮我!!
如果这是正确的,它是否与任何其他数据库(如 postgres 或 maria 或 voltDB)中使用的策略相同??
如果不正确,在mysql、postgres、voltDB等中是如何实现的?你能指出我可以得到更好主意的相关链接吗!!。
谢谢。
【问题讨论】:
标签: mysql postgresql transactions database-connection spring-transactions