博客
关于我
数据库之事务
阅读量:531 次
发布时间:2019-03-08

本文共 1243 字,大约阅读时间需要 4 分钟。

事务管理与并发控制

1. 事务的概念

事务(Transaction)是数据库环境下由一组数据库操作序列组成的逻辑工作单元。这些操作应是一个不可分割的整体,要么全做要么全不做。事务的执行应保证将数据库从一个一致状态转变成另一个一致状态,而在此过程中不必保证数据的一致性。

2. 事务的执行机制

事务通常以 BEGIN TRANSACTION 开始,以 COMMITROLLBACK 结束。COMMIT 表示提交事务的所有操作,将事务中所有对数据库的更新写回磁盘。ROLLBACK 表示回滚,将事务中已完成的操作全部撤消,恢复到事务开始时的状态。

3. 事务的性质

A. 原子性(Atomicity)

事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做,确保数据库的状态始终保持一致。

C. 一致性(Consistency)

事务执行后必须使数据库从一个一致性状态变为另一个一致性状态。在故障发生时,系统会回滚,确保数据库恢复到一致状态。

I. 隔离性(Isolation)

一个事务的执行不能被其他事务干扰,保证了数据的独立性,避免并发操作带来的数据不一致性。

D. 持续性(Durability)

事务提交后,所有更新必须写入数据库,对其他操作无影响,确保数据持久性。

4. 事务的操作

Read(X)

从数据库中将数据对象读入事务局部缓冲区。

Write(X)

将数据对象从事务局部缓冲区写入数据库。

5. 事务的状态

活动状态

事务开始执行后处于此状态,可执行读、写操作。

部分提交状态

事务结束前进入此状态。

失败状态

事务因故障或被撤销而进入此状态。

提交状态

事务已成功提交,进入该状态才能认为事务已完成。

中止状态

数据库恢复到事务开始前的状态,事务处于中止状态。

6. 事务故障

没有提交的事务可能已写入数据库,或部分更新未完成。

恢复方法

利用事务日志撤销未完成操作,重做已提交操作。

7. 数据库恢复技术

backup(备份)

分全备份、增量备份等方式进行数据保护。

事务日志

记录事务更新操作,用于故障恢复。

恢复方法

根据故障类型选择恢复方案,确保数据一致性。

8. 并发控制

读脏数据

一个事务修改数据后,另一个事务读取已修改的数据。

丢失修改

并发事务可能导致修改数据未能提交。

不可重复读

事务可能读取到第一个事务修改数据后的数据。

并发控制方法

使用锁机制和并发控制协议,确保数据一致性。

9. 锁机制

排它锁(X锁)

防止其他事务修改被加锁数据,确保数据一致性。

共享锁(S锁)

允许多个事务读取数据,但防止修改。

更新锁(U锁)

允许多个事务读取数据,但防止修改。

10. 加锁协议

一级加锁

事务在修改前加 X锁,全锁保护。

两段锁协议

分封锁和收缩阶段进行锁管理。

11. 防止死锁

一是优化加锁顺序

避免矛盾加锁,防止死锁。

二是死锁检测

及时发现死锁,进行恢复处理。

通过上述措施,可以有效管理并发事务,确保数据库的高并发运行。

转载地址:http://eglnz.baihongyu.com/

你可能感兴趣的文章
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>
MySQL 常用列类型
查看>>
mysql 常用命令
查看>>
Mysql 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>
MySQL 常见的开放性问题
查看>>
Mysql 常见错误
查看>>
MYSQL 幻读(Phantom Problem)不可重复读
查看>>
mysql 往字段后面加字符串
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>