事务的四个特性:
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)
原子性 : 针对一个事务中的操作,要么全部成功要么全部失败
一致性 : 在一个事务中的重复读取只要该事务没进行操作读取的状态应该是一致的,修改也是
隔离性 : 不同的事务之间,相互不影响数据应该是隔离的
持续性 : 事务结束后不会随着外界原因导致数据丢失
ACID在MySql中的实现:
原子性 : undo log 记录着对数据的操作日志,事务回滚后会根据undo log回滚
一致性 : 其他三种特性保证了一致性(原子性,持久性,隔离性)
隔离性 : MVCC 多版本控制,同时要看隔离级别(四种),越高性能越低
持续性 : mysql是并不会第一时间进行刷库,而是进行日志记录(redo log),日志的记录是远比刷库快的,在mysql重启时会检查redo log,检查刷库失败的数据
1.事务内部的故障:事务内部的故障可分为预期的和非预期的,其中大部分故障都是非预期的。预期的事务内部故障是指可以通过事务程序本身发现的事务内部故障;非预期的事务内部故障是不能由事务程序处理的,如运算溢出故障,并发事务死锁故障、违反了某些完整性限制而导致的故障等。
2.系统故障(也称为软故障):是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类事务不破坏数据库,但是影响正在运行的所有事务。
3.介质故障:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等情况,使得数据库中的数据部分或全部丢失的一类故障。
4.计算机病毒故障:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主)。
四种故障的解决方法:
1.预期的事物内部故障:将事物回滚,撤销数据库的修改
非预期的事物内部故障:强制回滚事务,在保证该事务对其他事务没有影响的条件下,利用日志文件撤销其对数据库的修改。(事务撤销)
2.系统故障:待计算机重新启动之后,让所有非正常终止的事务回滚,强行撤销所有未完成的事务。对于已完成的事务可能部分或全部留在缓冲区的结果,需要重做所有已提交的事务(即撤销所有未提交的事务,重做所有已提交的事务)。
3.介质故障的软件容错:使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态。
介质故障的硬件容错:采用双物理存储设备,使两个硬盘存储内容相同,当其中一个硬盘出现故障时,及时使用另一个备份硬盘
4.计算机病毒故障:使用防火墙软件防止病毒侵入,对于已感染病毒的数据库文件,使用杀毒软件进行查杀,如果杀毒软件杀毒失败,此时只能用数据库备份文件,以软件容错的方式恢复数据库文件。