数据库篇:mysql事务原理之MVCC视图+锁

数据库篇:mysql事务原理之MVCC视图+锁,第1张

MVCC 全称Multi-Version Concurrency Control,其好处是读不加锁,读写不冲突,并发性能好

对于使用 READ COMMITTED 和 REPEATABLE READ 隔离级别的事务来说,都必须保证读到已提交事务修改过的记录,也就是说假如另一个事务修改了记录但尚未提交,是不能读取最新版本的记录的,其核心问题:需要判断 MVCC 版本链中的哪个版本是当前事务可见的。innodb 的解决方案 readView,readView 包含4个比较重要的属性

本文作者 潜行前行

本文链接 : >

所谓事务是用户定义的一个数据库 *** 作序列,这些 *** 作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。

简单举个例子就是你要同时修改数据库中两个不同表的时候,如果它们不是一个事务的话,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,就只有第二个表回到未修改之前的状态,而第一个表已经被修改完毕。

而当你把它们设定为一个事务的时候,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,第一个表和第二个表都要回到未修改的状态!这就是所谓的事务回滚。例如,在将资金从一个帐户转移到另一个帐户的银行应用中,一个帐户将一定的金额贷记到一个数据库表中,同时另一个帐户将相同的金额借记到另一个数据库表中。由于计算机可能会因停电、网络中断等而出现故障,因此有可能更新了一个表中的行,但没有更新另一个表中的行。如果数据库支持事务,则可以将数据库 *** 作组成一个事务,以防止因这些事件而使数据库出现不一致。如果事务中的某个点发生故障,则所有更新都可以回滚到事务开始之前的状态。如果没有发生故障,则通过以完成状态提交事务来完成更新。

在 ADONET 中,可以使用 Connection 和 Transaction 对象来控制事务。可以使用 ConnectionBeginTransaction 启动本地事务。一旦开始一个事务,就可以使用 Command 对象的 Transaction 属性在该事务中登记命令。然后,可以根据事务组件的成功或失败情况,使用 Transaction 对象提交或回滚在数据源中所做的修改。

数据库事务是构成单一逻辑工作单元的 *** 作集合。

举例:转账是生活中常见的 *** 作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一 *** 作,然而在数据库系统中,至少会分成两个步骤来完成:

1、将A账户的金额减少100元

2、将B账户的金额增加100元。

与程序的区别:一个程序中包含多个事务。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

扩展资料:

事务必须具备四个属性,简称ACID属性:

1、原子性(Atomicity):事务是一个完整的 *** 作。事务的各步 *** 作是不可分的(原子的);要么都执行,要么都不执行。

2、一致性(Consistency):当事务完成时,数据必须处于一致状态。

3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

4、永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

参考资料来源:百度百科-事务

事务:是用户定义的一个数据库 *** 作序列,这些 *** 作要么都做,要么都不做,是一个不可分割的工作单位。

在关系数据库中,一个事务可以是一条SQL语句,也可以是多条SQL语句。

特点:

原子性、一致性、隔离性、持续性

举个例子

假设,定义了一个银行转账的事务,以两个银行账号里面的金钱为例,里面的钱要么一个增加多少,一个减少多少,要么就是都不增不减,不可能一个多但另一个不减少,你懂得。。。。

希望可以帮你o(∩_∩)o

事务是作为一个单元的一组有序的数据库 *** 作。如果组中的所有 *** 作都成功, 则认为事务成功,即使只有一个 *** 作失败,事务也不成功。如果所有 *** 作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个 *** 作失败,则事务将回滚,该事务所有 *** 作的影响都将取消。

这就是数据库中的事务了,关于数据库的更多知识,推荐你看黑马程序员视频库的视频,能学到很多知识哦!

其他信息:

数据库顾名思义就是存储数据的仓库,数据库原理就是教你如何去有效管理那些大量的数据信息的学科,教会你创建数据库来存储数据,优化数据库字段等等,设计出一个良好的数据库对一个系统或者是一个网站这些应用来说都是极其重要的。 数据库原理及应用前景 数据库管理系统经历了30多年的发展演变,已经取得了辉煌的成就,发展成了一门内容丰富的学科,形成了总量达数百亿美元的一个软件产业。根据Gartner Dataquest公司的调查,2000年国际数据库市场销售总额达88亿美元,比1999年增长10%。根据CCID的报告,2000年的中国数据库管理系统市场销售总额达248亿元,比1999年增长了417%,占软件市场总销售额的108%。可见,数据库已经发展成为一个规模巨大、增长迅速的市场,前景很好。 数据库原理及应用简介 《数据库原理及应用》是计算机类相关专业的一门专业核心课程,主要系统讲授数据库系统的基础理论、基本技术和基本方法。内容包括:数据库的体系结构、数据模型和关系运算等基本概念,并结合当前流行的大型关系数据库管理系统SQL SERVER平台,通过实例讲解和演示数据库的标准语言SQL、数据库的安全性和完整性控制、事务管理与恢复技术,以及关系规范化理论和数据库的设计,为进一步从事数据库的应用开发和研究奠定坚实的基础。

以上就是关于数据库篇:mysql事务原理之MVCC视图+锁全部的内容,包括:数据库篇:mysql事务原理之MVCC视图+锁、数据库系统原理,大家帮帮忙,谢谢了!、数据库为什么要用事务等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9871595.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存