MYSQL第一讲:一个查询语句需要经过多少步?

news2024/12/27 19:29:41

1.连接器

负责客户端和MYSQL连接时的校验和权限验证

短连接:一段时间就断开然后重连,身份校验和权限验证不是一个轻松的活。所以不推荐

长连接:一般的情况都是长连接,但是长连接如果长时间不断开,会出问题,原因是:我们连接数据库所使用的内存都是数据库那边的,所以如果长时间不解放我们所占用的数据库服务器资源就会将内存挤爆。解决办法:

  1. 定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。

  2. 如果你用的是MySQL 5.7或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection来重新初始化连接资源。这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时的状态。

还有另一种问题就是我们如果长时间的长连接一直在休息,也就是说我们有个客户端在一直连接着MYSQL服务器,但是一直没用,我们可以通过设置参数wait_timeout自动断开,默认是8小时。

单位为秒

2.分析器

负责代码的词法分析和语法分析

 select * from t where ID=1;

词法分析:举个例子 看是select 然后将语句中的t翻译成 表t 将 ID 翻译成那张表中的 ID字段

语法分析 如果你的语句存在语法分析,它会直接报错。

3.优化器

1.决定走那条索引

2.如果是两张表的连接查询,就需要选择哪张表是主表,哪张表是次表。

4.执行器

1. 执行语句。

 

5.查询缓存

查询缓存,顾名思义就是我们查询出来的东西的缓存,如果我们这次查询语句刚好和上次查询的雨具一样,那么就会直接返回查询出来的值,就是一个key-value key就是我们的查询语句,value就是我们查出来的数据。

但是一般在生产数据库服务器我们不会开,为啥?因为弊大于利

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。

好在MySQL也提供了这种“按需使用”的方式。你可以将参数query_cache_type设置成DEMAND,这样对于默认的SQL语句都不使用查询缓存。而对于你确定要使用查询缓存的语句,可以用SQL_CACHE显式指定,像下面这个语句一样:

select SQL_CACHE * from T where ID=10;

需要注意的是,MySQL 8.0版本直接将查询缓存的整块功能删掉了,也就是说8.0开始彻底没有这个功能了。

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

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

相关文章

Vulnhub项目:MrRobot

靶机地址:Mr-Robot: 1 ~ VulnHub 渗透过程: 先看描述,有3跟keys在这个靶机中 首先确定靶机ip,对靶机开放的端口进行探测 访问靶机地址,出现了很酷炫的web界面,这个mr.robot,是一个美剧,还是挺…

Python语言请求示例,电商商品详情接口,代码封装

Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [2] 随着版本的不断更新和语言新功能的添加,逐渐被用于…

环信 uni-app Demo升级改造计划——Vue2迁移到Vue3(一)

前言 由于环信uni-app Demo 为早期通过工具从微信小程序转换为的 uni-app 项目,经过实际的使用以及复用反馈,目前已经不适用于当前的开发使用,因此开启了整体升级改造计划,目前一期计划将 vue2 代码进行手动转换为 vue3vite&#…

MySQL高级第十四篇:锁机制分类详解(表锁,行锁,页锁,悲观锁和乐观锁)

