MySQL之体系结构

华子目录

  • MySQL简介
  • MySQL的特性
  • MySQL版本
    • MySQL常见版本
  • 数据库排名网站
  • MySQL结构体系
    • 查看最大连接数
    • 查询缓存配置情况
  • 一条SQL语句执行流程

MySQL简介

  • MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。
  • 目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL的特性

  • 1.使用C和C++ 编写,并使用了多种编译器进行测试,保证源代码的可移植性。
  • 2.支持 AIX、BSDi、FreeBSD、HP-UX、LinuxMac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。
  • 3.为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等
  • 4.支持多线程,充分利用CPU资源,支持多用户。
  • 5.优化的SQL查询算法,有效地提高查询速度。
  • 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
  • 7.提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
  • 8.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
  • 9.提供用于管理、检查、优化数据库操作的管理工具。
  • 10.可以处理拥有上千万条记录的大型数据库。

MySQL版本

  • 1.Alpha版:开发版,公司内部使用
  • 2.Beta版:完成开发后,用户体验版
  • 3.RC版:生产环境发布之前的一个小版本或称候选版
  • 4.GA版:正式发布版本

MySQL常见版本

  • MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
  • MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。
  • MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。
  • MySQL Cluster CGE 高级集群版,需付费

数据库排名网站

http://db-engines.com/en/ranking

MySQL结构体系

  • Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。
  • Connectors指的是不同语言中与SQL的交互。
  • Management Serveices & Utilities: 系统管理和控制工具。
  • Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求。
  • SQL Interface:SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。
  • Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。
  • Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。
  • Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
  • Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

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

查看最大连接数

mysql> show variables like '%max_connections%';

查询缓存配置情况

mysql> show variables like '%query_cache%';
MySQL 是一个开源的关系型数据库管理系统(RDBMS),它采用了典型的客户端-服务器体系结构。以下是 MySQL 的基本体系结构:1. 客户端层(Client Layer):- 客户端层是与用户交互的部分,用户通过客户端连接到 MySQL 服务器,并发送查询和命令。- 客户端可以是各种类型的应用程序,例如命令行工具、图形用户界面(GUI)、Web 应用程序等。- 客户端与服务器之间通过网络连接进行通信,通常使用标准的 MySQL 协议进行数据交换。2. 连接池管理器(Connection Pool Manager):- 连接池管理器负责管理客户端与服务器之间的连接。- 它处理连接的创建、维护和回收,以确保高效地使用服务器资源并提高性能。3. 解析器(Parser):- 解析器负责解析客户端发送的 SQL 查询和命令,并将其转换为内部数据结构以供后续处理。- 解析器还执行语法和语义分析,以确保查询和命令的正确性。4. 优化器(Optimizer):- 优化器负责对解析后的查询进行优化,以提高执行效率。- 它使用各种优化技术和算法,例如查询重写、索引选择、连接重排序等,以生成执行效率更高的查询计划。5. 查询缓存(Query Cache)(部分版本中不再使用):- 查询缓存存储已经执行过的查询结果,以提高相同查询的执行速度。- 当客户端发送一个查询时,MySQL 首先检查查询缓存,如果找到了相同的查询,则直接返回缓存的结果,而不需要执行实际的查询操作。6. 存储引擎层(Storage Engine Layer):- 存储引擎层负责管理数据的存储和检索,它实现了 MySQL 的各种存储引擎(例如 InnoDB、MyISAM 等)。- 不同的存储引擎提供了不同的特性、性能和适用场景,用户可以根据需求选择合适的存储引擎。7. 锁管理器(Lock Manager):- 锁管理器负责管理数据库中的锁,以确保事务的并发控制和数据一致性。- 它处理锁的申请、释放和冲突解决,以避免数据的并发访问导致的问题。8. 日志管理器(Log Manager):- 日志管理器负责管理数据库的事务日志,以实现事务的持久性和恢复能力。- 它记录所有的数据修改操作,包括事务的提交和回滚,以便在数据库发生故障时进行恢复。9. 缓冲池(Buffer Pool):- 缓冲池是内存中的一个区域,用于缓存数据库的数据和索引页,以提高数据访问的速度。- 它充当了内存和磁盘之间的缓冲,减少了频繁的磁盘 I/O 操作,从而提高了数据库的性能。10. 磁盘管理器(Disk Manager):- 磁盘管理器负责管理数据库在磁盘上的存储结构,包括数据文件、日志文件、索引文件等。- 它处理数据的读写操作,并管理磁盘空间的分配和释放。这些组件共同构成了 MySQL 的体系结构,实现了数据库管理系统的各种功能,包括数据存储、查询处理、事务管理、并发控制、日志记录、缓存管理等。

