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

【数据库】数据库基础架构

数据库架构

数据库对于后端程序员来说是每天都需要打交道的系统,因此了解并掌握MySQL底层原理是必须的。

基础架构图

MySQL内部分为两层,一个是Server层,另一个是存储引擎层,而我们常用的就是MyISAM、InnoDB,主要负责数据的读取和存储。
在这里插入图片描述

连接器

连接器其实比较好理解,我们编写的程序Java、go 通过客户端程序去连接,需要提供ip+端口,账号,密码。通过网络TCP建立网络通信后,连接器授信根据提供的账号密码进行验证是否存在,如果不存在的话。
在这里插入图片描述

1045 - Access denied for user 'root1'@'localhost' (using password: YES)

会抛出以上异常,代表账号密码不正确。如果账号密码连接正确,就会到权限表查看对应用户的权限,依赖此时读取到的权限。
连接成功后,如果没有操作默认有8h的连接时间,超过这个时间后就会连接失效。默认就是8小时/。。在这里插入图片描述
创建连接这种动作是比较耗费系统资源的,所以在实际的应用中,我们会创建长连接来避免频繁的短连接操作。

查询缓存

如果成功创建连接之后,那么就会先到缓存中查询,是否存在数据,有的话直接返回。具体的结构是 key,value,key对应查询SQL语句,value对应数据结果。如果没有的话,直接执行后续流程,拿到数据,将数据放到缓存中。
什么场景比较适合查询缓存呢
其实对于大多数的应用老说,都不建议开启查询缓存,因为只要存在对表数据以及结构操作,那么缓存数据就会失效。缓存命中率会比较低,所以,一般不建议开启。除非是那种静态配置表_config之类的,可以使用。

query_cache_type = DEMAND 

以上配置不会走查询缓存,
在这里插入图片描述
不过需要注意的是,mysql 8.0之后不在提供查询缓存。

分析器

如果从查询缓存中获取不到数据,那么就直接开始执行SQL,但是需要先解析SQL,先词法分析,获取这个SQL要做什么,然后语法分析,是否符合SQL规范。如果不符合会抛出
在这里插入图片描述
一般语法错误会提示第一个出现错误的位置,所以你要关注的是紧接“use near”的内容。
在这里插入图片描述

优化器

分析器可以获取到要做什么,到优化器这里就是觉得表里有多个索引的时候,应该选择哪个,或者lefo join的时候应该先选择哪个表的数据进行执行。到这里语句的执行方案就确定下来。

执行器

Mysql到这里通过分析器知道要做什么,优化器知道如何去做,
会根据之前定义的存储引擎,调用存储引擎接口执行SQL,如果查询的是name='xx’的数据,没有索引的前提下,会全标扫描一行行取出来,符合的数据放到res中,最后返回结果,所以rows_examined!=存储引擎扫描的行数,可能存在,执行期调用了一次,但是存储引擎执行了多行。

存储引擎

目前主流的都是InnoDB存储引擎,InnoDB内存有page页存储数据的,一页=64KB

执行流程

在这里插入图片描述

资料来源:极客时间<mysql 45讲>

相关文章:

【数据库】数据库基础架构

数据库架构 数据库对于后端程序员来说是每天都需要打交道的系统&#xff0c;因此了解并掌握MySQL底层原理是必须的。 基础架构图 MySQL内部分为两层&#xff0c;一个是Server层&#xff0c;另一个是存储引擎层&#xff0c;而我们常用的就是MyISAM、InnoDB&#xff0c;主要负…...

English Learning - L2 语音作业打卡 双元音 [ɔɪ] [ɪə] Day16 2023.3.8 周三

English Learning - L2 语音作业打卡 双元音 [ɔɪ] [ɪə] Day16 2023.3.8 周三&#x1f48c;发音小贴士&#xff1a;&#x1f48c;当日目标音发音规则/技巧:&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音 [ɔ…...

C++语法规则4(C++面向对象)

接口&#xff08;抽象类&#xff09; 接口描述了类的行为和功能&#xff0c;而不需要完成类的特定实现。C 接口是使用抽象类来实现的&#xff0c;抽象类与数据抽象互不混淆&#xff0c;数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚…...

【Spring 深入学习】AOP的前世今生之后续

AOP的前世今生之后续 1. 概述 上篇文章【Spring 深入学习】AOP的前世今生之代理模式我们讲述了代理模式。而我们今天的主人公AOP就是基于代理模式实现的&#xff0c;所以我们今天会简单学习下AOP 2. 什么是AOP 是面向切面编程&#xff0c;一般可以帮助我们在不修改现有代码的情…...

软考高项——配置管理

配置管理配置管理配置管理6个主要活动配置项配置基线配置项的状态配置库配置库权限管理配置审计配置管理 配置管理的总线索包括&#xff1a; 1&#xff09;配置管理6个主要活动 2&#xff09;配置项 3&#xff09;配置基线 4&#xff09;配置项的状态 5&#xff09;配置库 6&a…...

网站SEO优化,网站TDK三大标签SEO优化,LOGO SEO优化

