- 查询优化对比
- 集中式数据库:主要考虑CPU和I/O代价
- 分布式数据库:除了考虑CPU和I/O代价,还要考虑通讯代价
- 分布式查询分类
- 局部查询:类似于集中式数据库查询,可用集中式数据库查询方法优化
- 远程查询:用户查询只涉及到网络中单个场地的数据, 选择距离应用场地最近的副本,其余就类似于集中式数据库查询,选择
- 全局查询:用户查询涉及到多个场地的数据,具体优化技术比较复杂,见下面说明
- 全局查询优化
- 全局查询树的变换
- 用片段查询替换全局关系
- 合并公共子查询
- 消除空关系和冗余度
- 移去无用的垂直叶片
- 举例
- 副本选择和多副本的更新策略
- 副本选择原则
- 尽可能提高访问的局部性,减少远距离访问
- 尽可能减少通信开销,减少大数据量的传输
- 考虑节点的负载平衡
- 副本更新策略
- 在事务提交前更新全部副本,只要一个副本没更新则事务失败
- 立即更新所用可用副本,对于失效副本等恢复后再更新
- 主副本法
- 指定一个副本为主副本,事务提交时先更新主副本,其它的副本在事务提交后再由主副本统一更新
- 缺点:主副本和其它副本可能存在读不一致问题,可以通过设计版本号解决,如果副本的版本号与主副本版本号不一致,则改为读主副本或者等待更新后再读
- 快照法
- 副本选择原则
- 查询树的分解
- 半连接与直接连接
- 半连接:在做连接时,不需要把整个关系或者片段送到对方,只需要传送与连接相关的元组即可,目的是减少节点之前的数据传输量和运算量,缺点是增加了连接次数
- 举例:
- 直接连接
- 嵌套循环法
- 排序归并法
- 全送与按需取数两种传输方式
- 半连接:在做连接时,不需要把整个关系或者片段送到对方,只需要传送与连接相关的元组即可,目的是减少节点之前的数据传输量和运算量,缺点是增加了连接次数