mysql事务与隔离级别

mysql版本

8.0.25

常用存储引擎

innodb (支持事务)
Myisam (不支持事务)
Meory (不支持事务)

查看表存储引擎

show create table school;
show table status from school_info;
show table status from school_info where name='school';
select * from information_schema.tables where table_schema='school_info' and table_name='school';

事务含义

一组sql语句组成一个执行单元,要么全部执行要么全部不执行

事务的特点ACID

原子性:一个事务不可再分割,要么都执行,要么都不执行。
一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态
隔离性:一个事务执行不受其他事务干扰
持久性:一个事务提交会永久改变数据库数据

事务实例

commit

set autocommit = 0;
start transaction;
update student set `age`= 29 where `id`= 10;
update student set `age`= 30 where `id`= 11;
commit;

rollback

set autocommit = 0;
start transaction;
update student set `age`= 29 where `id`= 10;
update student set `age`= 30 where `id`= 11;
rollback;

隔离级别

1 read uncommitted  读取尚未提交的数据(脏读)
2 read committed    读取已经提交的数据。可能多次读取的数据结果不一致(幻读)
3 repeatable read: 可以重复读取,但有幻读。
4 serializable:    可读,不可写。

设置隔离级别

set session transaction isolation level read uncommitted;
set session transaction isolation level read committed;
set session transaction isolation level repeatable read;
set session transaction isolation level serializable;

查看隔离级别

select @@transaction_isolation;
show variables like '%isolation%';
select @@global.transaction_isolation;

查看当前隔离级别

select @@tx_isolation;
posted @ 2021-07-11 18:47  胡勇健  阅读(55)  评论(0)    收藏  举报