MySQL的事务隔离级别可以解决什么问题

下面讲讲关于MySQL的事务隔离级别可以解决什么问题,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL的事务隔离级别可以解决什么问题这篇文章你一定会有所受益。 

十载的成县网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整成县建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“成县网站设计”,“成县网站推广”以来,每个客户项目都认真落实执行。

一、事务的原则

事务要满足ACID原则,也就是:

1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体。

2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不能出现A扣了钱,B却没收到。

3.隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

4.持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

二、事务并发造成的问题

1.脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据。比如:

事务B把用户的年龄更新成22岁,但是事务还未提交。此时事务A来读用户的年龄,读到了22岁,然后去做自己的处理。之后事务B把用户的年龄回滚到21岁。这个例子中事务A读到的22岁就是脏数据。http://www.chacha8.cn/detail/1132398235.html

2.不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。比如:

事务B先把用户的余额更新为100元,事务A来读的时候读到的是100元,然后事务B又把余额更新为90元,此时事务A来读的时候读到的就是90元,也就是事务A读到的数据前后不一致。

3.幻读:事务A对表中的数据进行了修改,涉及到表中的全部行。同时,事务B也修改这个表中的数据,向表中插入一行新数据。那么,事务A发现表中还有自己没有修改的行,就好象发生了幻觉一样。比如:

A先把所有人的余额清零,同时,B往表中插入了一条余额为100的数据。A提交以后,发现竟然还有100的。就好像发生了幻觉一样,这就叫幻读。

三、MySQL的事务隔离级别

MySQL的事务隔离级别有四种:

1.读未提交(read-uncommitted):能读到未提交的数据。会出现脏读、不可重复读、幻读。

2.读已提交(read-committed):读已提交的数据。会出现不可重复读和幻读。

3.可重复读(repeatable-read):mysql默认的事务隔离级别,查询的都是事务开始时的数据。只会出现幻读。

4.串行读(serializable):完全串行化读,每次都会锁表,读写互相阻塞。最高隔离级别,不会出现脏读,不可重复读,幻读。但会大大影响系统的性能,一般不用。

对于以上MySQL的事务隔离级别可以解决什么问题相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。


网页标题:MySQL的事务隔离级别可以解决什么问题
分享URL:http://cdiso.cn/article/jppdih.html

其他资讯