当前位置: 首页 > news >正文

数据库语句执行流程(查询原理)SQL

       SQL作为一种数据库编程语言,其执行过程大致为,终端上输入SQL语句 会传输到数据库服务器,然后SQL语句在服务器内经过解析器的检查和翻译,优化器的执行效率提升,在执行器中通过存储引擎提供的数据给出结果。详细过程如下:

        一、解析器过程

       解析器分为3个部分。第一部分,词法分析,检查SQL语句拼写是否正确,例如语句中的SELECT写成SELETC 系统就会提示拼写错误。第二部分,语法分析,检查SQL语句是否满足语法要求,例如语句中没有写查询哪个表 系统会提示没指定表。第三部分,语义分析,检查SQL语句中的访问对象是否存在,例如,列名写错系统会提示列不存在。

        二、优化器过程

         优化器负责进行SOL语句的优化重写,选出最优执行路径。例如有的数据库采用了基于代价的查询优化,每条SQL语句都会生成多个候选计划,且给每个计划计算执行代价 然后选择执行代价最小的计划。

         优化器分为三个部分。第一部分,查询重写,利用等价的关系代数运算来生成更高效的语句,如常量表达式化简、子查询优化、选择下推和等价推理等。第二部分,路径搜索,枚举出所有的候选执行路径,常见的有自底向上模式、自顶向下模式、随机搜索模式。第三部分,代价估算,选择开销最小、执行效率最高的路径。

        三、执行器过程

        执行计划在执行器进行处理,根据执行计划中的访问顺序访问表,索引等执行SQL语句,最后将执行结果反馈给客户端。

        执行器分为三个部分。第一部分,初始化,遍历执行树,进行初始化执行。第二部分,执行,通过从磁盘读取数据,根据执行计划完成操作。第三部分,清理初始化阶段申请的资源。

        四、存储引擎

        存储引擎在SQL执行过程中起到了重要的作用,向上对接SQL引擎,向下对接存储介质,用于在数据库中读写数据,提供并发控制、高可用等能力。

相关文章:

数据库语句执行流程(查询原理)SQL

SQL作为一种数据库编程语言,其执行过程大致为,终端上输入SQL语句 会传输到数据库服务器,然后SQL语句在服务器内经过解析器的检查和翻译,优化器的执行效率提升,在执行器中通过存储引擎提供的数据给出结果。详细过程如下…...

FileReader与URL.createObjectURL实现图片、视频上传预览

之前做图片、视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览。实际上这只是文件“上传后再预览”,这既浪费了用户的时间,也…...

基于python+Django+SVM算法模型的文本情感识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介1. 简介2. 技术栈3. 系统架构4. 关键模块介绍5. 如何运行 二、功能三、系统四. 总结 一项目简介 # 基于 Python Django SVM 算法模型的文本情感识别系统介…...

数据结构之栈与队列习题详解解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.概念题…...

C++ 动态规划 DP教程 (一)思考过程(*/ω\*)

动态规划是一种思维方法,大家首先要做的就是接受这种思维方法,认同他,然后再去运用它解决新问题。 动态规划是用递推的思路去解决问题。 首先确定问题做一件什么事情? 对这件事情分步完成,分成很多步。 如果我们把整件…...

【python基础(九)】文件和异常详解:使用、读取、写入、追加、保存用户的信息,以及优雅的处理异常

文章目录 一. 从文件中读取数据1. 读取整个文件2. 文件路径3. 逐行读取4. 创建一个包含文件各行内容的列表 二. 写入文件1. 写入空文件2. 写入多行3. 附加到文件 三. 异常1. 处理ZeroDivisionError异常2. 使用try-except代码块3. try-except-else ing4. 处理FileNotFoundError异…...

详解C语言中的指针数组和数组指针

指针数组和数组指针是 C 语言中比较常见的两种类型。它们虽然名字很相似,但是含义、用法以及指向类型都不同,需要分开理解。 指针数组 指针数组是一个数组,其中每个元素都是一个指针。这些指针可以指向不同类型的数据,也可以指向…...

【done】剑指offer18:删除链表指定节点

力扣,https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/description/ // 自己写的答案 class Solution {public ListNode deleteNode(ListNode head, int val) {if (head null) {return null;}if (head.val val) {return head.next;}ListNode …...

