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

事务管理

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

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锁。
相关推荐
倔强的石头_7 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐4 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再4 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip