赞
踩
事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。 (1) 事务的语法
(2) 事务的特性
(3) 事务并发问题
(4) 事务隔离级别
(5) 不同隔离级别的锁的情况(了解)
(6) 隐式提交(了解)
脏读:读取到了没有提交的数据, 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的 数据是脏数据。 不可重复读:同⼀条命令返回不同的结果集(更新).事务 A 多次读取同一数据,事务 B 在事务A 多次读取的过程中,对数据做了更新并提交,导致事务A多次读取同一数据时,结果不一致。 幻读:重复查询的过程中,数据就发⽣了量的变化(insert, delete)。
create table users(
id int auto_increment primary key,
name varchar(10),
age int,
account int
)
insert into users values(null,'张三',25,10000),(null,'李李四',20,100),(null,'王五',23,0);
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(READ_UNCOMMITTED) | 允许 | 允许 | 允许 |
读已提交(READ_COMMITTED) | 禁止 | 允许 | 允许 |
可重复读(REPEATABLE_READ) | 禁止 | 禁止 | 可能会 |
顺序读(SERIALIZABLE) | 禁止 | 禁止 | 禁止 |
4种事务隔离级别从上往下,级别越高,并发性越差,安全性就越来越高。 ⼀般数据默认级别是 读以提交或可重复读
查看当前会话中事务的隔离级别
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.93 sec)
设置当前会话中的事务隔离级别 mysql> set session transaction isolation level read uncommitted; Query OK, 0
rows affected (0.00 sec)
DQL:查询语句句 DML:写操作(添加,删除,修改) DDL:定义语句句(建库,建表,修改表,索引操作,存储过程,视图) DCL:
控制语⾔言(给⽤用户授权,或删除授权) DDL(Data Define Language):都是隐式提交。 隐式提交:执⾏行行这
种语句句相当于执⾏行行commit; DDL
https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。