博客
关于我
数据库之事务
阅读量: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/

你可能感兴趣的文章
php局域网上传文件_PHP如何通过CURL上传文件
查看>>
PHP工具插件大全
查看>>
php布尔值的++
查看>>
PHP常量、变量作用域详解(一)
查看>>
PHP应用目录结构设计
查看>>
PHP应用程序连接MSQL数据库Demo(附crud程序)
查看>>
PHP开发api接口安全验证
查看>>
PHP开发规范PSR
查看>>
PHP开发遇到错误0001
查看>>
PHP引入了泛型和集合两大重要特性,大大改善 PHP 代码的可维护性和可读性
查看>>
PHP引擎php.ini参数优化
查看>>
PHP引用(&)使用详解
查看>>
php引用及垃圾回收
查看>>
php当前时间的集中写法
查看>>
php循环比较数组中的值,如何从PHP数组中计算值并在foreach循环中仅显示一次值?...
查看>>
php微信 开发笔记,微信WebApp开发总结笔记
查看>>
php微信公众号开发access_token获取
查看>>
php微信公众号开发用户基本信息
查看>>
php怎么将对象变成数组,php怎么将对象转换成数组
查看>>
php怎样比较两数大小,jquery如何判断两个数值的大小
查看>>