在前面的文章中对MySQL事务的相关知识点进行了介绍,主要介绍了MySQL事务的四个特征:原子性、一致性、隔离性和持久性。今天来学习一下事务的四个特性ACID 之一——隔离性(isolation)的相关知识点,详细为大家介绍MySQL事务隔离级别有什么,正在学习MySQL事务的朋友们一起学习下去吧。
还是先来为java零基础刚入门不久的新手小白们简单介绍一下MySQL事务隔离的概念。大多数数据库都会同时被多个客户端访问,如果它们各自读写数据库的不同部分,这是没有问题的,但是如果它们访问相同的数据库记录,则可能会遇到并发问题,ACID意义上的隔离性意味着,同时执行的事务是相互隔离的:它们不能相互冒犯。
MySQL事务隔离级别可分为四个,分别是:读未提交、读已提交、可重复读和串行化,下面来具体介绍这四个MySQL事务隔离级别:
1、read committed 读未提交(级别最低)
(1)事务A和和事务B,事务A未提交的数据,事务B可以读取;
(2)这里读取到的数据可以叫做“脏数据”或“脏读 Dirty Read”;
(3)读未提交隔离级别最低,这种级别一般只在理论上存在,数据库默认隔离级别一般都高于该隔离级别;
2、read committed 读已提交
(1)事务A和事务B,事务A提交的数据,事务B才可读取到;
(2)该隔离级别高于“读未提交”级别;
(3)换句话说:对方事务提交之后的数据,当前事务才可读取到;
(4)该隔离级别可以避免脏数据:该隔离级别能够导致“不可重复读取”;Oracle 数据库管理系统默认隔离级别为“可重复读”。
3、repeatable read 可重复读
(1)事务A和事务B,事务A提交之后的数据,事务B读取不到,事务B是可重复读到数据的,这种隔离级别高于“读已提交”,换句话说,对方提交之后的数据,还是读取不到;
(2)这种隔离级别可以避免“脏读和不可重复读”,达到“重复读取”;
(3)MySQL 数据库管理系统默认隔离级别为:可重复读,虽然可以达到“可重复读”效果,但是会导致“幻象读”。
4、serializable串行化
(1)事务A和事务B,事务A在操作数据库表中数据的时候,事务B只能排除等待;
(2)这种事务隔离级别一般很少使用,吞吐量太低,用户体验不好;
(3)这种隔离级别可以避免“幻象读”,每一次读取都是数据库表中真实的记录;
(4)事务A和事务B不再并发。
以上就是对四个MySQL事务隔离级别的说明,相信这篇文章对大家学习MySQL数据库可以有所帮助,尤其是对零基础还不熟悉java的朋友们,可以起到一个知识梳理概括的作用。希望大家在平时多多学习java培训课程,早日成为一名合格的java程序员。
不写代码你养我啊08-23 11:30
HelloWorld09-29 17:28
兔子06-15 17:15