数据库事务隔离级别

来源:互联网 发布:搜云社工库11g数据库 编辑:程序博客网 时间:2024/05/17 21:42

概念

数据库事务四大特性:原子性、一致性、隔离性、持久性
数据库事务隔离级别:将隔离性的隔离程度分为4个级别,即隔离级别

隔离级别

  1. read-uncommitted
  2. read-committed
  3. repeatable-read
  4. serializable

表现

read-uncommitted
在一个事务中未提交的更新,在另外一个事务中看到

read-committed
在一个事务中的更新只有在该事务执行提交后,另外一个事务中才能看到

repeatable-read
在一个事务中看不到其它事务所做的更新,但是更新已经实际发生。

serializable
如果一个事务要做更新操作,这个时间不能有其他事务存在,如果有的话,该更新操作将被阻塞,直到其他事务提交。查询操作不会被阻塞。

在任何一种隔离级别下,都不能同时在两个事务中,对同一条记录做更新(修改,新增,删除),必须阻塞到另外一个事务提交才能执行,如果另外一个事务一直没有提交则会出现提示:Lock wait timeout exceeded; try restarting transaction,可以推测,在事务中,如果对某一行做操作的话,会对该行加锁,但是对于表是没有加锁的,因为在两个事务中同时可以同时删除或者同时插入两条不同的记录。

命令

基于mysql操作
select @@autocommit;
set @@autocommit = 0;
select @@session.tx_isolation;
select @@global.tx_isolation;
set @@session.tx_isolation = ‘read-uncommitted’;
set @@session.tx_isolation = ‘read-committed’;
set @@session.tx_isolation = ‘repeatable-read’;
set @@session.tx_isolation = ‘serializable’;

0 0