数据库系统-数据库查询实现算法之

news2024/11/20 2:41:18

文章目录

  • 一、一趟扫描算法
    • 1.1 算法概述
    • 1.2 算法逻辑&物理实现
      • 1.2.1 逻辑层面
      • 1.2.2 物理层面
        • 1.2.2.1 P1
        • 1.2.2.2 P2
        • 1.2.2.3 P3
        • 1.2.2.4 P4
    • 1.3 迭代器构造查询实现算法
    • 1.4 关系操作的一趟扫描算法
    • 1.4 基于索引的查询实现算法
  • 二、两趟扫描算法
    • 2.1 两趟算法基本思想
    • 2.2 多路归并排序算法
    • 2.3 排序的两趟扫描算法
    • 2.4 散列的两趟扫描算法

一、一趟扫描算法

1.1 算法概述

在这里插入图片描述
优化一些操作:把过滤操作推导关联前执行
在这里插入图片描述

1.2 算法逻辑&物理实现

连接操作的实现算法

1.2.1 逻辑层面

在这里插入图片描述
物理层面要比逻辑层面复杂的多

1.2.2 物理层面

在这里插入图片描述
关系是存储在磁盘上的,首先要进行磁盘IO装载进内存

1.2.2.1 P1

在这里插入图片描述

  1. 先读R表的磁盘块循环i
  2. 循环j 读取S的磁盘块
  3. R的第一块,和j的每一块对比

1.2.2.2 P2

在这里插入图片描述
内存中存的下R + S的全部磁盘块
1.都加载到内存中R S
2.R S循环对比

1.2.2.3 P3

在这里插入图片描述
内存中存的下R 的全部磁盘块
S一次一块

1.2.2.4 P4

S >= M,R >= M
如何充分利用内存?

  1. 每次读取子集合有S的M-2块数据
  2. 读取1块R
  3. 生成1块临时RxS的数据
    在这里插入图片描述
    在这里插入图片描述

1.3 迭代器构造查询实现算法

扫描一次数据,全部的关系操作都执行完
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

多个操作合并
在这里插入图片描述

在这里插入图片描述

1.4 关系操作的一趟扫描算法

内存中把全部数据都能装进来
聚簇关系 : 关系中的元祖集中存放(一个块是一个关系中的元祖)

  • TableScan® --表空间扫描算法,扫描结果未排序B®
  • SortTableScan® --扫描结果排序
  • IndexScan® --索引扫描算法
  • SortIndexScan® --扫描结果排序

非聚簇关系:关系中的元祖不一定集中存放(一个块中不一定是一个元祖的)

  • 扫描结果不排序
  • 排序

在这里插入图片描述
在这里插入图片描述

1.4 基于索引的查询实现算法

在这里插入图片描述
在这里插入图片描述

DBMS会根据以下因素来选择使用哪种join物理实现方式:

1. 表大小:如果一个表很小,那么使用嵌套循环(nested loop)join可能比使用其他join方式更快。如果一个表很大,那么使用hash join或sort-merge join等方式更有效率。

2. JOIN条件:如果JOIN条件中包含的参与连接的键是唯一的,那么使用物理实现方式可能是嵌套循环join。如果参与连接的键不是唯一的,那么使用sort-merge join或hash join等方式更合适。

3. 查询复杂度:如果查询复杂度高,那么执行cost-based的优化可能是更合理的方式。例如,优化器可以评估所有可能的join方式,然后选择成本最小的方式。

4. 可用资源:有时候DBMS在可用资源比较有限的情况下(例如内存),无法使用某些join方式。在这种情况下,DBMS必须根据可用资源的限制选择适当的join方式。

5. 磁盘I/O:某些join方式可能会涉及大量的磁盘读写,而其他方式则可能会更少。在考虑使用哪种join方式时,必须考虑磁盘I/O的使用情况。