MySQL高级第十四篇:锁机制分类详解(表锁,行锁,页锁,悲观锁和乐观锁) 一、概述二、MySQL并发事物访问相同记录的几种情况?1. 读--读情况2. 写--写情况3. 读--写情况(写--读情况&#…

大数据项目实战之数据仓库:电商数据仓库系统——第8章 数仓开发之DIM层

文章目录 第8章 数仓开发之DIM层8.1 商品维度表8.2 优惠券维度表8.3 活动维度表8.4 地区维度表8.5 日期维度表8.6 用户维度表8.7 数据装载脚本8.7.1 首日装载脚本8.7.2 每日装载脚本 第8章 数仓开发之DIM层 DIM层设计要点: (1)DIM层的设计依…

解决 Microsoft Edge Dev 版本中右上角的 bing 按钮消失的问题 让 New Bing 还能阅读分析文档!

Microsoft Edge Dev 右上角的必应图标消失了,使得无法用 New Bing 阅读分析文档,到底什么原因呢? 针对 Microsoft Edge Dev 版本中右上角的发现按钮消失的问题,网上搜索解决方案。发现也有一些用户反馈在更新 Microsoft Edge Dev …

【C++STL精讲】优先级队列(priority_queue)与双端队列(deque)

文章目录 💐专栏导读💐文章导读🌷优先级队列——priority_queue🌸什么是优先级队列?🌸优先级队列的基本使用🌸什么是仿函数?🌸优先级队列的模拟实现 🌷双端队…

本地Pycharm连接远程服务器训练模型教程-yolov5为例

本篇文章解决的问题: 本地pycharm 与云服务器/实验室服务器进行远程连接跑实验训练、同步本地与云服务器的全部或者部分文件。 在这之前需要做的的工作: 1.服务器上已经创建好虚拟环境(不会的可以看下篇文章):使用云…

git commit三种回退的方式

git commit 回退 弄清楚三个区 工作区(working tree): 本地编辑器 暂存区(index):git add操作后进入暂存区,可用git status查看 本地仓库(repository):git …

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考)

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考) 一、串口通信概述1.1 串口通信1.2 串行通信1.2.1 串行同步通信1.2.2 串行异步通信1.2.2.1 异步通信的数据格式1.2.2.2 异步通信的数据发送过程1.2.2.3 异步通信的数据接收过程 1.3 串…

Redis如何保障缓存与数据库的数据一致性问题?

目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下,该解决方案要注意的问题 一.最经典的数据库加缓存的双写双删模式 1.1 Cache Aside Pattern概念以及读写逻辑 (…

redis非关系型数据库部署和使用(linux)

1.概念 NoSQL非关系型数据库是一种不使用关系模型来组织数据的数据库,通常用于存储非结构化或半结构化的数据,不支持或只部分支持SQL语言,满足最终一致性。非关系型数据库有多种类型,例如键值数据库、文档数据库、列式数据库、图形…

Shopee、Grab、Gojek 打造超级app已成为主流

超级App的概念在全球范围内逐渐被接受和采用。 超级App是指一种综合性的应用程序,允许用户在同一个平台上访问多个不同的服务,包括支付、社交媒体、出行、点餐等等。它的发源地是东南亚地区,如中国的微信、印度的Paytm和印尼的Gojek等应用&a…

Spring入门案例--bean的生命周期

bean的生命周期 关于bean的相关知识还有最后一个是bean的生命周期,对于生命周期,我们主要围绕着bean生命周期控 制 来讲解: 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。 bean生命周期是什么? bean对…

C++ | 说说类中的static成员

【概念】:声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化 文章目录 一、面试题引入二、static特…

5个实用的JavaScript原生API

本文带来5个难得一见的JavaScript原生API,为我们的前端开发带来意想不到的便利。 1. getBoundingClientRect() Element.getBoundingClientRect() 方法返回一个 DOMRect 对象,该对象提供有关元素大小及其相对于视口的位置的信息。 domRect element.ge…

Java笔记_11(常用API)

Java笔记_11 一、常用的API1.1、MathMath练习 1.2、System1.3、Runtime1.4、Object1.5、浅克隆、深克隆1.6、对象工具类的Objects1.7、BigInteger(大整数)1.8、BigDecimal(大小数) 二、正则表达式2.1、正则表达式基础知识2.2、正则…

关于WordPress的20个有趣事实

时值 2022 年,互联网格局和 WordPress 的流行发生了重大变化。COVID-19 流行几乎影响到人类生存的方方面面,包括我们的互联网习惯,这也不例外。 到 2022 年,我们在家工作的人数显着增加,下岗或发现自己有更多空闲时间…

Python基础实战3-Pycharm安装简介

Pycharm下载、安装与使用 1.打开pycharm官网:下载 PyCharm: Python IDE for Professional Developers by JetBrains 2.选择自己对应的操作系统,点击Download,默认是最新版本,想安装其他版本可以选择Other versions下载…

【iOS】—— Masonry源码学习(浅看,未完)

Masonry 文章目录 MasonryNSLayoutConstraint用法Masonry源码 Masonry在我们之前的学习中是一个非常有用的第三方库。 Masonry是一种基于Objective-C语言的轻量级布局框架,它可以简化iOS应用程序中的自动布局任务。Masonry提供了一个方便的API,可以编写更…