1.事务:一个并发控制单位,由有限个数据库操作序列构成。包含一系列更新操作(update,insert,delete等操作语句),这些更新操作语句是一个不可分割的逻辑工作单元。
2.事务的ACID特性:
①原子性( A )。
每个事务都必须被认为是一个不可分割的单元。事务包含的所有操作要么全部成功,要么全部失败回滚。
②一致性( C )。
一个事务执行之前和执行之后都必须处于一致性状态,保证了数据库从不返回一个未处理完的事务。
③隔离性( I )。
每个事务在它自己的空间发生,和其他发生在系统中的事务互不干扰,而且事务的结果只有在它完全被执行时才能看到。
④持久性( D )。
即使系统崩溃,一个提交的事务也仍然存在。
3.使用begin
语句或start transaction
开始事务,使用commit
结束事务,中间可以用rollback
回滚事务。
4.chain
子句用来定义在事务提交之后的操作:会立即启动一个新事物,并且和刚才的事务具有相同的隔离级别。
5.release
子句用来定义在事务回滚之后的操作:会断开和客户端的连接。
6.set autocommit
可以修改当前连接的提交方式。如果设置set autocommit=0
,则设置之后的事务都需要通过明确的命令进行提交或者回滚。
7.并发控制产生的数据不一致问题:
①丢失更新问题。
最后的更新覆盖了由其他事务所做的更新。
②脏读问题。
一个事务正对一条记录做修改,另一个事务也来读取同一条记录。
③不可重复读问题。
一个事务多次访问同一行而且每次读取不同的数据。
④幻读问题。
当一个事务对某行执行插入或删除操作时,该行正在被另一个事务读取。