数据库基础笔记(二)

。_饼干妹妹 提交于 2020-02-20 13:06:48

接上篇

文章目录

10 transaction-view-index事物-视图-索引: transaction定义,ACID,导致事物结束的两种情况:commit,rollback/回滚rollback:导致回滚的情况,解决方法/sql4个隔离层级isolated level,选择/事物序列化的定义,操作/view的定义,种类,声明,结合触发器的视图,基表更改引起实例化视图更改问题以及解决方法/index索引定义,声明,使用索引优化数据库查询tuning的优点,缺点

transaction定义,ACID,commit

  • transaction事物: 在数据库上进行的查询或修改操作
  • ACID: 事物的4个基本特点:原子,一致,隔离,持久
    1. Atomic: Whole transaction or none is done.要么发生要么不发生
    2. Consistant: constraints preserved. 约束保持良好,前后不变化
    3. Isolated:it appears to the user as if only one process execute at a time.
    4. Durable: 事物一旦提交,其对数据的改变不可更改
  • 导致事物结束的两种情况:
    • commit: sql通过commit提交事务对数据的操作,导致事务完成
    • roll back

roll back:导致回滚的情况,解决方法

  • 导致回滚的情况:被0除,违反约束,程序员弄的
  • 解决回滚带来的数据混乱: 用commit代替rollback,在commit之前,其他人无法看到其效果

sql4个隔离层级isolated level,选择

  • 四个级别:
    • read uncommited: 未提交读
    • read commited: 提交读
    • repeatable read: 重复读
    • serializable: 序列化
  • 选择: 自己选

视图的定义,两种类别,声明,结合触发器的视图,视图实例化,基表更改引起实例化视图更改问题的解决方法

  • view的2种类别
    • virtual,不可修改,因为它不存在
    • Materialized
  • 声明:
create [种类] view <名字> as <操作(select from where之类)> -- 种类默认是虚的
  • 结合触发器的视图
    可以通过instead of触发器来对虚拟视图进行修改,instead of insert on 视图,XXXXX(操作)
  • 基表更改引起实例化视图更改问题以及解决方法
    解决: 定时更新视图

index索引定义,声明,使用索引优化数据库查询tuning的优点,缺点

  • index: 加速查询,哈希表或B-树
  • 声明: create 索引名 on 表名(列名);多个列名括号内用逗号隔开
  • 使用索引优化数据库查询tuning的优点,缺点
    • 优点: 加快查询sppeed up query
    • 缺点: slow down all modifications on relation(因为索引也需要随之更新)

11 psm持久型存储模块(存储过程),pl与sql: psm定义,参量的三种类型,声明,invoke调用,语法:判断,循环,指针,return/动态SQL声明,调用

psm定义,参量,声明,invoke,3个基本种类及作用,语法:判断,循环,指针

  • PSM持久型存储模块(存储过程)参量3种类型:
    1. in:使,in: 使用,但不更改
    2. out:Cout: 相当于C引用
    3. inout:inout: 都有
  • 声明:
create procedure 名字 (<参量类型> <参量名>) --多个参量用逗号隔开
    <变量声明>
    <操作>; -- 常规sql语句select-from-where之类
  • invoke: call 存储过程名(实参)
  • 语法:判断,循环,指针,return
    • 判断: if..then..elseif..then..else..endif;if..then..elseif..then..else..end\quad if;,总之end if之前一定是else
    • 循环:
    循环名字:Loop
        循环内操作;
        leave 循环名; -- 跳出条件
    end Loop;
    
    while<条件>
    do <操作>
    end while;
    
    repeat <操作>
    until<条件>
    end repeat;
    
    • 指针: create 指针名 cursor for <查询>
      • 使用: open 指针名
      • 关闭: close指针名
    • return:并不代表结束,只是return

动态SQL的声明,调用

  • 声明:
exec sql prepare 名字 from <sql语句>;
  • 调用:
exec sql execute 名字;

12 grant授权: 语法:授权(操作权限,授权权限),撤销授权revoke,撤销授权的两种选项/授权图的点,边,AP,P*,P**,授权规则,撤销授权规则

语法:授权(操作权限,授权权限),撤销授权(操作权撤销,授权权撤销),撤销授权的两种选项

  • 授权
    • 操作权: grant <操作列表> on <需要操作的对象> to <被授权者>
    • 授权权: 既可以操作,又可以授权,在操作权授权后加 with grant option
--举个例子
grant select,update
on Sell
to Sally;
  • 撤销授权
    • 语法: revoke <操作列表> on <需要操作的对象> from <被撤销授权的人>
  • 撤销授权的两种形式
    • cascade级联: 权限被撤销,则由该用户授权的所有其他用户的权限也撤销,不管传得有多远
    • restrict限制: 如果被撤销授权的用户还对其他用户授权了,则不能撤销对他的授权并弹出警告

