MySQL的事务

MySQL的事务

简述:在关系数据库中,事务可以是一条SQL语句、一组SQL语句或整个程序。注意事务和程序是两个概念,一般来讲,一个程序中包括多个事务

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durablity)。这四个特性简称为ACID特性(ACID properties):

1.原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行成功,要么全部失败回滚,对于一个事务来说不可能只执行其中一部分操作,这就是事务的原子性。

2.一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态.

3.隔离性:多个事务并发执行时, 一个事务的执行不应影响其他事务的执行.

4.持久性:已被提交的事务对数据库的修改应该永久保存在数据库中.

事务的隔离级别

1.读未提交

在READUNCOMMITED 级别中, 事务的修改, 即使没有提交, 对其他事务也是可见的. 其他事务可以读取此事务中的未提交的数据, 这也被称为脏读(DirtyRead). 此事务隔离级别会导致很多问题, 并且性能也不会比其他事务隔离级别好多少, 因此在实际环境中很少使用.

2.读提交

大多数的数据库默认隔离级别都是READCOMMITED, 但是 MySQL 并不是. 在READCOMMITED 级别中, 一个事务从开始到提交之前, 所做的任何修改对其他事务都是不可见的.

这个级别有时也叫不可重复读(nonrepeatableread),因为两次执行同样的查询,可能会得到不一样的结果。

3.可重复读

REPEATABLEREAD解决了脏读的问题. 该级别保证了在同一个事务中多次读取同样记录的结果时一致的. 但是理论上, 可重复读隔离级别还是无法解决另一个幻读(PhantomRead)的问题. 所谓幻读, 指的是当某个事务在读取某个范围内的记录时, 另外一个事务又在该范围内插入了新的记录, 当之前的事务再次读取该范围的记录时, 会产生幻行(PhantomRow).

可重复读是 MySQL 的默认事务隔离级别.

4.可串行化是最高的隔离级。它通过强制事务串行执行,避免了前面说的幻读的问题。简单来说,它会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中很少用到这个隔离级别,只有在非常需要确保数据的一致性而且可以接受没有并发的情况下,才考虑使用该级别。

实例:

事务只对innodb 引擎适用 

showcreatetablet1;

altertablet1engine=innodb;#更改引擎 

deletefrom原来12条数据delete以后 再插入数据 从13开始

truncate删除   原来12条数据delete以后 再插入数据 从1开始

rollback回滚

mysql>insertintot1(name)values("user14"),("user24"),("user34"),("user44");

QueryOK,4rows affected (0.00sec)

Records:4Duplicates:0Warnings:0

mysql>savepointp3;#保持 插入后的一个状态  跟Linux的快照比较类似 

QueryOK,0rows affected (0.00sec)

mysql>deletefromt1;

QueryOK,24rows affected (0.00sec)

mysql>rollbacktop2;

QueryOK,0rows affected (0.00sec)

p1  p2  p3 

如果回到了 p2  那么可以再回到  p1     但是 回不到 P3了  

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇文章能够阐述清楚跟数据库相关的四个概念:事务、数据库读现象、隔离级别、锁机制 一、事务 先来看下百度百科对数据...
    a6fc544968bb阅读 3,315评论 0 1
  • 一、事务 1、事务四要素:ACID 对于事务,我之前的理解是很粗糙的,不就是为了保证操作的原子性么?一般订单系统或...
    张伟科阅读 5,231评论 0 5
  • 等鬼人 曾携墨染天下梦,不可一世尽猖狂,却不知,一入江湖深似海,罢道今朝尚苟且。 弃学临惠二月有余,为求生...
    等鬼人阅读 2,905评论 0 1
  • 伏尔加河上的纤夫 背着沉重的枷锁 漠然地注视着脚下 偶尔望一望远方 茫然 汗水滴落的土地 浇灌不出希望 背着生活那...
    亚民阅读 1,630评论 0 0
  • 文/铁骨柔情 做人的快乐,太多太多。为人儿女,上面有着老人的疼爱。即使到了四老五十,或者七老八十,只要老父老...
    铁骨柔情青岛阅读 3,073评论 0 0

友情链接更多精彩内容