【数据库】数据库入门(十二): 数据库事务(Database Transactions)

定义

DBMS 提供了事务(Transactions)支持。事务是作为 DBMS 中的逻辑单元分组执行的一系列数据库操作。与在DBMS之外执行程序(例如,C程序)在许多方面都不同!

数据库应用程序通常通过事务而不是单个操作访问数据库。例如,大型数据库和数百个并发用户:银行、超市收银台、机票预订、在线购买等。
之所以使用事务是因为它们可以在以下情况下实施数据完整性:多个用户可以同时修改和共享数据;事务、系统和媒体故障可能不时发生。
 

  • 从高级语言的角度(如 SQL)
    • 插入(INSERT)、选择(SELECT)、更新(UPDATE)、删除(DELETE)
    • 开始(BEGIN)、提交(COMMIT)、中止(ABORT)/ 回滚(ROLLBACK)等;
BEGIN TRANSACTION
SELECT balance FROM Account WHERE name = `Steve';
UPDATE Account
    SET balance = balance-500 WHERE name=`Steve';
SELECT balance FROM Account WHERE name = `Bob';
UPDATE Account
    SET balance = balance+500 WHERE name = `Bob';
COMMIT
  • 内部进程级别:操作对象为数据表、行、单元或者内存页。
    • 读(read)、写(write)
    • 开始(begin)、提交(commit)
    • 中止(abort):表示事务未成功结束,撤消事务的所有操作
步骤 Transactions
1 read(A)
2 write(A) (A := A - 500)
3 read(B)
4 write(B) (B:= B + 500)
5 commit

其中,A 是 Steve 的账户余额;B 是 Bob 的账户余额。

 

ACID 属性

DBMS 确保了事务的以下属性:

  • 原子性(Atomicity)
    • 每个事务的执行都是原子性的,即要么所有的操作都完成了(ALL),要么根本没有完成(NONE)。
    • 如果一个事务因为某些原因而不能完成,那么 DBMS 必须消除部分事务的影响,以确保原子性。
  • 一致性(Consistency)
    • 数据库的状态在每个事务之前和之后是一致的。
    • 中间状态可能是不一致的。
  • 隔离(Isolation)
    • 每个事务的执行结果应该不受其他并发执行事务的影响。
    • 其他事务不会看到目前事务下所有对象的信息,直至该事务完成。
  • 耐用性(Durability)
    • 一旦事务成功完成,它的效果应该会保存在数据库中。
    • 一旦提交,事务就不能恢复为 abort,这种改变是持久的。

需要注意的是,这些属性不是相互独立的,但原子性是中心属性。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值