授权图的点,边,AP,P*,P**,授权规则,撤销授权规则

  • 点: 圆,(被)授权对象\权限
    • 只要不同权限,哪怕在同一数据上操作,都是两个不同节点
  • 边: 授权者指向被授权者
  • AP: 用户A有P权
  • P*: P的授权权
  • P** :P权本权(包含授权权)
  • 授权规则: A把P权(或P*权,代表有授权权)授予B,就用一个实线箭头指向B
  • 撤销授权: 注意是否是级联,是则无法撤销.每个节点都必须有到相应P**的路径,否则把它删掉

13 concurrency 并发控制: 基本概念:transaction事物,conflicting action冲突行为的种类,schedule调度,调度的4种方式/并发事务运行存在的3个异常/冲突等价conflict equivalent的定义/precedence graph符号表示,前驱图的节点,边,两个定理/(一级)加锁解锁协议:符号,legal schedule合法调度和well-formed调度/2PL两阶段锁协议描述,避免数据出错的其他4种方法(共享锁,多粒度,插入删除,其他机制),共享锁和排他锁描述,3个法则(well-formed,legal,upgrade变化问题)/increment lock增量锁和update lock的描述,符号/锁的兼容性/系统一个解决并发多用户加解锁问题的方法/多粒度封锁granularity:多粒度封锁描述,锁的类型((主要是意向锁:)IS,IX,SIX),6个规则,兼容性,加锁对象上允许再加的其他锁/pehantom数据重影定义,解决方法

基本概念:transaction,conflicting action的种类,schedule,调度的四种方式

  • transaction:事物,(狭义)读写行为
  • conflicting action:
    1. 同一事物的读r和写w
    2. 不同事物对同一元素的w
    3. 不同事物对同一元素一个r一个w
  • schedule:调度
    • 四种方式: {serialschedule:,,serializableschedule:,ACR:avoidcascatingrollback::strict:commit\begin{cases} serial\quad schedule:串行化调度,事物之间没有交错执行的部分,按顺序一个一个来\\ serializable\quad schedule:可串行化调度,调度结果与某个串行调度执行结果等价\\ ACR:avoid\quad cascating\quad rollback:避免级联回滚:事物仅读已经提交事务修改的数据\\ strict:事物写入的值在其commit之前没有其他事物读或写 \end{cases}

并发事务运行存在的3个异常

  1. 丢失修改
  2. 不可重复读
  3. 读脏数据

冲突等价conflict equivalent定义

  • conflict equivalent: S1S2S_1可以通过非冲突事物交换转换为S_2

precedence graph前驱图的符号表示,节点,边,两个定理

  • 符号:P(S)SP(S) --------S是调度序列
  • 节点: S中的事物
  • 边: 先执行指向后执行
  • 两个定理:
    1. 冲突等价的事物前驱图相同,反之不成立
    2. 有环<=>冲突可序列化

加解锁协议:符号,legal schedule和well-formed

  • 符号::Li(A);:Ui(A)加锁:L_i(A);\quad 解锁:U_i(A)
  • well-formed: 同一事物对同一数据的所有操作在锁内执行
  • legal schedual: 数据被某事物锁了的时间内不允许其他事物来上锁

2PL:描述,避免数据出错的其他4种方法(共享锁,多粒度,插入删除,其他机制),共享锁和排他锁描述,3个法则(well-formed,legal,upgrade变化问题)

  • 描述:事物运行完所有工作之前不允许解锁
  • 避免数据出错的其他4种方法: 共享锁shared lock,multiple granularity,insert delete phantom,other types of C
  • 共享锁和排他锁:
    • 共享锁: S(A),S(A),加上之后其他事物不可加排他锁
    • 排他锁: X(A),,X(A),仅允许本事物操作数据,其他食物不能加锁不能操作
  • 3个法则
    1. well-formed
    2. legal: 共享锁上锁期间不允许其他事物加排他锁,排他锁上锁期间不允许其他事物上锁
    3. 对于更新操作:如果操作后锁的数量比原来多,则不允许更新;否则可以更新

increment lock和update lock描述,符号

  • increment lock:INi(A)IN_i(A)
  • update lock:意向锁,以II开头,意向读,意向写

锁的兼容性

X均不兼容,共享锁与意向锁兼容本身
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0IhrI5V2-1582017850802)(2020-01-13-01-02-44.png)]

系统一个解决并发多用户加解锁问题的方法

don’t trust transactions’ requests of locks, system hold all locks until transaction commits

