【CMU15-445 Part-15】Query Planning Optimization II

news2024/11/20 8:30:14

Part15-Query Planning & Optimization II

Selection Statistics

维护每张表中的基本主要信息也就是tuple数量 N R N_R NR以及每个属性中不同值的数量 V ( A , R ) V(A,R) V(A,R) N R N_R NR关系R中的元组数量,单独维护,不能用page * 每个page中的tuple数,因为mvcc 或者 填不满tuple。selection cardinality (SC(A,R)) 选择基数,tuple数量除以属性A下 去重之后值的数量来计算出 选择基数

假设数据均匀分布,data uniformity

Complex Predicates

selectivity(sel)选择率针对该表的一个给定的选择条件P,会计算出该表中有多少符合条件的tuple。

例子: V(age,people) 0-4, Nr = 5,Equality Predicate:A=constant → sel(A = const) = SC§ / Nr。 sel(age=2) = 1 5 \frac{1}{5} 51

Range Predict:sel(A ≥ a) = (Amax - a) / (Amax - Amin) Example : sel(age ≥ 2) = (4-2) / (4-0) = 1/2

Negation Query:sel (not P) = 1 - sel§, sel(age≠2) = 1-1/5 = 4/5

条件选择率selectivity ≈ Probability

Conjunction:sel(P1 ∩ \cap P2) = sel(P1) * sel(P2)

Disjunction: sel(P1 ∪ \cup P2) = sel(P1) + sel(P2) - sel(P1) * sel(P2)

上述假设前提1. uniform data 2. independent predicates 3. inclusion principle(嵌套原则:inner table 的 tuple outer table中一定有匹配)

Cost Estimations

data values uniformly distributed

Untitled

equi-width Histogram

Untitled

Histograms with Quantiles

调整bucket的宽度,使得每个bucket的count总和都大致相等

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Sampling

收集samples来维护一张sample样本表,然后根据该样本来衍生出统计信息,样本来估测总体。

Single-Relation Query Planning

  • 循序扫描
  • binary search
  • index scan
  • heuristics 启发式方法

OLTP Query Planning

本质上鉴定这个查询是否是sargable(search argument able)的

  • 通常pick the best index
  • Join几乎总是在小基数的外键关系上
  • 可以用简单的启发式规则就能实现

Multi-Relation Query Planning

限制搜索空间,System R:只考虑左深连接树 left-deep join tree,

join operator 可以任意顺序交换来join 但是得到的结果都是一样的。

Untitled

why left-deep join tree? pipelined model可以不用吧中间结果写入临时文件,是流水的

枚举查询计划

  • Enumerate the orderings:left -deep tree#1 , …#2
  • Enumerate the plans for each operator, hash join\sort-merge join \ nested-loop join …
  • Enumerate the acess paths for each table, index #1,#2 ,seq scan …

Dynamic Programming

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Postgres Optimizer

  • 传统的dynamic programming Approach

  • 还有genetic Query Optimizer GEQO遗传查询优化器,查询过于复杂的时候就会选择用遗传算法, 比如≥12个表join就用。模拟退火、遗传算法、启发式

    Untitled

    snowflake scheme,对超大表进行拆分,数亿条很长的购买记录进行解耦,雪花模型就是:fact table 在中心,然后diemension在四周,

Nested Sub-Queries

  • rewrite to de-correlate and/or flatten them,重写查询来去掉彼此关联性,扁平化处理
  • 将内部查询提取出来作为一个单独的查询执行,然后把查询结果传入第一个查询
select name from sailors as S
	where exists(
		select * from reserves as R
			where S.sid = R.sid
				and R.day = '2018-10-15'
)
# ------------------------------------
select name from sailors as S, reservers AS R
where S.sid = R.sid
	and R.day = '2018-10-15'

内外查询是相关的,重写成下面