综上所述,DBMS会根据表大小、JOIN条件、查询复杂度、可用资源和磁盘I/O等因素来选择使用哪种join物理实现方式,以达到最优的性能。

二、两趟扫描算法

一趟算法需要很多内存,为了减少磁盘I/O的次数,提高查询效率。具体原因如下

第一次扫描:在第一次扫描过程中,我们可以筛选出符合条件的部分数据,将它们尽可能地存储在内存中,避免了大量的磁盘I/O操作。这些数据通常被存储在一个中间结果表中。

第二次扫描:在第二次扫描过程中,我们只需要针对中间结果表中的数据进行进一步的处理和筛选,而无需再次访问磁盘中的原始数据表。这就大大减少了磁盘I/O操作的次数,提高了查询效率。

2.1 两趟算法基本思想

对磁盘中的数据划分子集
在这里插入图片描述
在磁盘划分的子集中,再次处理
在这里插入图片描述
在这里插入图片描述

2.2 多路归并排序算法

2.3 排序的两趟扫描算法

2.4 散列的两趟扫描算法

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

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

相关文章

SaaS是什么?企业为什么要有SaaS系统?

什么是SaaS系统?企业为什么要有SaaS系统? 近几年,SaaS突然变成了一个热门词汇,无论是一些权威报告,还是知乎上知友们热烈的讨论,对于Saas系统可谓是各有各的见解和看法。 今天就综合几位答主的观点&#…

【1163. 按字典序排在最后的子串】

来源:力扣(LeetCode) 描述: 给你一个字符串 s ,找出它的所有子串并按字典序排列,返回排在最后的那个子串。 示例 1: 输入:s "abab" 输出:"bab"…

安波福又有大动作,行泊一体中国方案即将量产

“安波福的目标是,2030年营收达到400亿美元规模,这其中有一大部分收入来自于软件。”安波福亚太区总裁杨晓明在接受高工智能汽车提问时表示。 他介绍,2030年软件业务目标是达到60亿美元的规模,而在2022年,安波福实现了…

Nacos身份绕过漏洞复现(QVD-2023-6271)

Nacos身份绕过漏洞复现(QVD-2023-6271) 公司上级预警QVD-2023-6271,领导安排进行排查。 本着知己知彼的原则,我在本地将该漏洞复现出来。 漏洞原理:Nacos 在默认配置下未对 token.secret.key 进行修改,导…

【好题】好题分享

1001-四舍五入_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com) 题目描述 四舍五入是个好东西。比如你只考了45分,四舍五入后你是50分再四舍五入你就是满分啦!qdgg刚考完拓扑。成绩十分不理想。但老师觉得他每天都很认真的听课很不容易。于是…

ubuntu 22 安装

下载镜像 下载 https://ubuntu.com/download/server 我这里下载了 22 服务器版 使用工具制作U盘镜像 安装完毕后 插入安装的电脑U盘插口 DEL 进入 选择U盘启动 进入后 我这里选择了第一个,没有选择mini版本 之后进入后按推荐一直安装 在选择静态地址的时候 subn…

你还在用Object.equals()方法吗?

当《阿里巴巴Java开发手册》发布后,我也是仔细进行了阅读,想从中找出一些“标准”,让自己的代码质量提高。手册中对 Object 的 equals 方法的使用进行了强制,而且推荐使用 JDK7 中工具类 Objects 的 equals 方法,至此之…

我在 Linux部署皕杰报表遇到的问题及解决方法

Linux是一种自由和开放源码的类 UNIX 操作系统,作为服务器的操作系统广泛应用。Linux由林纳斯托瓦兹在赫尔辛基大学上学时创立,主要受到 Minix 和 Unix 思想的启发。Linux英文解释为 Linux is not Unix。 皕杰报表支持在linux系统中部署,只需…

短视频矩阵优化系统开发步骤:

