数据库基础笔记(二)

接上篇

文章目录

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. i n : 使 用 , 但 不 更 改 in: 使用,但不更改 in:使,
    2. o u t : 相 当 于 C 引 用 out: 相当于C引用 out:C
    3. i n o u t : 都 有 inout: 都有 inout:
  • 声明:
create procedure 名字 (<参量类型> <参量名>) --多个参量用逗号隔开
    <变量声明>
    <操作>; -- 常规sql语句select-from-where之类
  • invoke: call 存储过程名(实参)
  • 语法:判断,循环,指针,return
    • 判断: i f . . t h e n . . e l s e i f . . t h e n . . e l s e . . e n d i f ; if..then..elseif..then..else..end\quad if; if..then..elseif..then..else..endif;,总之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:调度
    • 四种方式: { s e r i a l s c h e d u l e : 串 行 化 调 度 , 事 物 之 间 没 有 交 错 执 行 的 部 分 , 按 顺 序 一 个 一 个 来 s e r i a l i z a b l e s c h e d u l e : 可 串 行 化 调 度 , 调 度 结 果 与 某 个 串 行 调 度 执 行 结 果 等 价 A C R : a v o i d c a s c a t i n g r o l l b a c k : 避 免 级 联 回 滚 : 事 物 仅 读 已 经 提 交 事 务 修 改 的 数 据 s t r i c t : 事 物 写 入 的 值 在 其 c o m m i t 之 前 没 有 其 他 事 物 读 或 写 \begin{cases} serial\quad schedule:串行化调度,事物之间没有交错执行的部分,按顺序一个一个来\\ serializable\quad schedule:可串行化调度,调度结果与某个串行调度执行结果等价\\ ACR:avoid\quad cascating\quad rollback:避免级联回滚:事物仅读已经提交事务修改的数据\\ strict:事物写入的值在其commit之前没有其他事物读或写 \end{cases} serialschedule:,,serializableschedule:,ACR:avoidcascatingrollback::strict:commit

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

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

冲突等价conflict equivalent定义

  • conflict equivalent: S 1 可 以 通 过 非 冲 突 事 物 交 换 转 换 为 S 2 S_1可以通过非冲突事物交换转换为S_2 S1S2

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

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

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

  • 符号: 加 锁 : L i ( A ) ; 解 锁 : U i ( A ) 加锁:L_i(A);\quad 解锁:U_i(A) :Li(A);:Ui(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),加上之后其他事物不可加排他锁 S(A),
    • 排他锁: X ( A ) , 仅 允 许 本 事 物 操 作 数 据 , 其 他 食 物 不 能 加 锁 不 能 操 作 X(A),仅允许本事物操作数据,其他食物不能加锁不能操作 X(A),,
  • 3个法则
    1. well-formed
    2. legal: 共享锁上锁期间不允许其他事物加排他锁,排他锁上锁期间不允许其他事物上锁
    3. 对于更新操作:如果操作后锁的数量比原来多,则不允许更新;否则可以更新

increment lock和update lock描述,符号

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

锁的兼容性

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 > S I X > ( I X = S ) > I S 锁的强度: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 定 义 : 对 一 个 事 物 集 的 两 个 调 度 S 1 , S 2 : 如 果 对 于 每 个 数 据 项 : { 事 物 在 S 1 中 读 取 其 初 值 , 则 在 S 2 中 也 读 取 其 初 值 事 物 在 S 1 中 对 由 T x 产 生 的 值 执 行 r e a d , 则 在 S 2 中 也 对 T x 产 生 的 值 r e a d S 1 中 有 事 物 执 行 了 最 后 的 w r i t e ( Q ) , S 2 中 该 事 物 也 必 须 执 行 最 后 的 w r i t e ( 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} :S1,S2::S1,S2S1Txread,S2TxreadS1write(Q),S2write(Q)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值