图形编辑器开发:缩放和旋转控制点

大家好,我是前端西瓜哥。好久没写图形编辑器开发的文章了。 今天来讲讲控制点。它是图形编辑器的不可缺少的基础功能。 控制点是吸附在图形上的一些小矩形和圆形点击区域,在控制点上拖拽鼠标,能够实时对被选中进行属性的更新。 比如使用旋…...

【2023 云栖】阿里云田奇铣:大模型驱动 DataWorks 数据开发治理平台智能化升级

云布道师 本文根据 2023 云栖大会演讲实录整理而成,演讲信息如下: 演讲人:田奇铣 | 阿里云 DataWorks 产品负责人 演讲主题:大模型驱动 DataWorks 数据开发治理平台智能化升级 随着大模型掀起 AI 技术革新浪潮,大数…...

Rust语言入门教程(二) - 变量与作用域

变量与作用域 变量的声明与初始化 Rust的基本语法格式如下: fn main(){let bunnies 2; }语句以分号结尾,用花括号包含语句块。 Rust的语法其实借鉴了很多其他的语言,比如C语言和Python, 所以变量定义的格式看起来也跟很多我们…...

芯知识 | Flash可更换声音语音芯片—引领音频IC技术革新的新篇章

随着科技的飞速发展,人们对于电子产品的音频性能要求越来越高。在这种背景下,Flash可更换声音语音芯片应运而生,成为音频技术领域的一颗璀璨明星。本文将详细介绍Flash可更换声音语音芯片的特点、优势以及应用场景,展望其在未来科…...

合共软件创新亮相:第102届上海电子展成就技术新篇章

2023年,第102届中国(上海)电子展活动在全球瞩目中圆满落幕。作为下半年华东地区最具影响力的电子展会,此次盛会吸引了来自全球的600家领先企业,共同探讨电子元器件行业的最新发展成果和趋势。 本届展会围绕核心先导元器…...

Ubuntu20.04清理垃圾vscode缓存

使用VM虚拟机安装了Ubuntu系统,主目录空间越来越小,硬盘扩容之后很快又空间不足,甚至出现了开机卡黑屏的情况,这里记录一下解决过程。 1 重新开机进入系统 状态:卡到了开机黑屏状态,左上角有一条小横杠 原…...

网络数据结构skb_buff原理

skb_buff基本原理 内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体,而是通过增加协议头和移动指针来操作的。如果是从L4传输到L2,则是通过往sk_buff结构体中增加该层协议头来操作;如果是从L4到L2,则是通过移动sk_…...

SpringCache使用详解

SpringCache 1.新建测试项目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache问题4.SpringCache实现多级缓存 1.新建测试项目SpringCache 引入依赖 <dependencies><dependency><groupId&g…...

windows版本的grafana如何离线安装插件

本文以安装clickhouse的插件为例&#xff0c;记录下如何离线安装插件 1 下载插件 ClickHouse plugin for Grafana | Grafana Labs 2 找到grafana的配置文件 打开编辑&#xff0c;搜索plugin关键字&#xff0c;修改plugin的加载目录 目录不存在&#xff0c;手动创建&#xff0…...

ElasticSearch01

ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ ElasticSearch介绍 Elaticsearch&#xff0c;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b…...

GPT、GPT-2、GPT-3论文精读笔记

视频&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【论文精读】_哔哩哔哩_bilibili MAE论文&#xff1a;把bert用回计算机视觉领域 CLIP论文&#xff1a;打通文本和图像 GPT 论文&#xff1a;Improving Language Understanding by Generative Pre-Training …...

深度学习八股文:混合精度训练过程出nan怎么办

其实如果是FP32的训练&#xff0c;基本的调试方法还是差不多&#xff0c;这里就讲一下混合精度训练过程中的nan。 混合精度训练使用较低的数值精度&#xff08;通常是半精度浮点数&#xff0c;例如FP16&#xff09;来加速模型训练&#xff0c;但在一些情况下&#xff0c;可能会…...

面试官内部面经,仅限应届生看

文章目录前言一、AI岗应届生面试&#xff0c;面试官到底在考察什么&#xff1f;1.1 技术基础&#xff1a;不考偏题&#xff0c;只考核心底层逻辑1.2 编程实战&#xff1a;手撕代码工程思维&#xff0c;缺一不可1.3 项目经历&#xff1a;深挖细节&#xff0c;拒绝“假大空”1.4 …...

