| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 数据库系统概论王珊版学习笔记(超详细) -> 正文阅读 |
|
[大数据]数据库系统概论王珊版学习笔记(超详细) |
注:部分图片可能上传失败,如需源文件请前往(超详细数据库系统与概论笔记2019上——个人笔记.zip_数据库系统概论笔记,数据库系统概述笔记-数据库文档类资源-CSDN文库
|
概念 | 详细说明 | 说明 |
数据 | 描述事物的符号称为数据。数据和数据的解释不可分离。数据的解释就是对数据含义的说明,数据含义称为数据的语义 | 数字,文本,图形,音频,视频都是数据 |
数据库 | 数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据 按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,可为各个用户所共享。 | DB,存放数据的仓库。数据库特点:永久储存、有组织和可共享。 |
数据库管理系统 | 数据库管理系统是位于用户和操作系统之间的一种系统软件,具有数据定义DDL、数据操纵DML、数据库运行管理和数据库建立与维护功能。 | DBMS |
数据库系统 | 数据库系统是指计算机系统引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户组成。 | DBS |
2、DBS的特点:
(1)整体数据结构化,这是与文件系统的区别。
(2)数据的共享性高,冗余度底,易扩展。
(3)数据独立性高:它包括物理独立性和逻辑独立性。物理独立性是指应用程序与数据库物理存储的相互独立;逻辑独立性是指应用程序与数据库的逻辑结构相互独立。
(4)数据有数据库管理系统统一管理和控制。
3、两类数据模型
数据模型是数据库系统的核心和基础
第一类 | 概念模型:E-R图 | 与数据库设计 |
第二类 | 逻辑模型:二维表 | 包括层次模型、网状模型、关系模型、面向对象数据模型 |
物理模型:信号1,0等 |
? 现实世界——>信息世界——>机器世界;概念模型——>逻辑模型——>物理模型
数据模型的组成三要素:数据结构,数据操作,数据的完整性约束条件。
数据库系统的三级模式结构:外模式(物理层面),模式(逻辑层面),内模式(视图层面)
数据库系统的三级模式提供的两层映像:外模式/模式(数据的逻辑独立性),
模式/内模式(数据的物理独立性)
4、概念模型(信息世界)
实体:客观存在并可相互区别的事物。实体之间的联系有一对一,一对多,多对多等
属性:关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性,n目关系必有n个属性。
码:唯一标识实体的属性集为码
域:一组具有相同数据类型的值的集合。
实体型:具有相同属性的实体必然具有共同的特征和性质。用实体名和属性名集合客户同类实体成为实体型。学生(学号,姓名,性别,生日)就是一个实体型
实体集:同一类型实体的集合称为实体集,全体学生就是一个实体集。
实体间的联系:1:1,1:n,n:m
5、常用的数据逻辑模型
?????? (1)根节点以外的结点有钱诶只有一个双亲结点,根节点没有双亲结点。
?????? (2)插入操作时,若没有相应的根节点则不能插入数据库。
?????? (3)删除一个节点,该结点的子女结点耶一起被删除了
层次模型可以认为是网状模型的一个特例。
关系:就是一张二维表。元组:二维表中的一行数据成为一个元组。
关系模型对数据的增删查改操作必须满足关系的完整性约束条件:实体完整性。参照完整性、用户自定义完整性。 、
关系模型的优点:
关系模型的缺点:
6、数据库系统的组成
?? (1)硬件平台和数据库
? ?(2)软件(DBMS、支持DBMS运行的操作系统、具有与数据库接口的高级语言及其编译系统、以DBMS为核心的应用开发工具
?? (3)人员(包括DBA数据管理员、系统分析员、数据库设计人员、应用程序员和最终用户)
第二章:关系数据库
1、关系数据库系统
是支持关系模型的数据库系统。关系模型的三要素:数据结构,数据操作,关系完整性约束。
1.1数据结构
域:是一组具有相同数据类型的值的集合。
笛卡尔积:域上的一种集合运算
元组:见下图
一个记录, 一个元组 |
属性 |
关系:笛卡尔积的子集称为关系。
候选码:关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
主码:若一个关系有多个候选码,则选定其中一个为主码
主属性:候选码的诸属性称为主属性
全码:最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
例子:一个元组(学号,姓名,性别,专业)其中学号,姓名为主码,则学号/姓名称主属性,单独学号是主属性不是主码。
关系的三种类型:基本关系(基本表),查询表,视图表
关系模式:关系模式是型,静态的稳定的;关系是值,关系模式是对关系的描述。关系是支出元组的集合,关系模式是支出这个远足的结构(它有哪些属性,属性来自哪些域,属性与域之间的关系)
关系模式可以表示为R (U, D, dom, F),R是关系名,U是组成该关系的属性名的集合,D是U中属性所来自的域,F是属性间数据的依赖关系集合。
1.2数据操作
1.3关系完整性约束
关系模型的三类完整性约束:实体完整性,参照完整性,用户定义完整性
实体完整性:主码中的属性即主属性不能取空值。
参照完整性:例子:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)学生关系引用了专业关系的主码,学生关系中专业号这一列的数值必须是专业关系中存在的数值或者空值。
用户定义完整性:例子:课程(课程号,课程名,学分)“课程号”属性必须取唯一值,非主属性“课程名”也不能取空值,“学分”属性只能取值{1,2,3,4}
外码:例子:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)
“学号”是学生实体的主码,“专业号”是外码,“专业号”是专业关系的主码,学生关系引用了专业关系的主码,学生关系称为“参照”,专业关系称为“被参照”。
例子:学生(学号,姓名,性别,专业号,年龄,他的班长)
?????? (801,张三,男, ?01 ,??? 10,??? 802)
其中“学号”是主码,“班长”是外码,他引用了本关系的“学号”,学生关系既是参照关系也是被参照关系。
本例的参照完整性规则表现是: “班长”属性值可以取两类值:
(1)空值,表示该学生所在班级尚未选出班长
(2)非空值,该值必须是本关系中某个元组的学号值
2、关系代数(传统的集合运算)
(1)并运算R∪S = { t|t ? R∨t ?S }(要求两个关系R,S都有n个属性)
(2)?差运算R -S = { t|t?R∧t?S }(要求两个关系R,S都有n个属性)
(3)交运算R∩S = { t|t ? R∧t ?S }(要求两个关系R,S都有n个属性)
(4)笛卡尔积R×S(不要求两个关系R,S都有n个属性)
列:(n+m)列元组的集合。元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:k1×k2个元组
(5)除R÷S
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X) P56页例子
(7)一些相关的运算定义
象集Zx:给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集为:Zx={t[Z] |t ?R,t[X]=x}它表示R中属性组X上值为x的诸元组在Z上分量的集合
3、选择,投影,连接,除(例2.9好好看)
1)选择:在关系R中选择满足给定条件的诸元组
2)投影:从R中选择出若干属性列组成新的关系,主要是从列的角度进行运算
a.自然连接:自然连接是一种特殊的等值连接。两个关系中进行比较的分量必须是同名(相同)的属性组。从行列的角度考虑。
b.等值连接:“=”的连接运算称为等值连接,从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接。从行的角度考虑。
例子,连接R和S ? ? 笛卡尔积
等值连接?为:
自然链接为
自然连接分为:外链接,做外链接,右外链接
第三章:关系数据库标准语言SQL
1、SQL的特点
? (1)综合统一:及数据库的易语言,数据操作语言,数据控制语言的功能于一体。可以独立完成数据生命周期中的全部活动:
?????? 定义和修改,删除关系模式,定义和删除视图,插入数据,建立数据库。
?????? 对数据库中的数据进行查询和更新。
?????? 数据库重构和维护。
?????? 数据库安全性,完整性控制,以及事务控制。
?????? 嵌入式SQL和动态SQL定义。
? (2)高度非过程化:只需要提出SQL“做什么”,无需指明“怎么做”,因此无需了解存储路径。
?????? (3)面向集合的操作方式:操作对象,查找结果可以是元组的集合,一次可以插入一整个元组。
?????? (4)以同一种语法结构提供多种使用方式:SQL是独立语言,独立用于联机交互的使用方式;SQL也是嵌入式语言,SQL语句能够嵌入到其他高级语言(c,c#)程序中。
?????? (5)语言简洁,易学易用:SQL的核心动词只有9个如下。
SQL功能 | 动词 |
数据查询 | SELECT |
数据定义 | CREATE,DROP,ALTER |
数据操纵 | INSERT,UPDATE,DELETE |
数据控制 | GREANT,REVOKE |
2、SQL基本概念
? ? ?
外模式=视图+部分基本表;模式=基本表;内模式=存储文件
基本表:本身独立存在的表,一个关系对因一个基本表,基本表和视图都是关系。
视? 图:从一个或者几个基本表中导出的表,本身不是独立存在的,数据库中是存放视图的定义,视图的数据存放在基本表中,是一个虚表。用户可以在视图上在定义视图。
存储文件:由一个或多个基本表的,是对用户隐蔽的。
3、数据定义
注意:(1)SQL不提供修改模式定义和修改视图定义的操作,如果要修改模式和视图只能删除原有的模式和视图重新创建。
?????? (2)一个关系数据库管理系统的实例可以创建多个数据库,一个数据库中可以建立多个模式,一个模式下可以包含多个表,视图和索引等数据库对象。
?????? (3)相同名称的表放在不同的模式下可以。
3.1模式的定义与删除
定义模式:
CREATE SCHEMA <模式名>AUTHORIZATION<用户名>
没有模式名默认为用户名。
删除模式:
DROP SCHEMA<模式名<CASCADE|RESTRICT>
其中,CASCADE和RESTRICT必须选择其中一个。CASCADE表示级联,删除模式的同时把该模式中的所有其他数据库对象全部删除,RESTRICT表示限制,如果该模式中定义了下属的数据库对象如表和视图等,则拒绝执行删除该模式,只有当模式中没有其他下属数据库对象时才能执行删除语句。
3.2基本表的定义,删除和修改
定义基本表:
修改基本表: 、
删除基本表:
3.3索引的建立和删除
创建索引:
其中次序有升序(ASC)和降序(DESC);UNIQUE表示此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示索引。
修改索引:
ALTER INDEX<旧索引名>RENAME TO<新索引名>
例如:ALTER INDEX SCON RENAME TOSCON;
删除索引:
Drop index<索引名>;
4、数据查询
(1)先根据where子句的条件表达式从from制定的基本表中选择满足条件的元组,再按select子句中的目标列表达式选出远足的属性值形成结果表。
(2)如果有group by子句,将结果按<列名1>进行分组,该属性列值相等的为一组,如果跟有having语句则只输出满足having语句指定条件的结果。
(3)order by是最后执行的,将输出结果安札破升序和降序的方法输出。
4.1单表查询
Select Sname,2014-sage from student;——select子句可以是表达式。
Select “year of birth”, lower(Sdept), ?from student;——“year of birth”是一个列名,lower(Sdept)表示按照小写格式输出,select子句还可以是字符串和常量。
4.2查询方式
(1)消除重复的行:select distinct sno from SC;
(2)确定查询范围:between 下限 and 上限 ????not between 下限 and 上限
(3)确定集合:in和not in? select sno from SC where sdept in(‘CS’,’MA’,’IS’)
字符串匹配:link
% | 表示任意长度(程度可以为0)的字符串 |
_下划线 | 表示任意单个字符 |
escape\ | 转换码字符跟在后面的字符不再具有通配符的含义 |
?????? Select sname from student where sname link ‘刘%’;——查找姓刘的学生的姓名
Select course from student where course link ‘DB\_%i_ _’;
——查找DB_开头的到户第三个字符为i的课程
(4)涉及空值的查询:
(5)多重条件查询:
(6)order by子句:将查询结果按照升序(ASC)或者降序(DESC)排列,默认是升序
Select * from student order by sdept,sage desc;?? ——查询全体学生的情况,查询结果按所在系的系号升序排列,一个系的学生按照年龄降序排列。
对于空值排序时显示的次序具体由系统决定。
(7)有聚集函数的查询
聚集函数只能在select子句和group by having的子句中,不能出现在where子句中。
当聚集函数遇到空值时,除了count(*)外,其余都跳过空值而只处理非空值。count(*)是对元组进行计数,某个元组的一部分是空值不影响统计结果。
(8)group by子句的查询
Group by 将查询结果按某一列的值分组,值相等的为一组分,分组后聚集函数将作用在每一组。
Select cno,count(sno)form SC group by cno; 计算出每一个课程号的选课人数。
Select sno from SC group by sno having count(*)>3选出选了3门课以上的学生的学号
分组前的筛选条件用where;分组后的条件用having。
4.3连接查询——涉及多个表
(1)等值与非等值连接查询
连接条件(连接谓词):table1.col1 <=,>,<,!=,>=,<=> table2.col2
table1.col1 between table2.col2 and table2.col3
当连接运算符为=时称等值连接,其他符号为非等值连接。各列名称类型必须是可比的。
查询所以显示选修课情况:
(2)自身连接
一个表与自己进行连接称为自身连接
(3)外连接
查询每个学生选修课情况:
左外连接列出student表中的所有元组不管SC表中是不是空值,右外连接列出右边关系中的元组不管student表中是不是空值
(4)多表连接:两个及以上的表进行连接,
4.4嵌套查询
查询块:一个完整的select—from—where称为一个查询块,将一个查询块的where子句或having短语的条件中的查询称为嵌套查询。
SQL语言允许多层嵌套语句,一个子查询可以嵌套其他子查询。
不相关子查询:子查询的查询条件不依赖父查询。
相关子查询:子查询的查询条件依赖父查询。
(1)带有in的子查询
(2)带有运算比较符的子查询
只想过程如下:
第一步
第二步:
第三步
第四步:
(3)带有any some或all的子查询
使用any或者all的时候都必须使用比较运算符
(4)带有exist的子查询
所有带有in 比较运算符,any或者all的子查询都能用带有exist的子查询等价替换。
带有exist两次的香瓜子查询只关心内层查询是否有返回值
4.5集合查询
Union:两集合的并集操作。
Intersect:两集合的交集操作。 ??
Except:两集合的差集操作。
4.6基于派生表的查询
4.6 select语句的一般形式
5、数据更新
5.1插入数据
插入元组:insert into table(sno,sname,sdept)values(‘2007’,‘小红’,‘CS’);
插入子查询结果:
5.2修改数据
Update table set 列名=表达式,列名2=表达式2? where 条件;
修改某一个元组的值:
修改多个元组的值:
带子查询的修改语句:
5.3删除数据
Delete from table where 条件;
6、空值的处理
7、视图
7.1建立一个视图
? ?
7.2删除视图
Drop view IS_S1 cascade;
7.3查询视图
对视图的查询 |
对基表的查询 |
视图消解 |
7.4更新视图
8、视图的作用
第四章:数据库安全性概述
三类计算机系统安全性问题:技术安全类,管理安全类,政策法律类
计算机以及信息安全技术的安全标准:TCESC和CC标准。
目前CC标准已经取代了TCESC标准,其中TCSEC标准在1991年定义了对数据库系统管理的安全性级别评估。
4个方面描述安全等级:安全策略、责任、保证和文档。
1、数据库的安全性控制
1.1 用户标识与鉴别
口令(动态口令和静态口令,生物特征鉴别,智能卡鉴别)系统核对口令以鉴别用户身份
用户名和口令易被窃取:每个用户预先约定好一个计算过程或者函数。
1.2 存取控制
常用存取控制方法
自主存取控制(Discretionary Access Control ,简称DAC)C2级 灵活
强制存取控制(Mandatory Access Control,简称 MAC)? B1级 严格
1.3 自主存取控制方法
自主存取控制方式:通过 SQL 的 GRANT 语句和 REVOKE 语句实现
用户权限组成:数据对象和操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作,称为权限。
1.4 授权与回收
授权
不允许循环授权
回收
1.5 数据库角色
数据库角色:被命名的一组与数据库操作相关的权限,角色是权限的集合,可以为一组具有相同权限的用户创建一个角色,简化授权的过程。
角色的创建
CREATE? ROLE? <角色名>
给角色授权
?GRANT? <权限>[,<权限>]…
?ON <对象类型>对象名?
?TO <角色>[,<角色>]…
将一个角色授予其他的角色或用户
GRANT? <角色1>[,<角色2>]…
TO? <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]… ?
1.6 强制存取控制方法
可能存在数据的“无意泄露”。原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略
2、视图机制
3、审计
审计日志(Audit Log):将用户对数据库的所有操作记录在上面
DBA利用审计日志找出非法存取数据的人、时间和内容。
安全级别在C2以上安全级别的DBMS必须具有。
AUDIT语句:设置审计功能。NOAUDIT语句:取消审计功能
第五章:数据库完整性
1、数据库完整性定义
数据的完整性和安全性是两个不同概念
数据的完整性:防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。防范对象:不合语义的、不正确的数据
数据的安全性:保护数据库防止恶意的破坏和非法的存取。防范对象:非法用户和非法操作
2? 实体完整性
关系模型的实体完整性是指CREATE? TABLE中用PRIMARY KEY定义
单属性构成的码有两种说明方法 :定义为列级约束条件;定义为表级约束条件
对多个属性构成的码只有一种说明方法:定义为表级约束条件
实体完整性检查和违约处理:
1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改
2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
(表的插入和修改操作需要检查实体完整性,删除操作不需要检查实体完整性)。
?3? 参照完整性
关系模型的参照完整性定义
在CREATE? TABLE中用FOREIGN KEY短语定义哪些列为外码
用REFERENCES短语指明这些外码参照哪些表的主码
参照完整性检查和违约处理:
4? 用户定义的完整性
用户定义的完整性:针对某一具体应用的数据必须满足的语义要求
4.1 属性上的约束条件的定义
CREATE TABLE时定义
列值非空(NOT NULL)? 列值唯一(UNIQUE)
检查列值是否满足一个布尔表达式(CHECK)
4.2 属性上的约束条件检查和违约处理
插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。
4.2 元组上的约束条件的定义
在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制
同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件
元组上的约束条件检查和违约处理;
插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。
5? 完整性约束命名字句
6? 域中的完整性限制
7? 触发器
触发器的概念:建立(附着)在某个关系(基表)上的一系列能由系统自动执行对数据库修改得SQL语句的集合即程序,并且经过预编译之后存储在数据库中。
第六章:关系数据库理论·
1、相关概念
名词 | 定义 | 说明 |
关系 | 一张二维表 | |
关系模式 | 二维表的结构, R(U, D, DOM, F) | R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM: 属性向域的映象集合 F:属性间数据的依赖关系集合 |
函数依赖 | X函数确定Y即X→Y | 一个X对应一个Y |
多值依赖 | 一个X对应多个Y,函数依赖是多值依赖的特例 | |
非平凡函数依赖 | (Sno, Cno) → Grade | |
平凡函数依赖 | (Sno, Cno) → Sno | |
完全函数依赖 | (Sno,Cno)→Grade | Grade由Sno,Cno共同确定 |
不完全函数依赖 | (Sno,Cno)→Sdept | Sdept可以直接由Sno确定 |
传递函数依赖 | 在关系Std(Sno, Sdept, Mname)中,有:Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno | |
候选码 | K→U,则K称为R的侯选码 | |
主码 | 若候选码多于一个,则选定其中的一个做为主码 | |
外码 | 如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码 | |
主属性 | 包含在任何一个候选码中的属性 ,称为主属性 |
范式:
范式 | 条件 |
第一范式(1NF) | 一个关系模式R的所有属性都是不可分的基本数据项 |
第二范式(2NF) | 满足函数依赖 去掉部分函数依赖 |
第三范式(3NF) | 去掉部分函数依赖 去掉传递依赖 |
BC范式(BCNF) | 每一个决定属性因素都包含码 |
第四范式(4NF) | 不允许有非平凡且非函数依赖的多值依赖 |
Armstrong公理:
关系模式R <U,F >来说有以下的推理规则:
这三条推理规则可以得到下面三条推理规则:
?????? (A2, A3)
?????? (A2, A3)
?????? (A1, A3)
闭包:X íU, XF+ ={ A|X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包
最小依赖集:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
?? ?(1) F中任一函数依赖的右部仅含有一个属性。
??? (2) F中不存在这样的函数依赖X→A使得F与F-{X→A}等价。F与去掉他的一个函数依赖剩下的F’等价
??? (3) F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
第七章:数据库设计
第十章:数据库恢复技术
1? 事务的基本概念
事务是数据库恢复和并发的基本单位
事务的定义:
事务的特性ACID特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)
持续性(Durability )
2? 故障的种类
数据库故障:
故障类型 | 说明 | 恢复方法 |
事物内部故障 | 事务内部更多的故障是非预期的,是不能由应用程序处理的。 | 撤消事务(UNDO) |
系统故障 | 称为软故障,是指造成系统停止运转的任何事件,使得 系统要重新启动 | 发生系统故障时,事务未提交恢复策略:强行撤消(UNDO)所有未完成事务 |
发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。恢复策略:重做(REDO)所有已提交的事务 | ||
介质故障 | 称为硬故障,指外存故障 磁盘损坏,磁头碰撞,操作系统的某种潜在错误,瞬时强磁场干扰 | 事物内部和系统故障不会破坏数据库,而介质故障回损坏数据库。 |
计算机病毒 | 一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序 | 是引起故障的原因 |
3? 恢复的实现技术
(1)数据转储:转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用的数据称为后备副本或后援副本
转储方式 | 说明 |
静态转储 | 在系统中无运行事务时进行的转储操作 转储开始时数据库处于一致性状态 转储期间不允许对数据库的任何存取、修改活动 得到的一定是一个数据一致性的副本 优点:实现简单 缺点:降低了数据库的可用性,转储必须等待正运行的用户事务结束,新的事务必须等转储结束 |
动态转储 | 转储操作与用户事务并发进行 转储期间允许对数据库进行存取或修改 优点:不用等待正在运行的用户事务结束,不会影响新事务的运行 动态转储的缺点:不能保证副本中的数据正确有效 |
海量转储 | 每次转储全部数据库 |
增量转储 | 只转储上次转储后更新过的数据 |
(2)日志文件:日志文件(log)是用来记录事务对数据库的更新操作的文件
分类 | 内容 |
以记录为单位的日志文件 | 各个事务的开始标记(BEGIN TRANSACTION) 各个事务的结束标记(COMMIT或ROLLBACK) 各个事务的所有更新操作 (作为一条日记) |
以数据块为单位的日志文件 | 事务标识(标明是那个事务) 被更新的数据块 (作为一条日记) |
登记日记的原则:登记的次序严格按并行事务执行的时间次序。
必须先写日志文件,后写数据库。
4? 恢复策略
类型 | 发生情况 | 回复策略 |
事务故障的恢复 | 事务在运行至正常终止点前被终止, | 由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改 |
系统故障的恢复 | 未完成事务对数据库的更新已写入数据库 已提交事务对数据库的更新还留在缓冲区没来得及写入数据库 | 1. Undo 故障发生时未完成的事务 2. Redo 已完成的事务 |
介质故障的恢复 | 1.重装数据库 2.重做已完成的事务 |
5? 具有检查点的恢复技术
检查点记录的内容
1. 建立检查点时刻所有正在执行的事务清单
2. 这些事务最近一个日志记录的地址
重新开始文件的内容:记录各个检查点记录在日志文件中的地址
动态维护日志文件的方法
周期性地执行如下操作:建立检查点,保存数据库状态。
具体步骤是:
恢复子系统可以定期或不定期地建立检查点,保存数据库状态 :
(1)定期:按照预定的一个时间间隔,如每隔一小时建立一个检查点
(2)不定期:按照某种规则,如日志文件已写满一半建立一个检查点
6? 数据库镜像
DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上
DBMS自动保证镜像数据与主数据库的一致性,每当主数据库更新时,DBMS自动把更新后的数据复制过去(如下图所示)
第十一章:并发控制
1、并发控制概述
(1)多用户数据系统:允许多个用户同时使用的数据库系统
(2)事务执行的方式:事务串行执行,交叉并发执行,同时并发执行。
(3)并发控制机制的任务:对并发操作进行正确调度;保证事务的隔离性
保证数据库的一致性
(4)并发操作带来的数据不一致性:丢失修改;不可重复读;读“脏”数据。
丢失修改 | T1和T2读入同一数据并修改 |
不可重复读 | 事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果 |
读“脏”数据。 | 事务T1修改某一数据,并将其写回磁盘 事务T2读取同一数据后,T1由于某种原因被撤销 这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致 T2读到的数据就为“脏”数据,即不正确的数据 |
(5)并发控制的主要技术有:封锁,时间戳,乐观控制法,多版本并发控制。
2、封锁
定义:封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁,加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。
3、活锁和死锁
活锁:事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待,T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁。
解决活锁的简单方法是采用先来先服务的策略。
死锁:
处理方式 | 分类 | 内容 |
预防死锁的方法 | 一次封锁法 | 要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行 |
顺序封锁法 | 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁 | |
诊断解除死锁的方法- | 超时法 | 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁 |
事务等待图发 | 判断出事务T1等待T2,T2等待T1,产生了死锁 |
解除死锁的方法:选择一个处理死锁代价最小的事务,将其撤消,
释放此事务持有的所有的锁,使其它事务能继续运行下去。
4、并发调度的可串行性
可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同
(并发调度的结果与串行调度的结果相同则认为并发调度是正确的,也成为了可串行调度)、
冲突操作:不同的事务对同一个数据的读写操作和写写操作。
冲突可串行调度:一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc‘,如果Sc’是串行的,称调度Sc为冲突可串行化的调度
并发调度 |
可串行化 调度 |
冲突可串行化调 |
5、两段锁协议
遵循两段所协议的锁哥事务调度一定是可串行化调度
6、封锁粒度
封锁对象的大小称为封锁粒度(Granularity)
封锁的对象:逻辑单元,物理单元
多粒度封锁:对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁
7、意向锁
数据库的存储结构:数据库在磁盘上以文件为单位进行存储,
主数据文件(mdf)只能有一个,
辅助数据文件(ndf),存储剩余数据,可以多个
日志文件(ldf),。记录增删查改的操作,只有一个
文件组:日志文件不属于任何一个文件组,一个文件组包含多个文件
数据库命名规则:
第一个字符必须是字母,下划线,@,#
数据库名称不能是T-SQL的保留字
不允许迁入空格或者其他特殊字符
数据库的分类:
系统数据库:用于管理用户数据库,master存储所有数据库的信息,用户信息等。model模板数据库。msdb:代理作业,数据库的还原,备份。 tempbd临时数据库 ?resource数据库:隐藏的,只读的数据库。
用户数据库
SQL语句创建数据库
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/6 17:10:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |