事务隔离级别

事务隔离级别介绍如下:

四种事务隔离级别分别是未提交读(ReadUncomtched)、已提交读(ReadComtched)、可重复读(RepeableRead)、Serialized。

1.ReadUncomtched:事务可以读取未提交的数据,也称为脏读(DirtyRead)。
一般很少使用。

2.ReadComtched:这是大多数DBMS(如Oracle、SQLServer)的默认事务隔离。
两次运行商定的查询并获得不同的结果也称为不可重复读取。

3.可重复读:这是MySQL默认的事务隔离级别。
可以保证同一个事务多次读取相同数据的结果是一致的。
它可以解决脏读问题,但理论上不能解决幻读问题。

4.可串行化:这是最高级别的隔离。
强制事务串行运行将阻止读取每一行数据。
虽然这可能避免鬼读问题,但也可能导致大量超时和锁争用问题。
该级别很少应用,只有在保证数据一致性非常重要且不允许并发的应用场景下才会考虑。

事务隔离级别的特性对比

从事务隔离级别的定义可以看出,Serialized级别具有最大的隔离性,但是它的效率也是最低的,因为它要求对同一条记录操作的所有事务都是串行执行的。

对于MySql来说,默认的事务级别是Repeatableread,虽然根据定义,这个隔离级别不能解决鬼读问题,但是MySql使用了Nextkey-lock算法来实现Repeatableread,这个算法可以解决鬼读问题。

对于Nextkey-lock算法,在执行查询时,不仅会锁定当前操作记录,还会锁定查询涉及的范围。

也就是说,如果其他事务想要在当前事务查询范围内进行数据操作,就会被阻塞。
因此,MySql已经具有低于可重复读事务隔离级别的可序列化隔离级别。

MySQL的默认事务隔离级别是?

MySQL的四种事务隔离级别如下:

1.未提交读(ReadUncomfilled):允许脏读,即可以读取其他会话中未提交事务修改的数据。

2.ReadCommited:只能读取已提交的数据。
大多数数据库(如Oracle)默认为此级别(无重复读取)。

3.可重复读取:可重复读取。
同一事务内的查询在事务开始时是一致的,InnoDB标准级别。
在SQL标准中,这种隔离级别消除了不可重复读,但是仍然存在幻读,但是innoDB解决了幻读。

4.Serialized:每次读操作都需要共享表级锁,读写互相阻塞。

相关介绍

MySQL是瑞典MySQLAB公司开发的关系型数据库管理系统,是Oracle公司的产品。
MySQL是最流行的关系数据库管理系统之一。
在WEB应用方面,MySQL是最好的RDBMS(关系数据库管理系统)应用软件之一。

MySQL是一个关系数据库管理系统。
关系数据库将数据存储在不同的表中,而不是将所有数据存储在一个大型仓库中,从而提高了速度和灵活性。

MySQL使用的SQL语言是访问数据库最常用的标准化语言。
MySQL软件遵循双重许可政策,分为社区版和商业版。
由于MySQL体积小、速度快、总体拥有成本低,尤其是开源的特点,一般采用MySQL作为中小型网站开发的网站数据库。