一条SQL语句执行流程

连接层(1)提供连接协议:TCP/IP 、SOCKET(2)提供验证:用户、密码,IP,SOCKET(3)提供专用连接线程:接收用户SQL,返回结果通过以下语句可以查看到连接线程基本情况mysql> show processlist;SQL层(1)接收上层传送的SQL语句(2)语法验证模块:验证语句语法,是否满足SQL_MODE(3)语义检查:判断SQL语句的类型DDL :数据定义语言DCL :数据控制语言DML :数据操作语言DQL: 数据查询语言...4)权限检查:用户对库表有没有权限(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划代价模型:资源(CPU IO MEM)的耗损评估性能好坏(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果执行结果:在磁盘的xxxx位置上(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能(9)提供日志记录(日志管理章节):binlog,默认是没开启的。存储引擎层(类似于Linux中的文件系统)负责根据SQL层执行的结果,从磁盘上拿数据。将16进制的磁盘数据,交由SQL结构化化成表,连接层的专用线程返回给用户。
一条 SQL 语句在 MySQL 中的执行流程通常包括以下步骤:1. **客户端发送 SQL 查询**:客户端通过网络连接发送 SQL 查询到 MySQL 服务器。2. **连接建立**:MySQL 服务器接收到客户端发送的 SQL 查询,并建立与客户端的连接。3. **解析器解析 SQL 查询**:MySQL 服务器中的解析器解析客户端发送的 SQL 查询,分析语法和语义,并将其转换为内部的执行计划。4. **优化器优化执行计划**:优化器对解析后的 SQL 查询进行优化,选择最佳的执行计划以提高执行效率。5. **存储引擎执行查询**:MySQL 服务器根据优化后的执行计划,调用相应的存储引擎执行查询操作。6. **锁管理器处理并发访问**:如果查询涉及到数据的读写操作,锁管理器负责处理并发访问,确保事务的隔离性和一致性。7. **数据读取或修改**:存储引擎根据执行计划从磁盘或缓存中读取数据,或者进行数据的修改操作。8. **日志管理器记录事务日志**:如果查询涉及到事务的修改操作,日志管理器负责记录事务日志,以实现事务的持久性和恢复能力。9. **返回结果给客户端**:存储引擎将查询结果返回给 MySQL 服务器,MySQL 服务器再将结果返回给客户端。10. **连接关闭**:客户端完成对查询结果的处理后,关闭与 MySQL 服务器的连接。这是一条 SQL 查询在 MySQL 中的基本执行流程。在执行过程中,MySQL 会根据查询的具体情况进行优化和调整,以提高执行效率和性能。

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

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

相关文章

springboot项目启动报错:dynamic-datasource can not find primary datasource

项目启动报错信息 Caused by: com.baomidou.dynamic.datasource.exception.CannotFindDataSourceException: dynamic-datasource can not find primary datasourceat com.baomidou.dynamic.datasource.DynamicRoutingDataSource.determinePrimaryDataSource(DynamicRoutingDat…

编程实例分享,手表养护维修软件钟表维修开单管理系统教程

编程实例分享,手表养护维修软件钟表维修开单管理系统教程 一、前言 以下教程以 佳易王钟表维护维修管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 左侧为导航栏, 1、系统设置:可以设置打…

【深度学习】pytorch 与 PyG 安装(pip安装)

【深度学习】pytorch 与 PyG 安装(pip安装) 一、PyTorch安装和配置(一)、安装 CUDA(二)、安装torch、torchvision、torchaudio三个组件(1)下载镜像文件(2)创建…

【网络技术】【Kali Linux】Nmap嗅探(二)多设备扫描

上期实验博文:(一)简单扫描 一、实验环境 本次实验进行Nmap多设备扫描,实验使用 Kali Linux 虚拟机(扫描端)、Ubuntu 22.04虚拟机(被扫描端1)、Ubuntu 18.04虚拟机(被扫…

【力扣】快乐数,哈希集合 + 快慢指针 + 数学

快乐数原题地址 方法一:哈希集合 定义函数 getNext(n) ,返回 n 的所有位的平方和。一直执行 ngetNext(n) ,最终只有 2 种可能: n 停留在 1 。无限循环且不为 1 。 证明:情况 1 是存在的,如力扣的示例一…

嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令

配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.什么是命令? 命令就是可执行程序。 比如 ls -a…

C#静态数组删除数组元素不改变数组长度 vs 动态数组删除数组元素改变数组长度

目录 一、使用的方法 1.对静态数组删除指定长度并不改变数长度的方法 (1)静态数组 (2)对静态数组删除元素不得改变其长度 2.对动态数组删除指定长度并改变数长度的方法 (1)动态数组 (2&a…

【大模型上下文长度扩展】MedGPT:解决遗忘 + 永久记忆 + 无限上下文

MedGPT:解决遗忘 永久记忆 无限上下文 问题:如何提升语言模型在长对话中的记忆和处理能力?子问题1:有限上下文窗口的限制子问题2:复杂文档处理的挑战子问题3:长期记忆的维护子问题4:即时信息检…

javaEE - 20( 18000字 Tomcat 和 HTTP 协议入门 -1)

一: HTTP 协议 1.1. HTTP 是什么 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了. HTT…

美赛结束后,还可以转学术论文发表!

美赛论文转学术论文 写在前面学术论文发表的意义论文发表指导 写在前面 2024年美赛已经顺利结束了,美赛虽然画上了句号,但大家的科研竞赛之路才刚刚开始。 大家都在赛事中完成了一份具有发表基础的文章,想要这篇文章价值最大化,…

2.8作业

程序代码&#xff1a; CCgcc EXEhello OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE) 程序代码&#xff1a; #include<stdio.h> #include<string.h&…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

MySQL篇----第七篇

系列文章目录 文章目录 系列文章目录前言一、水平分区二、分库分表之后,id 主键如何处理三、存储过程(特定功能的 SQL 语句集)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…

从零开始手写mmo游戏从框架到爆炸(七)— 消息封装

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 上一篇&#xff0c;我们初步把消息handler 注册到了服务中&#xff0c;在进行后续工作之前我们需要再做一些准备工作。 第一&#xff1a;把之前自己管理的bean放到spring中…

c++设计模式之装饰器模式

作用 为现有类增加功能 案例说明 class Car { public:virtual void show()0; };class Bmw:public Car { public:void show(){cout<<"宝马汽车>>"<<endl;} };class Audi:public Car { public:void show(){cout<<"奥迪汽车>>&q…

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…

嵌入式学习之Linux入门篇笔记——10,Linux连接档概念

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 目录 1.Linux 下的连接档种类 2.什么是 inode&#xff1f; 3.什…

7、7 个适合初学者的项目,让您开始使用 ChatGPT

7 个适合初学者的项目,让您开始使用 ChatGPT 在当今世界释放人工智能的力量。 在技术以前所未有的速度发展的时代,人工智能?—?或朋友🤓的人工智能脱颖而出,成为最具变革性的力量之一。 从自动化日常任务到预测复杂模式,人工智能正在重塑行业并重新定义可能性。 当我…

Unity2D 学习笔记 0.Unity需要记住的常用知识

Unity2D 学习笔记 0.Unity需要记住的常用知识 前言调整Project SettingTilemap相关&#xff08;创建地图块&#xff09;C#脚本相关程序运行函数private void Awake()void Start()void Update() Collider2D碰撞检测private void OnTriggerStay2D(Collider2D player)private void…

【Algorithms 4】算法(第4版)学习笔记 06 - 2.3 快速排序

文章目录 前言参考目录学习笔记1&#xff1a;基本算法1.1&#xff1a;快速排序 demo 演示1.2&#xff1a;快速排序切分代码实现1.3&#xff1a;实现细节1.4&#xff1a;案例分析1.4.1&#xff1a;最佳案例1.4.2&#xff1a;最坏案例1.4.3&#xff1a;平均案例分析1.5&#xff1…