事务隔离的用法:
1、net stop mysql, net start mysql --重启mysql数据库,清除隔离级别
2、mysql -u root -p密码 --登录进入MySQL数据库
3、select @@tx_isolation --查看当前隔离级别
4、set session transaction isolation level read uncommitted --设置为最低的隔离级别
5、use test --进入test数据库
6、select * from account --查看account表
7、set autocommit=0 --开启事务
8、update account set username = 'C' where id = 1; --修改account表中的数据,但是没有提交事务,此时数据库实在内存中修改,没有真正被修改
9、在开一个dos窗口,连上mysql,模拟另一个事务
mysql -u root -p密码
select @@tx_isolation
set session transaction isolation level read uncommitted
use test
select * from account
set autocommit=0 --开启一个新的事务
select * from account --这是你查到的数据C,但是上一个事务的修改还没有提交
10、rollback --结束事务,将原来的事务回滚
结论:
第一个级别:前面讲的三个错误都是会存在的
第二个级别:脏读错误没有了,但不可重复读和幻读仍然会有
第三个级别:脏读和不可重复读错误没有了,但幻读仍然会存在
第四个级别:可以解决所有的错误,但是会导致数据库的并发性非常弱,性能十分低下
6、事务设置回滚点
关键字:
用法:
set autocommit = 0 --
start transaction; --开启事务
#编写SQL语句
delete from account where id = 1;
savepoint a; --设置保存点
delete from account where id = 2;
#结束事务
commit;
rollback to a; --回滚到保存点