搜索

超详细的事务四大特性、隔离级别解读(带SQL语句)

发表于 2025-11-05 05:38:22 来源:益强智未来

事务的超详四大特性 ACID

原子性:事务的所有操作要么全部成功,要么全部失败回滚。细的性隔

一致性:事务必须是事务使数据库从一个一致性状态变到另一个一致性状态。

隔离性:一个事务的大特读带执行不受其他事务的干扰。

持久性:一个事务一旦被提交了,离级那么对数据库中的别解数据的改变就是永久性的,即便是超详在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

隔离级别产生问题

脏读:在一个事务处理过程里读取了另一个未提交的细的性隔事务中的数据(未提交意味着这些数据可能会回滚,可能最终不会存到数据库)。事务

不可重复读:不可重复读是大特读带指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的离级数据值,云服务器提供商这是别解由于在查询间隔,被另一个事务修改并提交了,超详读取了前一个事务提交的细的性隔数据。

幻读:事务在检索期间,事务其它事务对数据执行了操作,导致前后两次检索的数据不一样。

例如:事务1对一个表中所有数据某个字段值从“Y”修改为“N”的操作,这时事务2又对这个表中插入了一行数据,而这个数据的字段值是为“Y”。事务1如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是事务2中添加的,就好像产生幻觉一样,这就是发生了幻读。

幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的亿华云是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

MySQL数据库的四种事务隔离级别(从低到高)

Read Uncommitted(读未提交):所有事务都可以看到其他未提交事务的执行结果。(基本上没用)。

Read Committed(读已提交):一个事务只能看见已经提交事务所做的改变。

Repeatable Read(可重读):确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。(MySQL的默认事务隔离级别)

Serializable(可串行化):通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。

隔离级别

脏读

不可重复读

幻读

读未提交

不能避免

不能避免

不能避免

读已提交

能避免

不能避免

不能避免

可重读

能避免

能避免

不能避免

可串行化

能避免

能避免

能避免

查看mySQL的数据库隔离级别

先看下mysql版本,执行对应sql语句。

复制-- 查看版本 select version(); -- 旧版本也就是5.x select @@tx_isolation; -- 新版本 select @@transaction_isolation;1.2.3.4.5.6.

查询mysql版本

查询mysql的隔离级别

复制-- 设置read uncommitted级别: set session transaction isolation level read uncommitted; -- 设置read committed级别: set session transaction isolation level read committed; -- 设置repeatable read级别: set session transaction isolation level repeatable read; -- 设置serializable级别: set session transaction isolation level serializable;1.2.3.4.5.6.7.8.
随机为您推荐
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by 超详细的事务四大特性、隔离级别解读(带SQL语句),益强智未来  滇ICP备2023006006号-17sitemap

回顶部