1.事务的四种特性
1.A 原子性,事务中的sql语句要么全都执行要么全都不执行。
2.C 一致性,事务保证数据的状态具有一致性,比如两个银行转账前两个人的总钱数和转账后的应该相同。
3.I 隔离性 ,这个由隔离级别决定隔离的程度,不同的隔离级别会解决的不同的并发问题。
4. D 持久性,修改的数据会写到磁盘上,一旦修改无法恢复。
1.事务并发问题
1.脏读:一个事务修改了数据,没提交,另一个事务就能看见他修改的内容。
2.不可重复度:一个事务修改了数据,提交了,另一个事务能看见他修改的内容。
3.幻读:一个事务插入了数据,提交了,另一个事务能看不见他修改的内容,但是能修改他插入的数据。
2.事务隔离级别
mysql支持四种隔离级别
read uncommit
read commit
repeatable read
serieable
默认的为第三种
从第二种开始分别解决上述三种问题(下面的解决了,上面的自然解决)。
3.常用代码
select @@transaction_isolation; #查询隔离级别
set session transaction isolation level = read commit;#设置隔离级别
show variables like "%autocommit%"; #查看自动提交开启否
set autocommit = 0; #设置自动提交关闭
start transaction ; #开启事务,如果上面设置完了,这个可以不用写
commit ;
rollback;
savepoint a; #设置保存点
rollback to a; #回滚到保存点