数据库-事务
来源:互联网 发布:java职业培训中心 编辑:程序博客网 时间:2024/05/21 15:44
事务是数据库中一个单独的执行单元,它通常由高级数据库操作语言(例如SQL)或编程语言(例如C++、java等)编写的用户程序的执行引起的。
特性: 当在数据库中更改数据成功时,在事物中更改的数据便会提交,不再改变。否则,事物就取消或回滚,更改无效。(一损俱损)
事务的四个属性(ACID):
原子性、一致性、隔离性、持久性
原子性:
事务是一个不可分割的整体,为了保证事务的整体目标,必须具有原子性,即当数据修改时,要么全部执行,要么全不执行。原子性要求事务必须被完整的执行。一致性:
一个事物执行之前和执行之后,数据库数据必须保持一致性。
数据库的一致性状态应该满足模式锁指定的约束,执行事务后,仍然满足。
数据库的一致性状态由用户负责,并由并发机制实现。
由于并发机制带来的数据不一致性包括丢失数据修改、读“脏数据”、不可重复读、产生“幽灵”数据。隔离性:
也被成为独立性,当两个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与事务的操作隔离起来,不被其他正在进行的事务看到。
例如两个事物T1和T2,对于T1,T2要么在T1执行前执行,要么在T1执行后再执行。
数据库有四种类型的事务隔离级别:不提交的读、提交的读、可重复的读和串行化。
因为隔离性,使得每个事务的更新在他被提交之前,对其他事务都是不可见的,所以,隔离性是解决临时更新与消除级联回滚问题的一种方式。持久性:
也被成为永久性,事务完成以后,DBMS保证它对数据库中的数据的修改是永久的,当系统或介质发生故障时,该修改也永久保持。
持久性一般通过数据库备份与恢复来保证。
数据库的事务属性一般通过数据库管理系统来进行保证的,在整个应用程序运行过程中,应用无需考虑数据库的ACID的实现。
数据库通过COMMIT和ROLLBACK来终止事务,当执行COMMIT时,自事务启动以来的所有操作都会被保存成为永久性的,即被写入磁盘;当执行ROLLBACK时,自事务启动以来对数据库做的所有更改都会被撤销,并且数据库内容返回到事务开始之前的状态。无论什么情况都能回到一致性状态。
- 【事务一】数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 爬楼梯
- myeclipse 项目出现红色感叹号
- Docker绑定固定IP/跨主机容器互访
- WiFi 无缝漫游
- Spring Ioc 容器如何工作
- 数据库-事务
- Linux中ls -a,-l,-r,-R命令的实现
- 微服私访项目第一节——配置项目服务端
- Why ZK
- Swift自定义事件分发
- 这20个正则表达式,让你少写1,000行代码
- 初学嵌入式Linux开发,学习笔记一
- 在android中引用第三方插件pulltorefresh
- qt creator转换到 COFF 期间失败: 文件无效或损坏