1. 矩阵号注册:用户可以通过该功能注册矩阵号,填写个人基本信息并上传身份证明材料进行实名认证。 2. 矩阵号登录:用户使用注册成功的账号密码登录矩阵号系统。 3. 矩阵号管理:用户可以通过该功能管理自己的矩阵号,包…

3 亿岗位将被 AI 取代?巴比特深度采访业界后,“失业潮”真相有些出人意料……...

图片来源:由无界 AI工具生成 人工智能技术的发展正迎来奇点,尤其是今年以来 ChatGPT 和 AIGC 的迅猛势头让无数人猝不及防,真真切切地对各行各业现有的工作岗位产生冲击。近日,蓝色光标全面停止创意设计、方案撰写、文案撰写、短期…

Oracle:ORA-00600[4137]问题分析

背景: 在为用户的新机房环境Oracle 19.18版本数据库检查时,发现smon进程后台日志不断出现事务恢复报错Serial Transaction recovery caught exception 30319,进一步检查发现存在事务恢复失败报ORA-00600[4137] 问题: smon进程后台日志不断出现事务恢复报…

【对比】文心一言对飚ChatGPT实操对比体验

前言 🍊缘由 百度【文心一言】体验申请通过 本狗中午干饭时,天降短信,告知可以体验文心一言,苦等一个月的实操终于到来。心中这好奇的对比心理油然而生,到底是老美的【ChatGPT】厉害,还是咱度娘的【文心一…

地下污水厂智能照明控制应用

摘要:结合某地下污水厂项目,从结构、系统组成、系统功能、控制要求、场景模式等方面介绍了地下污水厂智能照明控制系统,探索了一套适用于地下污水厂的智能照明控制策略,以确保地下污水厂正常运行的照明需求。 关键词:智能照明控制系统;地下污…

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像

苦熬10余年,国产操作系统自主研发 说到国内自主研发的操作系统,经验最丰富的品牌,当然是麒麟OS. 从诞生到发展,历经10多年的努力,麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…

Java基础(十)字符串相关类

1 字符串相关类之不可变字符序列:String 1.1 String的特性 java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如"hello" )都可以看作是实现此类的实例。 字符串是常量,用双引号引起来表示。它们的值在创…

​如何恢复回收站清空的文件?

清空回收站后可以恢复删除的文件吗? 你是否遇到过清空回收站后才意识到某些文件不应删除的情况。发生这种情况时,许多人会感到恐慌,并且想知道是否有可能恢复回收站清空的文件。 事实上,你不必为此担心。当用户清空回收站时&a…

一种大于2GB ONNX模型onnxsim优化方法

大于2GB模型onnxsim优化很耗时,容易挂掉,而且需要特别大的系统内存。 这里提出一种比较简单的优化大于2GB ONNX模型的方法: 基本思路是 把卷积和矩阵乘的权重(参数量大于某个阈值)替换为ConstantOfShape&#xff0c…

GB/T 28181-2022 新版差异笔记

GB/T 28181-2022 新版差异笔记 文章目录 GB/T 28181-2022 新版差异笔记更改了标准范围删除部分术语和定义增加PTZ缩略语更改SIP监控域互联结构图更改了“联网系统通讯协议结构图”增加了媒体流数据传输的RTP时间戳要求增加了对H.265、AAC的支持更改了SDP协议的引用更改了与其他…

Vue中生成二维码组件——vue-qr——插件市场

最近在重构一个老系统,老系统用的是vueelementUi的框架,现在要更新为vueantdesign的框架模式。 下面记录一下用到的插件: 1.Vue中生成二维码组件——vue-qr vue-qr官网链接:https://www.npmjs.com/package/vue-qr 1.1 安装vue-…

Simulation Extractable Versions of Groth’s zk-SNARK Revisited学习笔记

1. 引言 等人2020年论文《Simulation Extractable Versions of Groth’s zk-SNARK Revisited》,开源代码实现见: https://github.com/Baghery/ABPR22(Rust,基于arkworks开发。使用了Multi-Scalar Multiplication (MSM)技术来优化…