数据库

 首页 > 数据库 > MySql > 事务的隔离级别

事务的隔离级别

分享到:
【字体:
导读:
         摘要:事务的隔离级别 ...

事务的隔离级别

数据库系统有四个隔离级别,分别为未提交读、已提交读、可重复读、串行化

大多数数据库的默认级别就是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别就是Repeatable read。


READ UNCOMMITTED(未提交读)

事务A执行的操作未提交,但是事务B还是能看到修改,这时会产生脏读的情况。

READ COMMITTED(提交读)

事务A先是读取了数据,这时事务B更改了同一数据,并已提交,这时事务A再次读取这个数据时就会发现两次数据不一致,这就产生不可重复读的现象。

REPEATABLE READ(可重复读)

当事务A读取记录时,会对此记录添加一个共享锁,即事务B不能在事务A结束前对记录进行修改。

可能产生的问题:当执行范围查询时,可能会产生幻读。如事务A先查询一个消费总量,接着事务B增加一条消费记录,这时事务A再次查询消费总量时,就会发现两次查询不一致

SERIALIZABLE(序列化)

添加范围锁(比如表锁,页锁等、),直到transaction A结束。以此阻止其它transaction B对此范围内的insert,update等操作。幻读,脏读,不可重复读等问题都不会发生。


脏读

不可重复读

幻读

Read uncommitted

Read committed

×

Repeatable read

×

×

Serializable

×

×

×




事务的隔离级别
分享到:
腾讯数十亿广告的秘密武器:利用大数据实...
腾讯数十亿广告的秘密武器:利用大数据实时精准推荐 在过去几年,你在腾讯做了什么来推动大数据的应用? 过去三年,我一直在坚持一件事:推动大数据的实时应用。现在从国外数据中心的数据,一秒钟可以达到深圳数据中心,这就是腾讯具备的数据能力。有了这个能力,就可以做很多商业化行为的模式。 目前腾讯收集的数据已...
current_schema参数的用途
current_schema参数的用途用户A包含表TBL,如果用户A将TBL的访问权限给用户B(grant select any table to B),则在用户B中要想引用用户A的表,不使用同义词,则需要用select * from A.TBL; 之所以这里需要使用A.TBL的格式,是因为TBL表属于用户A的schema,做个比喻,schema(译文方案)好比一个容器,存放的是一系列数据库对...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……