|NO.Z.00037|——————————|BigDataEnd|——|Java&MySQL单表/约束/事务.V15|——|MySQL.v15|脏读事务隔离级别|隔离界别相关命令|
一、mysql事务隔离级别
### --- 数据并发访问
——> 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库.
——> 数据库的相同数据可能被多个事务同时访问,如果不采取隔离措施,
——> 就会导致各种问题, 破坏数据的完整性
### --- 并发访问会产生的问题
——> 事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。
——> 因为并发操作,多个用户同时访问同一个 数据。可能引发并发访问的问题
| 并发访问的问题 | 说明 |
| 脏读 | 一个事务读取到了另一个事务中尚未提交的数据 |
| 不可重复读 | 一个事务中两次读取的数据内容不一致, 要求的是在一个事务中多次读取时数据是一致的. 这是进行 update 操作时引发的问题 |
| 幻读 | 一个事务中,某一次的 select 操作得到的结果所表征的数据状态, 无法支撑后续的业务操作. 查询得到的数据状态不准确,导致幻读. |
### --- 四种隔离级别
——> 通过设置隔离级别,可以防止上面的三种并发问题.
——> MySQL数据库有四种隔离级别 上面的级别最低,下面的级别最高。
——> ✔ 会出现问题
——> ✘ 不会出现问题
| 级别 | 名字 | 隔离级别 | 脏读 | 不可重复 | 读幻 |
数据库的默认隔离级别 |
| 1 | 读未提交 | read uncommitted | ✔ | ✔ | ✔ | |
| 2 | 读已提交 | read committed | ✘ | ✔ | ✔ | Oracle和SQLServer |
| 3 | 可重复读 | repeatable read | ✘ | ✘ | ✔ | MySql |
| 4 | 串行化 | serializable | ✘ | ✘ | ✘ |
二、隔离界别的相关命令
### --- 查看隔离级别
~~~ mysql的默认隔离级别,可重复读repeatable read 可以防止 脏读与不可重复读,不能防止幻读
select @@tx_isolation;
### --- 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化
set global transaction isolation level 级别名称;
read uncommitted 读未提交
read committed 读已提交
repeatable read 可重复读
serializable 串行化
### --- 例如: 修改隔离级别为 读未提交
set global transaction isolation level read uncommitted;
三、sql语句
### --- sql语句
/*
MySql的隔离级别
各个事务之间是隔离,相互独立.但是如果多个事务对数据库中的同一批数据
进行并发访问的时候,就会引发一些问题,可以通过设置不同的隔离级别来解决
对应的问题
并发访问的问题
脏读: 一个事务读取到了另一个事务没有提交的数据.
不可重复读: 一个事务中 两次读取的数据不一致.
幻读: 一个事务中,一次查询的结果,无法支撑后续的业务操作.
设置隔离级别
read uncommitted: 读未提交
可以防止哪些问题: 无
read committed: 读已提交 (Oracle默认 隔离级别)
可以防止: 脏读
repeatable read : 可重复读 (MySql默认的隔离级别)
可以防止: 脏读 ,不可重复读
serializable : 串行化
可以防止: 脏读 ,不可重复读 ,幻读
注意: 隔离级别 从小到大 安全性是越来越高的,但是效率是越来越低的,
根据不同的情况选择对应的隔离级别
*/
/*
查看隔离级别
select @@tx_isolation;
设置隔离级别
set global transaction isolation level 级别名称;
read uncommitted 读未提交
read committed 读已提交
repeatable read 可重复读
serializable 串行化
*/
-- 查看隔离级别 MySql默认隔离级别 repeatable read
SELECT @@tx_isolation;
-- 设置隔离级别为 读已提交
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED ;
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
浙公网安备 33010602011771号