I/O并行:算法
划分技术:数据库
1 轮转法缓存
2 散列划分:并发
3 范围划分:函数
划分技术比较:优化
数据访问能够分类以下:设计
1 扫描整个关系排序
2 按相关性定位元组,点查询事务
3 定位出给定属性取值处于指定范围内的全部元组资源
不一样划分技术支持访问类型的效率是不一样的:
轮转法:
适合于但愿对每一个查询顺序地读整个关系的应用。点查询和范围查询的处理都很复杂,由于n张磁盘所有要用于查找
散列划分:
最适合于基于划分属性的点查询。对于顺序扫描整个关系也有用。不能很好地适用于非划分属性上的点查询,
也不能很好地回答范围查询。
范围划分:
很适合于在划分属性上的点查询和范围查询,缺点:若是查询范围有许多元组,那么就会有许多元组必须从少许磁盘中检索
出来,致使磁盘上的I/O瓶颈
偏斜处理:
当划分一个关系时(不是轮转法),元组的分布有可能发生偏斜,即某些分区中放置了很高百分比的元组,而其余分区中只有不多的元组
偏斜的表现形式以下:
1 属性值偏斜:
某些值出如今许多元组的划分属性中,在划分属性上取相同值的全部元组落入同一分区中,从而致使偏斜
2 划分偏斜
即便不存在属性值偏斜,划分也可能会出现负载不均衡。
平衡的范围划分向量:
排序→1/n,这种方法主要缺点是初始排序带来的额外I/O开销
经过为每一个关系的每一个属性建立和存储该属性值的频率表或直方图,能够下降因为构建平衡的范围划分向量而产生的I/O开销
查询间并行:
不一样查询或事物彼此并行地执行,这种形式的并行能够提升事务吞吐量,可是单个事务的响应时间不会比事务以隔离方式运行更快
查询间并行的主要用处是扩展事务处理系统,使它能在每秒内能支持更大数量的事务
当一个处理器访问或更新数据时,数据库系统必须保证该处理器在它的缓冲池中拥有该数据的最新版本,称为高速缓存一致性问题
多种协议可用于保证高速缓存一致性,一般将高速缓存一致性协议与并发控制协议集成在一块儿,以减少开销
用于共享磁盘系统中的一个这样的协议以下:
1 事务对一个页面进行任何读或写访问以前,先用相应的共享或排他模式封锁该页面,一旦事务获得锁以后,从共享磁盘读取最新版本
2 当事务释放一个页面的排他锁以前,它将该页面刷新到共享磁盘中,而后释放封锁
查询内并行:
单个查询在多个处理器和磁盘上并行执行。对于加快运行时间长的查询的速度,采用查询内并行
单个查询的执行能够有两种不一样的并行化方式:
1 操做内并行:并行地执行每一个运算,如排序、选择、投影和链接,来加快一个查询的处理速度
2 操做间并行: 并行地执行一个查询表达式中的多个不一样的运算,来加快一个查询的处理速度
操做内并行:
并行排序:
范围划分排序:
1 采用范围划分策略对关系中的元组进行从新分布,使得处于第i个范围的全部元组都发送给处理器i,存放在磁盘i中
每一个处理器并行地从它的磁盘上读取元组,并将这些元组发送到它们的目的处理器
2 每一个处理器对属于本身的分区进行排序,不与其余处理器交互
3 合并
并行的外部排序归并:
1 每一个处理器对本地磁盘中的数据进行排序
2 系统对每一个处理器排好序的归并段进行合并,获得最终的排序输出
a 系统将每一个处理器排好序的分区范围划分到各处理器,系统用排序顺序发送元组使得各个处理器接收的都是排好序的元组流
b 每一个处理器进行归并
c 合并
并行链接:
基于划分的链接:
只有在链接是等值链接并且在链接属性上用一样的划分函数对关系r和s进行划分的状况下,基于划分的链接技术才能正确工做
两种划分方法:
1 基于链接属性进行范围划分
2 基于链接属性进行散列划分
分片-复制链接:
非对称的分片-复制链接:
1 系统对一个关系进行划分
2 系统将另外一个关系复制到全部处理器上
3 链接
4 合并
分片-复制链接:
系统将关系r划分为m个分区,将关系s划分为n个分区,处理器数量是m*n
当两个关系的规模基本相同时,分片-复制链接的代价一般比基于划分的链接要高,由于分片-复制链接必须至少要复制其中的一个关系
基于划分的并行散列链接
用相同的散列函数处理关系,映射处处理器上,处理器再用散列链接算法链接,合并
并行嵌套循环链接
其余关系运算:
1 选择
2 去重
3 投影
4汇集
运算的并行计算代价
1 启动代价
2 偏斜
3 对资源的竞争
4 组装代价
操做间并行:
流水线并行:
独立并行
查询优化:
并行系统设计
多核处理器的并行性