【Slides_14】Transaction Management/Concurrency Control Overview 事务处理/并发控制概览
提交 :用于永久保存工作。
回滚 :用于撤消已完成的工作。
事务具有四个属性,这些用于在事务之前和之后维护数据库的一致性。
事务属性
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
【Slides_15】Recovery 恢复(回滚)机制
【Slides_16】Timestamp Protocol 时间戳协议
并发控制
所谓事务,是指用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
数据并发性意味着多个用户可以同时访问数据。
事务是并发控制的基本单位,保证事务ACID特性是事务处理的重要任务。
并发控制的主要技术有封锁(Locking)、时间戳(Timestamp)和乐观控制法,商用的DBMS一般都采用封锁方法。
封锁
在这种类型的协议中,任何事务在获取适当的锁之前都无法读取或写入数据。 锁有两种类型:
1.共享锁:
- 它也称为只读锁。 在共享锁中,数据项只能由事务读取。
- 它可以在事务之间共享,因为当事务持有锁时,它无法更新数据项上的数据。
2.独占锁:
- 在独占锁中,数据项既可以是读取,也可以是事务写入。
- 这种锁是独占的,在此锁中,多个事务不会同时修改相同的数据。
有四种类型的锁定协议可用:
1. 简单的锁定协议
这是在事务时锁定数据的最简单方法。简单的基于锁的协议允许所有事务在插入或删除或更新数据之前锁定数据。 它将在完成交易后解锁数据项。
2.预先声明锁定协议
- 预先声明锁定协议评估事务以列出它们需要锁定的所有数据项。
- 在开始执行事务之前,它会请求DBMS对所有这些数据项进行所有锁定。
- 如果授予所有锁定,则此协议允许事务开始。 当事务完成后,它会释放所有锁。
- 如果未授予所有锁定,则此协议允许事务回滚并等待,直到授予所有锁定。
3.两阶段锁定(2PL)
- 两阶段锁定协议将事务的执行阶段分为三个部分。
- 在第一部分中,当事务的执行开始时,它寻求对它所需的锁的许可。
- 在第二部分中,事务获取所有锁。 一旦事务发布第一个锁,第三个阶段就会启动。
- 在第三阶段,事务不能要求任何新锁。它只释放获得的锁。
2PL有两个阶段:
增长阶段: 在增长阶段,事务可以获取数据项的新锁,但是不能释放任何锁。
缩小阶段: 在缩小阶段,可以释放事务所持有的现有锁,但不能获取新锁。
在下面的示例中,如果允许锁定转换,则可能发生以下阶段:
- 在生长阶段允许升级锁(从S(a)到X(a))。
- 锁定降级(从X(a)到S(a))必须在缩小阶段完成。
示例
以下方式显示了解锁和锁定如何使用2-PL。
事务T1:
- 成长阶段:从步骤1-3开始
- 收缩阶段:从步骤5-7开始
- 锁定点:第3点
事务T2:
- 成长阶段:从步骤2-6开始
- 收缩阶段:从步骤8-9开始
- 锁定点:第6点
4. 严格阶段锁定(Strict-2PL)
- Strict-2PL的第一阶段类似于2PL。 在第一阶段,在获取所有锁之后,事务继续正常执行。
- 2PL和严格2PL之间的唯一区别是Strict-2PL在使用后不释放锁。
- Strict-2PL等待整个事务提交,然后一次释放所有锁。
- Strict-2PL协议没有锁定释放的缩小阶段。
它没有像2PL那样的级联中止。
时间戳
Timestamp Ordering Protocol时间戳排序协议
![image-20190811111246440](/Users/zhaowanru/Library/Application Support/typora-user-images/image-20190811111246440.png)
【Slides_17】Data Warehouse 数据库与数据仓库
数据库 Database (Oracle, Mysql, PostgreSQL)主要用于事务处理,数据仓库 Datawarehouse (Amazon Redshift, Hive)主要用于数据分析。
Online Analytical Processing (OLAP) 联机分析处理
OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。
![image-20190811103554390](/Users/zhaowanru/Library/Application Support/typora-user-images/image-20190811103554390.png)
![image-20190811103635400](/Users/zhaowanru/Library/Application Support/typora-user-images/image-20190811103635400.png)
数据立方体与OLAP操作
作者:MikeTseng
参考http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/
cube模型共有商品类别,时间,地点三个维度:
钻取(Drill-down) 使统计维度降到更细的层级,如下图时间维度从“季度”降到了“月份”层级,能降到多细要看底层数据有多细;
上卷(Roll-up) 则是反过程,“浙江”、“上海”、“江苏”的数据被汇总到了“江浙沪” 地区层级;
切片(Slice) 的过程则非常直观,三层cube被切出了一层。意思是在某些维度为定值时,在其他维度上观察数据。如图,确定商品种类为"电子产品", 从"时间"、“地点”上做观察统计;
切块(Dice) 类似于切片,不同点在于固定维度由定值变为范围值;
旋转(Pivot) 个人理解不管怎么转cube是不变的,但实际展示的报表是个平面,将多维在同一平面展示必将涉及一个谁在前谁在后的问题(如下表所示就是不同角度来看cube的结果)。
!img](https://pic1.zhimg.com/80/f4a4f3482bcf02fdb27b0b616e118e68_hd.jpg)
【Slides_18】 Data Mining 数据挖掘
1.Association
2.Clustering
3.Classification