IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

mysql ACID与四种隔离级别归纳总结

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

关于数据库的ACID特性已经有很多的介绍,这里再重新归纳总结一下:

A(atomicity)原子性:

  即事务要么全部做完,要么全部不做,不会出现只做一部分的情形,如A给B转帐,不会出现A的钱少了,B的钱却没有增加的情况

C(consistency)一致性:

  指的是事务从一个状态到另一个状态是一致的,如A减少了100,B不可能只增加30。

I(isolation)隔离性:

  即一个事务在没有完成数据的提交修改时,对其它事务是不可见的。当然这里有个隔离级别的概念,在不同隔离级别下,这里会有不同的表现形式

D(durability)持久性:

  一旦事务提交,则所做修改就会被永久保存到数据库中。

在说隔离级别之前,我们先说如下几个概念:

脏读:

  一个事务对数据进行增删改,但并没有提交,但另一事务却能读到未提交的数据

不可重复读:

  一事务对数据进行了 更新或删除操作,另一事务两次查询的数据不一致

幻读:

  一事务对数据进行了 新增操作,另一事务两次查询结果不一致。

我们看到不可重复读与幻读好像好类似,但其实它们是有很大的不同, 不可重复读主要体现在update与delete,而幻读主要体现在insert,从实现层面上讲,要解决不可重复读,我们只需要对查询的数据进行加锁就可以实现,此时update与delete这些行都会阻塞等待,但是insert依旧可以,避免不了幻读,而要解决幻读,必须对其行与行之前也加锁,在mysql中,是通过next key lock(行锁+gap lock)来实现的。

隔离级别:

read uncommited未提交读:

  隔离级别为0,会有脏读,不可重复读,幻读

read commit提交读:

  隔离级别为1,不会有脏读,但有不可重复读,幻读

repeatable read可重复读:

  隔离级别为2,不会有脏读,不可重复读,但依旧会有幻读。但为什么说mysql中的repeatable read解决了幻读?本来是会有幻读的,但是 它采用了next key lock加上for update来避免,InnoDB提供了这样一种机制,通过加锁去查询可以得到最新的数据,如两个事务同时开启,A事务插入了一条数据,并提交,B事务去查select * from t,此时B是不能查询到A事务提交的数据的,但是加多一个for update,即select * from t for update,就能查找刚刚A事务插入的数据。所以我们才说mysql在repeatable read隔离级别下可以避免幻读的原因,记得加for update。

serializable可序列化:

  隔离级别为3,不会有脏读,不可重复读,幻读。但效率最低,并发性能最差,一般情况下不会使用。


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(63) 打赏



未经允许不得转载:搜云库技术团队 » mysql ACID与四种隔离级别归纳总结

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367