SEO&#xff08;Search Engine Optimization&#xff09;汉译为搜索引擎优化&#xff0c;是一种利用搜索引擎的规则提高网站在有关搜索 引擎内自然排名的方式。 SEO 的目的是对网站进行深度的优化&#xff0c;从而帮助网站获取免费的流量&#xff0c;进而在搜索引擎上提升网站的…...

select查询语句

worker表的字段有id, d_id, name, sex, birthday, salary, address 编号,部门号,姓名,性别,出生日期,工资,家庭住址 department表的字段有d_id, d_name, function, address 部门号,部门名,部门职能,部门位置 (1)查询worker表的所有记录(用*表示)。 select * fro…...

没有对象感,沟通太费劲

沟通中最重要的感觉&#xff1a;对象感&#xff01; 要沟通的是谁&#xff1f;以啥方式最好&#xff1f; 趣讲大白话&#xff1a;蹲着跟小孩说话 【趣讲信息科技100期】 ******************************* 对象感是沟通者必须训练和提升的 是换位思考的一种能力 以便跟沟通对象进…...

智能优化算法之遗传算法

该算法已被很多篇文章讲解&#xff0c;本文将会去除很多较简单的内容&#xff0c;挑选认为重点核心部分进行讲述&#xff0c;内容中有属于信息的收集整理部分&#xff0c;也有属于自己理解的部分。 1、遗传算法概述 遗传算法是一类借鉴生物界的进化规律演化而来的随机化搜索方…...

【rabbitmq 实现延迟消息-插件版本安装(docker环境)】

一&#xff1a;插件简介 在rabbitmq 3.5.7及以上的版本提供了一个插件&#xff08;rabbitmq-delayed-message-exchange&#xff09;来实现延迟队列功能。同时插件依赖Erlang/OPT 18.0及以上。 二&#xff1a;插件安装 1&#xff1a;选择适合自己安装mq 版本的插件&#xff1…...

【大数据】HDFS管理员 HaAdmin 集群高可用命令详细使用说明

高可用HaAdmin使用概览使用说明checkHealth查看NameNode的状态所有NN的服务状态查询指定NN的服务状态failovertransitionToActive概览 HDFS高可用特性解决了集群单点故障问题&#xff0c;通过提供了两个冗余的NameNode以主动或被动的方式用于热备&#xff0c;使得集群既可以从…...

京区航天研究所 哪些比较好的研究所?

第一梯队&#xff1a;一院一部、战术武器部、10所、12所、研发部、空天部&#xff0c;五院501所&#xff08;总体设计部&#xff09;、502所、通导部、遥感部、钱室&#xff08;所人均年薪35w-50w级别&#xff09; 第二梯队&#xff1a;一院14所、15所&#xff0c;二院未来实验…...

Nacos配置拉取及配置动态刷新原理【源码阅读】

Nacos配置拉取及配置刷新原理 一、初始化时获取配置文件 背景 SpringCloud项目中SpringBoot在启动阶段除了会创建SpringBoot容器&#xff0c;还会通过bootstrap.yml构建一个SpringCloud容器&#xff0c;之后会在准备上下文阶段通过SPI加载实现类后&#xff0c;会进行配置合并…...

第十届省赛——9等差数列(集合做法)

题目&#xff1a;试题 I: 等差数列时间限制: 1.0s 内存限制: 512.0MB 本题总分&#xff1a;25 分【问题描述】数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列&#xff0c;只记得其中 N 个整数。现在给出这 N 个整数&#xff0c;小明想知道包含这…...

《数据分析-JiMuReport03》JiMuReport报表设计入门介绍-新建报表

报表设计 1 新建报表 1.1 创建新的数据报表 以数据报表为例&#xff0c;简单介绍创建报表的过程 1.2 进入报表设计页面 如下图可见&#xff0c;主要分为四个模块&#xff1a; 模块一(左) 数据集管理报表信息数据字典 模块二(右) 这部分是对数据报表的进一步优化 模块三(上…...

从功能测试进阶自动化测试,爆肝7天整理出这一份超全学习指南【附网盘资源】

因为我最近在分享自动化测试技术&#xff0c;经常被问到&#xff1a;功能测试想转自动化&#xff0c;请问应该怎么入手&#xff1f;有没有好的资源推荐&#xff1f;那么&#xff0c;接下来我就结合自己的经历聊一聊我是如何在工作中做自动化测试的。&#xff08;学习路线和网盘…...

CNN神经网络——手写体识别

目录 Load The Datesets Defining,Training,Measuring CNN Algorithm Datasets GRAET HONOR TO SHARE MY KNOWLEDGE WITH YOU This paper is going to show how to use keras to relize a CNN model for digits classfication Load The Datesets The datasets files are …...

python调试模块ipdb

1. 调试python ipdb是用来python中用以交互式debug的模块&#xff0c;可以直接利用pip安装; 其功能类似于pycharm中 python控制台&#xff0c; 而使用ipdb 的优点&#xff0c;便是直接在代码中调试&#xff0c; 避免了在python控制台&#xff0c;或者重新设置一些简单变量。…...