5G网络计费新玩法:除了流量和时长,运营商还能按什么向你收费?

5G计费革命&#xff1a;当网络质量成为可售商品 站在写字楼的落地窗前&#xff0c;李明正在用手机参加跨国视频会议&#xff0c;画面清晰流畅如同面对面交谈&#xff1b;同一时刻&#xff0c;他的女儿在家用云游戏平台通关最新大作&#xff0c;毫无卡顿延迟&#xff1b;而工厂里…...

PyTorch 2.6镜像保姆级教程:3步完成GPU加速环境配置

PyTorch 2.6镜像保姆级教程&#xff1a;3步完成GPU加速环境配置 你是不是刚拿到一台新服务器&#xff0c;想快速搭建一个能跑深度学习的GPU环境&#xff0c;结果被各种驱动、CUDA版本、环境依赖搞得头大&#xff1f;或者你只是想快速验证一个PyTorch模型&#xff0c;却花了大半…...

Stable Yogi Leather-Dress-Collection自动化流程:使用Python脚本批量生成商品图

Stable Yogi Leather-Dress-Collection自动化流程&#xff1a;使用Python脚本批量生成商品图 每次上新都要找设计师做几十张商品图&#xff0c;费时又费钱&#xff1f;产品图风格不统一&#xff0c;影响品牌形象&#xff1f;如果你在电商或内容创作团队&#xff0c;这些问题肯…...

MagiskOnWSALocal终极指南:5分钟打造完整Android环境的Windows子系统

MagiskOnWSALocal终极指南&#xff1a;5分钟打造完整Android环境的Windows子系统 【免费下载链接】MagiskOnWSALocal Integrate Magisk root and Google Apps into WSA (Windows Subsystem for Android) 项目地址: https://gitcode.com/gh_mirrors/ma/MagiskOnWSALocal …...

Markdown转docx 保留Latex渲染样式

需求分析 Markdown转docx有大量公式。包括行内公式和行间公式Office 自带的数学与 Latex的渲染样式存在差异。本文倾向于使用Latex的渲染样式轻量调整。转换后仅做轻微的调整&#xff0c;不再编辑公式。 选择方案 主要编辑在Markdown&#xff0c;使用Latex渲染样式&#xff…...

Rescuezilla:系统恢复的瑞士军刀 - 终极免费磁盘克隆与备份解决方案

Rescuezilla&#xff1a;系统恢复的瑞士军刀 - 终极免费磁盘克隆与备份解决方案 【免费下载链接】rescuezilla The Swiss Army Knife of System Recovery 项目地址: https://gitcode.com/gh_mirrors/re/rescuezilla 你是否曾经面对系统崩溃却束手无策&#xff1f;是否需…...

Go 中嵌入类型字段在派生结构体字面量中的初始化规则详解

Go 语言中&#xff0c;嵌入类型&#xff08;embedded type&#xff09;的字段虽可被派生结构体直接访问&#xff0c;但不能作为字段名出现在结构体字面量中&#xff1b;必须通过显式初始化嵌入类型本身&#xff0c;或先创建实例再赋值。 go 语言中&#xff0c;嵌入类型&am…...

Godot 2D碰撞体实战:从FlappyBird看RigidBody2D与StaticBody2D的碰撞艺术

1. 从FlappyBird看Godot碰撞体的核心价值 第一次打开Godot引擎时&#xff0c;我被它简洁的节点系统吸引&#xff0c;但真正让我着迷的是它精妙的物理碰撞系统。记得三年前我尝试复刻FlappyBird时&#xff0c;小鸟明明还没碰到水管游戏就结束了&#xff0c;这种"幽灵碰撞&q…...

3分钟快速上手:如何用Vue 3 Cron组件告别复杂定时任务配置

3分钟快速上手&#xff1a;如何用Vue 3 Cron组件告别复杂定时任务配置 【免费下载链接】no-vue3-cron 这是一个 cron 表达式生成插件,基于 vue3.0 与 element-plus 实现 项目地址: https://gitcode.com/gh_mirrors/no/no-vue3-cron 还在为编写复杂的Cron表达式而头疼吗&…...