例子,取出nested block 保存为某个变量,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1064491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch:ES|QL 查询语言简介

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。在目前的 Elastic Stack 8.10 中此功能还没有提供。 Elasticsearch 查询语言 (ES|…

3D孪生场景搭建:3D漫游

上一篇 文章介绍了如何使用 NSDT 编辑器 制作模拟仿真应用场景,今天这篇文章将介绍如何使用NSDT 编辑器 设置3D漫游。 1、什么是3D漫游 3D漫游是指基于3D技术,将用户带入一个虚拟的三维环境中,通过交互式的手段,让用户可以自由地…

RK3568平台开发系列讲解(AI篇)车辆检测车道线识别可行驶区域分割 模型对比检测结果

🚀返回专栏总目录 文章目录 模型对比检测结果 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在当今的自动驾驶领域,车辆检测、车道线识别,可行驶区域分割等任务起着至关重要的作用。车辆检测…

Labview 实战 99乘法表

基于新手小白,使用Labview实现99乘法表,敢于发表自己的一点方法,还请各位大侠放过! 如下: 运行效果如下: 思路为:将要显示出来的数据,全部转换为字符串形式,再塞入到数组…

搭建在线python运行环境

常遇到需要一个小工具,比如生成作息时间表,今天就搭建一个可在线使用的python运行环境 当然也可以交给ChatGPT完成 1、安装canda wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.shyum install -y bzi…

黑马点评-01基于Redis实现短信登陆的功能

环境准备 当前模型 nginx服务器的作用 手机或者app端向nginx服务器发起请求,nginx基于七层模型走的是HTTP协议,可以实现基于Lua直接绕开tomcat访问Redis nginx也可以作为静态资源服务器,轻松扛下上万并发并负载均衡到下游的tomcat服务器,利用集群支撑起整个项目 使用nginx部…

volatile使用方法

volatile使用方法 编译优化。使用等级3的话,可能将优化了一些变量。 这为什么会开启等第三呢?这是关于单片机的内存容量比较小,所以开启优化的话,可以可以省一些空间,但是如果。会出现些变量的问题,需要通过…

基于A4988/DRV8825的四路步进电机驱动器

概述 简化板的CNC sheild V3.0,仅保留步进电机速度与方向的控制引脚STEP/DIR、使能端EN、芯片供电VCC\GND,共计11个引脚。PCB四周开设四个M3通孔,以便于安装固定。此外,将板载的焊死的保险丝更改为可更换的保险座保险丝&#xff…

Linux系统之安装cook菜谱工具

Linux系统之安装cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统是否安装pnpm 四、部署Node.js环境4.1 下载Node.js安装包4.2 解压Node.js安装包4.3 复制二进制…

蓝桥杯每日一题2023.10.6

题目描述 门牌制作 - 蓝桥云课 (lanqiao.cn) 题目分析 #include<bits/stdc.h> using namespace std; int ans; int main() {for(int i 1; i < 2020; i ){int x i;while(x){int a x % 10;if(a 2)ans ;x / 10;}}cout << ans;return 0; } 题目描述 既约分数…

Python3操作Redis最新版|CRUD基本操作(保姆级)

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 Win11查看安装的Python路…

数据结构P46(2-1~2-4)

2-1编写算法查找顺序表中值最小的结点&#xff0c;并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…

一年一度的国庆节又结束了

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Iphone文件传到电脑用什么软件,看这里

在数字化时代&#xff0c;文件传输已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;苹果用户在将手机文件传输到电脑时&#xff0c;往往会面临一些困扰。曾经的“文件传输助手”并不能完全满足用户的需求。于是&#xff0c;很多人开始寻找更便捷的解决方案。在本文中…

MySQL概念

原理定义概念 定义 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库 数据库是长期储存在计算机内、有组织的、可共享的数据集合 分类&#xff1a; &#xff08;1&#xff09;非结构化数据&#xff1a; 数据相对来讲没有固定的特点&#…

充分理清限制与条件+构造二分图+最小割:ARC142E

https://www.luogu.com.cn/problem/AT_arc142_e 他的充要条件是是什么&#xff1a; a i , a j ≥ m i n ( b i , b j ) a_i,a_j\ge min(b_i,b_j) ai​,aj​≥min(bi​,bj​)存在 a i ≥ m a x ( b i , b j ) a_i\ge max(b_i,b_j) ai​≥max(bi​,bj​) 第一个条件直接预处理一…

【目标检测】——PE-YOLO精读

yolo&#xff0c;暗光目标检测 论文&#xff1a;PE-YOLO 1. 简介 卷积神经网络&#xff08;CNNs&#xff09;在近年来如何推动了物体检测的发展。许多检测器已经被提出&#xff0c;而且在许多基准数据集上的性能正在不断提高。然而&#xff0c;大多数现有的检测器都是在正常条…

初识jmeter及简单使用

目录 1、打开页面&#xff1a; 2、添加线程组&#xff1a; 3、线程组中设置参数&#xff1a; 4、添加请求 5、添加一个http请求后&#xff0c;设置请求内容 6、添加察看结果树 7、执行&#xff0c;查看结果 一般步骤是&#xff1a;在测试计划下面新建一个线程组&#xf…

【Java项目推荐之黑马头条】项目中的内容安全和自动审核如何实现的?

前言 在学习Java的路上还是遇到了很多不错的好项目的&#xff0c;今天分享给大家&#xff0c;希望能对大家面试有所帮助&#xff01; 后续会继续推荐其他好的项目&#xff0c;这次推荐的是B站开源的视频黑马头条项目&#xff0c;来吧学会它一起去虐面试官&#xff01;&#x…

mac清理垃圾的软件有哪些?这三款我最推荐

没错&#xff0c;Mac电脑真的好用&#xff0c;但是清理系统垃圾可不是件容易的事。由于Mac系统的封闭性&#xff0c;系统的缓存垃圾常常隐藏得让人发现不了。不过&#xff0c;别担心&#xff01;有一些专业的Mac清理软件可以帮你解决这一系列问题&#xff0c;让清理垃圾变得轻松…