可靠数据库的事务(Transaction),应具有ACID的四个特性:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
一个事务是一个只包含所有读/写操作成功的集合,即使在高并发环境下也可以提供数据的完整性。
- 默认情况下一条SQL就是一个单独事务,只有在显式事务标记后,才能将代码块放在一个事务中执行。
保障事务的原子性是数据库管理系统的责任,为此许多数据库采用事务日志机制。
ANSI SQL-92的四种事务隔离级别:未提交读(READ UNCOMMITED)、已提交读(READ COMMITED)、可重复读(REPEATABLE READ)、可串行读(SERIALIZABLE),不同事务隔离级别,对脏读、不可重复读、幻读、丢失更新、并发模型、更新冲突检测处理是不一样的。
一般默认已提交读(READ COMMITED),SQLServer有6种事务隔离级别,Oracle有2种事务隔离级别。
理解RDBMS中的事务的锁与日志机制,是它们确保了ACID。
- 事务中对数据库的改变在写入到数据库之前,首先写入到事务日志中。而事务日志是按照顺序排号的(LSN)。
- 尽管RDBMS提供多版本并发控制(MVCC),但并发控制都是通过锁完成。因此,锁会增加执行的串行性,影响并发性。
结构化查询语言(Structured Query Language):是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
- SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。
发表回复