1 转账,创建表并添加数据
create table account{
id int primary key auto_increment,
name varchar(20) not null,
money double
};
2 查看mysql是否开启自动提交事务
select @@autocommit;
取消自动提交
3 开启事务,张三向李四转账500;
start TRANSACTION;
update account set money = money -500 where name = 'zhangsan';
update account set money = money +500 where name = 'lisi';
COMMIT;
4 事务ACID
A原子性:整体,不可拆分,要么成功,要么失败
C一致性:转账前总金额等于转账后总金额
I事务在执行期不受其它事务影响,保持隔离
D持久性:关机,也保存下来。持久的。
5 事务隔离级别
脏读:一个事务读取到另一个事务没提交的数据
不可重复读:一个事务两次读取内容不一致
环读:一次事务中2次读取数据的数量不一致
6 mysql的4种隔离级别
隔离级别越高,性能越差
级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|---|---|
1 | 读未提交 | read uncommitted | 是 | 是 | 是 |
2 | 读已提交 | read committed | 否 | 是 | 是 |
3 | 可重复读 | repeatbale read | 否 | 否 | 是 |
4 | 串行 | serializable | 否 | 否 | 否 |
7 全局隔离级别
select @@tx_isolation;
设置隔离级别
set globaql transaction isolation level 级别字符串数字
几种隔离级别演示看纸质教材