定义
作为单个逻辑⼯作单元执⾏的⼀系列操作要么同时成功,那么同时失败。
目的
保证数据的⼀致性。
事务特征(ACID)
原⼦性(Atomicity):对数据进行修改,要么都执行要么都不执行。
一致性(consistency):从开始到结束数据都要保持一致。
隔离性(isolation):多个事务互不干扰。
持久性(durabiliy):对数据的修改是永久的。
事务的缺点
1.需要占用空间。
2.随着数据的更改而更改。
事务类型
自动提交事务
系统默认,自动提交
隐式事务
Set autocommit=0;(show variables)
显示事务
start transaction
update tablename set sname=‘孙悟空’ where studentid='000000000000003’;
commit/rollback
分布式事务
事务控制
开始事务
Start {tran | transaction}
提交事务:所有操作都会影响数据库
commit
回滚事务:撤销事务内未提交的操作
rollback
事务设置
Set autocommit=0|1
事务并发问题
脏读(dirty read):
一个事务读取了另一个事务未提交的数据
不可重复读(unrepeatable read):
一个事务读取一行数据,再次读取时数据发生改变(修改,删除)。
幻读(phantom read):
一个事务读取一行数据,再次读取时数据发生改变(添加)。
丢失更新:
一个事务更新提交数据会覆盖覆盖另⼀个事务更新的数据
事务隔离级别
Read Uncommitted(读取未提交内容):
Read Committed(读取提交内容):
解决脏读
Repeatable Read(可重读) :
解决脏读、解决不可重复读
Serializable(可串⾏化):
解决脏读、解决不可重复读、解决幻读