【数据库】聊聊MySQL的日志,binlog、undo log、redo log

日志 在数据库中&#xff0c;如何保证数据的回滚&#xff0c;以及数据同步&#xff0c;系统宕机后可以恢复到原来的状态&#xff0c;其实就是依靠日志。 其中bin log是Server层特有的&#xff0c;redo log是Innodb存储引擎特有的。 bin log 是逻辑日志&#xff0c;主要记录这条…...

aws dynamodb java低等级api和高级客户端api的使用

参考资料 https://docs.amazonaws.cn/zh_cn/sdk-for-java/latest/developer-guide/setup-project-maven.html 初始化环境 创建maven项目 mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate \-DarchetypeArtifactId"maven-archetype-quickstart&quo…...

Matlab粒子动画:3D爱心生成与动态模拟

1. 从零开始理解Matlab粒子动画 第一次看到3D爱心在屏幕上跳动时&#xff0c;那种震撼感至今难忘。作为理工科学生&#xff0c;我们常常用Matlab处理枯燥的数据&#xff0c;但很少有人知道它还能创作出如此浪漫的视觉效果。这就像用计算器弹钢琴——工具本身没有情感&#xff0…...

高分二号卫星全解析:从光谱波段到城市管理的实战应用

1. 高分二号卫星的技术参数详解 高分二号卫星作为我国首颗亚米级高分辨率民用光学遥感卫星&#xff0c;其技术参数直接决定了它在城市管理中的应用能力。先说说最核心的空间分辨率&#xff1a;全色波段0.8米意味着能清晰识别小轿车级别的物体&#xff0c;多光谱3.2米分辨率则适…...

3款工业调试开源工具让Modbus通讯诊断效率提升80%

3款工业调试开源工具让Modbus通讯诊断效率提升80% 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan 在工业自动化领域&#xff0c;Modbus协议作为设备间通讯的"通用…...

纯化水系统HMI与PLC协同控制:从界面设计到逻辑实现

1. 纯化水系统控制的核心技术组合 在制药行业的纯化水系统中&#xff0c;HMI&#xff08;人机界面&#xff09;与PLC&#xff08;可编程逻辑控制器&#xff09;的协同工作堪称自动化控制的黄金搭档。这套系统就像是一个精密的"大脑神经中枢"组合——PLC负责底层设备的…...

保姆级拆解:MIT-BEVFusion中Swin Transformer如何高效处理多相机图像(附代码逐行分析)

多相机BEV感知中的Swin Transformer实战&#xff1a;从原理到MIT-BEVFusion代码精要 在自动驾驶感知系统中&#xff0c;如何高效处理多相机输入并构建统一的鸟瞰视图&#xff08;BEV&#xff09;表征一直是核心挑战。本文将深入探讨Swin Transformer在多相机BEV感知中的创新应用…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(七):RRC_INACTIVE状态下的高效定位机制

1. RRC_INACTIVE状态下的5G定位挑战与机遇 在5G网络中&#xff0c;RRC_INACTIVE状态是一种独特的节能模式&#xff0c;它允许设备在保持部分网络连接的同时大幅降低功耗。这种状态特别适合物联网设备&#xff0c;比如智能电表、资产追踪器和可穿戴设备。想象一下你家的智能门锁…...

SDMatte API接口开发教程:基于Python Flask构建标准化服务

SDMatte API接口开发教程&#xff1a;基于Python Flask构建标准化服务 1. 开篇&#xff1a;为什么需要API接口 如果你用过SDMatte这个强大的图像抠图工具&#xff0c;可能会遇到这样的场景&#xff1a;想把抠图功能集成到自己的应用里&#xff0c;或者需要批量处理大量图片。…...

OpenClaw安全实践:Qwen3-VL:30B本地化+飞书权限管控

OpenClaw安全实践&#xff1a;Qwen3-VL:30B本地化飞书权限管控 1. 为什么需要安全自动化 去年我接手了一个棘手的任务&#xff1a;团队每周需要从上百份PDF报告中提取关键数据&#xff0c;整理成统一格式的Excel表格。手动操作不仅耗时&#xff0c;还容易出错。当我尝试用Pyt…...

Java: 手动实现DeepSeek R1工具调用,基于ReAct与Spring AI的实践指南

1. DeepSeek R1工具调用的现状与挑战 DeepSeek R1作为当前热门的开源大模型&#xff0c;在实际应用中经常会遇到需要调用外部工具的场景。但很多开发者在使用过程中发现&#xff0c;当前版本的DeepSeek R1并不支持原生的工具调用功能。这意味着当我们想让模型执行诸如查询天气、…...

华为eNSP实战:三层交换机互连配置全流程(附常见错误排查)

华为eNSP实战&#xff1a;三层交换机互连配置全流程&#xff08;附常见错误排查&#xff09; 在企业网络架构中&#xff0c;三层交换机扮演着至关重要的角色&#xff0c;它不仅能实现二层交换功能&#xff0c;还能进行三层路由转发。华为eNSP作为一款优秀的网络仿真平台&#x…...