数据库系统原理与设计复习:系统设计基础知识
数据库系统原理与设计复习:系统设计基础知识了解隔离
数据库系统
- 事务是表示数据库系统中发生的一个或一系列操作的最小逻辑单元。
- 此逻辑单元中的所有操作要么成功要么失败,并且没有中间状态。
- 事务机制的目的是无论操作成功、失败、异常、宕机,事务机制都能保证数据的最终一致性。即使任何操作失败,也不会影响下一次操作。无论事务成功还是失败,系统数据最终都是一致的。
交易特征 (ACID)
- 原子性:事务成功时的整个执行或事务失败时的整个回滚
- 隔离:两个事务的执行是独立隔离的。当多个事务对一个对象进行操作时,只有在第一个事务完成后才能执行第二个事务。因此,并发性将被最小化。
- 一致性:事务必须保证整个数据库数据的完整性和一致性。
- 持久性:持久性是指一旦事务提交成功,修改后的数据将是不可逆的持久性,不会因异常或宕机而导致数据错误或数据丢失。
理解一致性
1.内部一致性(数据库系统):ACID 中的一致性——修改丢失、脏读、不可重复读
- 外部一致性(分布式系统):强一致性、弱一致性、最终一致性
了解隔离
- Read Uncommitted:事务在读取数据时不会加锁,避免脏读和不可重复读。比如事务1可以更新数据,但事务2只能读取事务1未提交的数据。
- Read Committed:当我们在一个事务中修改数据时,如果该事务没有被提交,其他事务就无法读取该数据,或者只能读取已提交的数据。也就是说,读操作只是在读的那一刻被锁住,读完之后锁才会被释放。这样可以避免脏读,但不能避免不可重复读。
- 可重复读取:这可以避免不可重复读取。它在读取的那一刻被锁定,但是在读取结束后锁没有被释放,直到事务结束才会被释放。
- 序列化:可以彻底解决所有的一致性问题。通过添加表锁来解决。