数据库事务

一、数据库事务,事务有哪些特性

数据库事务(Transaction)是一系列操作的集合,这些操作被视为一个不可分割的工作单元。事务的执行必须遵循一定的规则,以确保数据的一致性和完整性。事务具有四个主要特性,通常被称为 ACID 特性:

1.原子性(Atomicity)

  • 定义:原子性是指事务中的所有操作要么全部完成,要么全部不完成。这意味着事务是一个不可分割的整体,其中的任何部分都不能单独提交或回滚。

  • 作用:确保事务作为一个整体被执行,避免部分成功、部分失败的情况。

2.一致性(Consistency)

  • 定义:一致性是指事务完成后,数据库必须处于一致的状态。这意味着事务的执行不应破坏数据库的完整性约束。

  • 作用:确保事务完成后数据库的状态符合预期,并且满足所有的业务规则和约束条件。

3.隔离性(Isolation)

  • 定义:隔离性是指事务的执行应该是独立的,不受其他事务的影响。每个事务看起来像是在独立的系统中运行一样。

  • 作用:确保事务之间不会相互干扰,即使多个事务同时执行,也必须像按照某种顺序串行执行一样。

4.持久性(Durability)

  • 定义:持久性是指一旦事务被提交,其对数据库的更改就是永久的,即使系统发生故障,这些更改也不会丢失。

  • 作用:确保一旦事务提交,其效果将持久保存,即使在系统崩溃或电源故障后也能恢复。

二、事务的隔离级别

除了 ACID 特性之外,事务还具有不同的隔离级别,以控制事务之间相互影响的程度。常见的隔离级别包括:

  1. 读未提交(Read Uncommitted)

    1. 定义:最低的隔离级别,事务可以看到其他未提交事务的更改。

    2. 问题:可能会导致脏读、不可重复读和幻读等问题。

  2. 读已提交(Read Committed)

    1. 定义:事务只能看到已经提交的事务所做的更改。

    2. 问题:可以避免脏读,但仍然可能出现不可重复读和幻读。

  3. 可重复读(Repeatable Read)

    1. 定义:确保事务在多次读取同一数据时返回相同的结果,即使在这期间有其他事务提交了更改。

    2. 问题:可以避免脏读和不可重复读,但仍然可能出现幻读。

  4. 序列化(Serializable)

    1. 定义:最高级别的隔离,确保事务以序列化的顺序执行,就像它们是按顺序串行执行一样。

    2. 问题:可以避免所有并发问题,但可能会导致性能下降,因为需要更多的锁定。

你可能感兴趣的:(数据库,oracle)