数据库事物隔离级别用到的锁再次理解

数据库中的几种隔离级别

read uncommited--读未提交 该隔离级别指即使一个事务的更新语句没有提交,但是别的事务可以读到这个改变,几种异常情况都可能出现。极易出错,没有安全性可言,基本不会使用。 read committed --读已提交 该隔离级别指一个事务只能看到其他事务的已经提交的更新,看不到未提交的更新,消除了脏读和第一类丢失更新,这是大多数数据库的默认隔离级别,如Oracle,Sqlserver。

repeatable read --可重复读 该隔离级别指一个事务中进行两次或多次同样的对于数据内容的查询,得到的结果是一样的,但不保证对于数据条数的查询是一样的,只要存在读改,行数据就禁止写,加了行锁(不是表锁),消除了不可重复读和第二类更新丢失,这是Mysql数据库的默认隔离级别。

serializable --序列化读 意思是说这个事务执行的时候不允许别的事务并发写操作的执行,加了表级锁。允许其他事务读,但不允许任何的事物写操作.完全串行化的读,只要存在读就禁止写,但可以同时读,消除了幻读。这是事务隔离的最高级别,虽然最安全最省心,但是效率太低,一般不会用。

 

repeatable加了行级锁,就防止了其他事物对单条记录的值修改,防止了不可重复读现象。但因为只是行级锁,依然不能对insert新增记录防止幻读。只有表锁才能防止。

repeatable加了行级锁,就防止了其他事物对单条记录的值修改,防止了不可重复读现象。但因为只是行级锁,依然不能对insert新增记录防止幻读。只有表锁才能防止。

repeatable加了行级锁,就防止了其他事物对单条记录的值修改,防止了不可重复读现象。但因为只是行级锁,依然不能对insert新增记录防止幻读。只有表锁才能防止。

repeatable加了行级锁,就防止了其他事物对单条记录的值修改,防止了不可重复读现象。但因为只是行级锁,依然不能对insert新增记录防止幻读。只有表锁才能防止。

posted @ 2018-05-17 22:01  跨境电商杂货铺  阅读(536)  评论(0编辑  收藏  举报