数据库知识整理——数据库控制功能

事务管理

事务是一个操作序列,这些操作"要么都做,要么都不做",是数据库环境中不可分割的逻辑工作单位。

SQL中事务定义的语句

  1. BEGIN TRANSACTION:事务开始
  2. COMMIT:事务提交 。该操作表示事务成功地结束 ,它将通知事务管理器该事务的所有更新操作现在可以被提交或永久地保留
  3. COMMIT:事务回滚 。该操作表示事务非成功地结束 ,它将通知事务管理器出故障了,数据库可能处于不一致状态,该事务的所有更新操作必须回滚或撤销

事务的性质

  • 原子性:要么都做,要么都不做。
  • 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
    因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
  • 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的
  • 持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效

数据备份与恢复

故障类型

  • 事务内部故障:事务内部的故障有的可以通过事务程序本身发现。
  • 系统故障 :通常称为软故 障,是指造成系统停止运行的任何事件,使得系统要重新启动,例如 CPU 故障、操作系统故障和突然停电等。
  • 介质故障 :通常称为硬故障 ,如磁盘损坏、磁头碰撞和瞬时强磁干扰。此类故障发生的几率小,但破坏性最大
  • 计算机病毒 :计算机病毒是一种人为的故障和破坏,是在计算机程序中插入的破坏,计算机功能或者数据可以繁殖和传播的一组计算机指令或程序代码。

备份方法

恢复的基本原理是"建立数据冗余 ",建立冗余 数据的方法是进行数据转储登记日志文件。数据的转储有以下几种类型:

静态转储和动态转储:

  • 静态转储:指在转储期间无法存储、修改数据。
  • 动态转储:指在转储期间可以存储、修改数据。

海量转储和增量转储:

  • 海量转储 :指每次转储全部数据
  • 增量转储 :指每次只转储上次转储后更新过的数据

日志文件:

  • DBMS将所有对数据库的操作写入日志文件,发生故障侧可以利用日志文件撤销改变,恢复到最初的状态。

恢复

恢复的步骤:

  1. 从后向前扫描文件日志,查找该事务的更新操作。
  2. 对事务的更新操作执行逆操作
  3. 继续反向扫描 日志文件,查找该事务的其他更新操作 ,并做同样的处理,直到事务的开始标志

数据库镜像

数据库镜像就是对数据的复制,一般是对关键数据和日志文件进行镜像。

并发控制

所谓并发操作,是指在多用户共享的系统中许多用户可能同时对同一数据进行操作,导致破坏了事务的隔离性

并发带来的不一致性问题

  • 丢失更新 :事务 T1 对数据库的修改被事务 T2 覆盖而丢失了,破坏了事务的隔离性
  • 不可重复读 :事务T1, 读取 A、B 的值后进行运算,事务 T2 在 t6 时刻对 B 的值做了修改以后,事务 T1 又重新读取 A、B 的值再运算,同一事务内对同一组数据的相同运算结果不同,显然与事实不相符。同样是事务 T2 干扰了事务 T1 的独立性
  • 读脏数据:事务 T1对数据 C 修改之后,在 t4 时刻事务 T2,读取修改后的 C 值做处理,之后事务 T1 回滚,数据 C 恢复了原来的值,事务 T2 对 C 所做的处理是无效的,它读的是被丢掉的垃圾值。

并发控制技术

并发控制的主要技术是封锁 。基本封锁的类型有排它锁 (简称X锁或写锁)和共享锁(简称S锁或读锁)。

  • 排他锁:事务T对于数据A加上X锁后,只有T能读、改,其他事务无法对A加任何锁。
  • 共享锁:事务T对于数据A加上S锁后,T只能读,其他事务只能对A加S锁。
相关推荐
java_logo7 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
富唯智能8 小时前
复合机器人 vs 工业人形机器人|工厂工序选型回本方案
经验分享
广州灵眸科技有限公司8 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
-XWB-10 小时前
【LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(二)
人工智能·经验分享·aigc·学习方法·ai编程
憧憬成为web高手10 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
遇乐的果园11 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园12 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
努力的小雨12 小时前
实测 Doubao-Seed-Evolving:把 Windows 桌面图标做成一个会自己运转的小世界
经验分享·ai智能
oradh12 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级