DDB---查询与优化
摘要:分布式数据库(Distributed DB)是数据库中非常重要的一个部分,随着要处理的数据越来越多,分布式逐渐成为了一种策略。主要有:分布式操作系统,分布式程序设计语言,分布式文件系统,分布式数据库等。今天我们主要学习分布式数据库中常用的查询优化策略。
分布式查询优化的目标
方式一:使总代价最小(总代价 = CPU代价 + I/O代价 + 通信代价)
方式二:响应时间最短
查询代价的估算方法
设一个查询的预期代价为 QC (query cost)
QC = CPU代价 + I/O代价 + 通信代价
其中,通信代价(Transmit Cost)可用如下公式粗略估算:
TC(X) = C0 + C1 * X
1)X 为数据的传输量,通常以 bit 为单位计算
2)C0 为两站点间通信初始化一次所花费的时间,它由通信系统确定,近似一个常数,以秒(s)为单位
3)C1 为传输率(传输速度的倒数),即单位数据传输的时间,单位是 s/bit
分布式查询的层次结构
1)查询分解:将查询问题(例如 SQL 语句)转换为一个定义在全局关系上的关系代数表达式。本层转换所需要的信息在全局概念模式中获得
2)数据本地化:把一个全局关系上的查询,进行具体化(尽可能做到本地化或近本地化)片段上的查询。这一变换所需要的信息在分片模式中片段的分配模式中获得
3)全局优化:找出片段查询的最佳操作次序,包括使得代价函数最小。(基于广域网的分布式 DBMS,通信代价是最为明显的因素)。本层转换所需要的信息来自数据库统计信息,包括各站点片段统计信息、资源信息和通信信息等
4)局部优化:在每一个站点上执行的子查询,被称为局部查询。它由该站点上的 DBMS 进行优化。所需信息取自局部模式
具体优化方法
基于关系代数等价变换的查询优化
基本原理:把查询问题转变为关系代数表达式,分析得到查询树(语法树),进行从全局到片段的变换得到基于片段上的查询树,然后利用关系代数等价变换规则的优化算法,尽可能先执行选择和投影操作。这样,一方面可以减少其后操作的操作量,另一方面可以减少操作次数,对该查询树进行优化,从而达到查询优化的目的。
水平分片关系优化原理:首先,尽可能地把条件选择下移到分片的限定关系处,再把分片的限定关系与选择条件进行比较,然后去掉它们之间存在矛盾的相应片段。如果最后剩下一个水平片段,则在重构全局关系的操作中,就可去掉”并操作“(至少可以减少”并“操作的次数)
S(S#,SNAME,AGE,SEX) -- 数据库全局关系中的 S 表
SC(S#,C#,GRADE) -- 数据库全局关系中的 SC 表 SELECT DISTINCT SNAME FROM S,SC -- 执行的查询语句
WHERE S.S# = SC.S# AND SEX = 'M' AND GRADE > 90
它的关系代数表达式为:
∏SNAME(δSEX='M' ^ GRADE>90(δS.S# = SC.S#)(S X SC))

垂直分片关系优化原理:把垂直分片所用到的属性集,与查询条件(查询表达式)中的投影操作所涉及的属性集相比较,去掉无关的垂直片段。如果只剩下一个垂直片段与查询有关时,就可去掉重构全局关系的”连接“操作(至少可以减少”连接“操作的次数)
--全局关系 EMP(EMP#,DEPT#,SALARY,DEPT#,DNAME) 进行垂直分片
-- E1(EMP#,DEPT#,DNAME)
-- E2 (EMP#,ENAME,SALARY) SELECT ENAME,SALARY FROM EMP -- 执行的查询语句
它的关系代数表达式为:
∏ENAME,SALARY(EMP)

基于半连接算法的查询优化
引入半连接算法的理由:
连接操作是常用而且代价较高的一种操作。目的是为了使分布式数据库系统能有效地处理连接操作,使传输的数据量最少。
半连接操作过程和代价估计:
基于直接连接算法的查询优化
3.1 一般常用策略
3.2 利用站点依赖信息的算法
3.3 分片和复制算法
3.4 站点依赖和数据复制结合
3.5 Hash 划分算法
总结:不同方法的比较
DDB---查询与优化的更多相关文章
- Atitit 如何利用先有索引项进行查询性能优化
Atitit 如何利用先有索引项进行查询性能优化 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种:1 1.2. 范围查找 动态索引查找1 1.2.1. 索引联合 所谓的索引联 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- 高性能MySQL笔记 第6章 查询性能优化
6.1 为什么查询速度会慢 查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
- SQL中的连接查询及其优化原则
连接查询是SQL的主要任务,只有很好的掌握了连接查询及其优化方法才算是掌握了SQL的精髓所在.最近在面试中遇到了有关连接查询的问题,感觉回答的不是很好,总结一下. 具体示例请参考:http://www ...
- mysql笔记03 查询性能优化
查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...
- Sql Server查询性能优化之走出索引的误区
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...
- SQL Server查询性能优化——堆表、碎片与索引(二)
本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结. 第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...
- SQL Server查询性能优化——覆盖索引(二)
在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等 ...
- SQL大量数据查询的优化 及 非用like不可时的处理方案
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
随机推荐
- awesome资源包
.NET资源包 https://github.com/jobbole/awesome-dotnet-cn java资源包 https://github.com/jobbole/awesome-java ...
- 60秒的快速巡检Linux服务器性能
uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 sar -n TCP, ...
- docker项目ssl 安全证书的种种
一,证书挂着宿主的nginx上 这个很简单,只需要修改宿主nginx的配置文件即可 server { ssl default; server_name www.abc.com; #项目域名 ssl_c ...
- WordPress版微信小程序3.1.5版的新功能
产品的完善是无止境,每过段时间就会发现产品的新问题,使用的人越多,提的需求也会越多,我听得最多的一句话就是:如果加上某某功能就完美了.其实,完美是不存在的,每个人的视角不一样,完美的定义也是不一样的. ...
- C# 通过GUID生成不重复的ID
/// <summary> /// 获得32位字符长度的ID /// </summary> /// <param name="information" ...
- Java高级框架-----Spring(一)
一: 1. Spring几大核心功能: IOC/DI 控制反转/依赖注入 AOP 面向切面编程 声明式事务 2. Spring 框架的的runtime 2.1 test:Spring提供测试功能 2. ...
- Postman 中上传图片的接口怎么做参数化呢?
如题求教,麻烦回复在评论里,不胜感激~
- node启动本地服务器
//下载依赖 cnpm i http cnpm i path cnpm i fsvar http = require('http'); var path = require('path'); var ...
- ADB抓取内存命令
1. 在IDE中查看Log信息当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:D/dalvikvm: <GC_Reason> <Amount_freed>, < ...
- 基于HALCON的模板匹配方法总结
注:很抱歉,忘记从转载链接了,作者莫怪.... 基于HALCON的模板匹配方法总结 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多 ...