摘要:分布式数据库(Distributed DB)是数据库中非常重要的一个部分,随着要处理的数据越来越多,分布式逐渐成为了一种策略。主要有:分布式操作系统,分布式程序设计语言,分布式文件系统,分布式数据库等。今天我们主要学习分布式数据库中常用的查询优化策略。
1,分布式查询优化的目标
方式一:使总代价最小(总代价 = CPU代价 + I/O代价 + 通信代价)
方式二:响应时间最短
2,查询代价的估算方法
设一个查询的预期代价为 QC (query cost)
QC = CPU代价 + I/O代价 + 通信代价
其中,通信代价(Transmit Cost)可用如下公式粗略估算:
TC(X) = C0 + C1 * X
1)X 为数据的传输量,通常以 bit 为单位计算
2)C0 为两站点间通信初始化一次所花费的时间,它由通信系统确定,近似一个常数,以秒(s)为单位
3)C1 为传输率(传输速度的倒数),即单位数据传输的时间,单位是 s/bit
3,分布式查询的层次结构
1)查询分解:将查询问题(例如 SQL 语句)转换为一个定义在全局关系上的关系代数表达式。本层转换所需要的信息在全局概念模式中获得
2)数据本地化:把一个全局关系上的查询,进行具体化(尽可能做到本地化或近本地化)片段上的查询。这一变换所需要的信息在分片模式中片段的分配模式中获得
3)全局优化:找出片段查询的最佳操作次序,包括使得代价函数最小。(基于广域网的分布式 DBMS,通信代价是最为明显的因素)。本层转换所需要的信息来自数据库统计信息,包括各站点片段统计信息、资源信息和通信信息等
4)局部优化:在每一个站点上执行的子查询,被称为局部查询。它由该站点上的 DBMS 进行优化。所需信息取自局部模式
4,具体优化方法
1)基于关系代数等价变换的查询优化
2)基于半连接算法的查询优化
3)基于直接连接算法的查询优化
3.1 一般常用策略
3.2 利用站点依赖信息的算法
3.3 分片和复制算法
3.4 站点依赖和数据复制结合
3.5 Hash 划分算法
总结:不同方法的比较
原文:https://www.cnblogs.com/zpcoding/p/10773246.html