1、什么是事务?
(1) 事务是数据库系统区别于其它一切文件系统的重要特性之一
(2) 事务是一组具有原子性的SQL语句,或是一个独立的工作单元
事务的原子性(ATOMICITY):
定义:一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作。
实例:从银行个人理财账户中往活动存款账户转账2000元。
整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
事务的一致性(CONSISTENCY):
定义:一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事物开始之前和事务结束后数据库中数据的完整性没有被破坏。
事务的隔离性(ISOLATION):
定义:隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其他事务是不可见的。
SQL标准中定义的四种隔离级别:
查看事务的隔离级别:
修改事务隔离级别:
开启事务:
提交事务:
a. 未提交读(READ UNCOMMITED):事务可以读取未提交的数据,被称之为脏读,对提交的数据,我们通常称之为脏数据。
b. 已提交读(READ COMMITED):一个事务开始时,只能看到已提交的事物所做的修改。或者说一个事务,从开始到提交前对数据所做的修改,对于其他事务来说是不可见的。
c. 可重复读(REPEATABLE READ):保证了在同一个事务中多次读取同样的记录的结果是一致的。
d. 可串行化(SERIALZABLE)
事务的持久性(DURABILITY):
定义:一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统奔溃,已提交的修改数据也不会丢失。
2、什么是大事务?
定义:运行时间比较长,操作的数据比较多的事务。
风险:
(1) 锁定太多的数据,造成大量的阻塞和锁超时
(2) 回滚时所需时间比较长
(3) 执行时间长,容易造成主从延迟
3、如何处理大事务?
(1) 避免一次处理太多的数据
(2) 移出不必要在事务中的SELECT操作