多粒度封锁granularity:多粒度封锁描述,锁的类型((主要是意向锁:)IS,IX,SIX),6个规则,兼容性,加锁对象上允许再加的其他锁

  • granularity: 封锁对象的大小称封锁粒度,譬如一张表,一个属性啥的
  • 锁的类型: :X>SIX>(IX=S)>IS锁的强度:X>SIX>(IX=S)> IS
    • IS: 意向共享
    • IX: 意向排他
    • SIX: 共享意向排他
  • 6个规则:
    1. 遵循粒度强度
    2. 先锁根节点
    3. 上共享或意向共享(S\IS)锁之前必须有某个父节点被上了意向锁(共享排他都可以)
    4. 上X,IX,SIX之前必须有某个父节点被上了IX\SIX
    5. 事物满足2PL
    6. 某事物给节点解锁的条件是其子节点被该事物锁了
  • 兼容性
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oN4mZU6T-1582017850804)(2020-01-13-01-19-18.png)]
  • 加锁对象上允许再加的其他锁
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDmjV9h7-1582017850806)(2020-01-13-01-19-55.png)]

pehantom数据重影定义,解决方法

  • pehantom: 多用户并发执行操作之后同一数据有了不同的值
  • 解决: use multiple pehantom tree, before insert of node Q,lock Q’s parent

14 tp: 事务结束的两种情况/可恢复调度,避免级联回滚的概念/死锁的检测,4个避免方法

事务结束的两种情况

  • commit
  • abort:会回滚

可恢复调度,避免级联回滚的概念

见13

死锁的检测,4个避免方法

  • 死锁的检测: wait-for graph,指向请求
  • 死锁避免的4个方法
    1. resource ordering
    2. timeout
    3. wait-die:请求资源的进程只能等待固定时间,不然就die
    4. Wound-wait

15 view serializability视图可串行化: 视图等价,视图可串行化定义,定理,判断方法

view equivalent,view serialiability定义,定理,判断方法

  • view equivalent{::=>,:使,,\begin{cases} 定义: 调度视图等价于一个串行调度\\ 定理: 冲突可串行化=>视图可串行化,反之不对\\ 判断方法:使用代表及的优先图,只要有一个优先图无环,调度是视图可串行化 \end{cases}
  • view equivalent:S1,S2::{S1,S2S1Txread,S2TxreadS1write(Q),S2write(Q)定义:对一个事物集的两个调度S_1,S_2:如果对于每个数据项:\begin{cases} 事物在S_1中读取其初值,则在S_2中也读取其初值\\ 事物在S_1中对由T_x产生的值执行read,则在S_2中也对T_x产生的值read\\ S_1中有事物执行了最后的write(Q),S_2中该事物也必须执行最后的write(Q) \end{cases}

21 xml可扩展标记语言: xml概念,两种类型,结构/DTD概念,结构,元素,用法,属性/ID和IDREF/XML例子

xml概念,两种类型

  • xml:可扩展标记语言,标记电子文件使其具有某种结构
  • xml两种类型
    • well-formed:可以自定义标签(invent own tag)
    • valid:必须符合一个标准模式(conform a certain DTD)
  • 结构: 开头结尾被"<…xml…></…xml…>"修饰,中间用其他标签修饰

DTD概念,结构,元素,用法,属性

  • DTD: 文档类型定义,声明于xml中
  • 结构:
<!DOCTYPE <root tag>[
    <!ELEMENT <NAME>(<components>)>
    ...其他elements....
]>

22 olap: data warehouse,olap,oltp,data mining/star schema的两个组成部分(事实表,维表)/cube的drill-down和roll-up操作

data warehouse,olap,oltp,data minging

  • data warehouse: 数据仓库
  • OLAP: 联机分析处理,探索挖掘数据价值作为决策参考
  • OLTP: 联机事务处理,一线业务操作
  • data minging: 数据挖掘

star schema的两个组成部分

  • 描述: 事实表被维表包围,维表主键关联事实表外键,一个粒度一个维度
  • fact table: 一张
  • demension table: 不同维度之间互不关联
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZahKW3ji-1582017918657)(2020-01-13-02-32-15.png)]

cube的drill-down和roll-up操作

  • drill-down: 向下钻取,“拆分group by”
  • roll-up: 向上钻取,合并

24 distributed分布式数据库: 优点,问题

分布式数据库优点

模块化,容错,高性能,数据共享,低内耗
modularity,fault tolerance,high performance,data sharing,low cost components

分布式数据库解决的问题

数据分配,并行,并发与恢复,异质性
data distribution,exploiting parallelism,concurrency and recovery,heterogeneity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!