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

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.kler.cn/a/232142.html

相关文章:

  • dpdk tm eth event驱动协同完成收发包流程
  • Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)
  • 利用Blackbox AI让编程更轻松
  • java中volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
  • 加速 AI 创新:引入 Elastic AI 生态系统
  • Go语言中的类型
  • 获取视频帧图片
  • 五、优化日程(Optimize Your Schedule)
  • 报道|2024 INFORMS Franz Edelman奖决赛名单
  • Python中的数据类型
  • 前端实现支付跳转以及回跳
  • 【前端高频面试题--Vue路由篇】
  • 微信小程序 民宿预订租赁系统uniApp
  • NLP中的嵌入和距离度量
  • qss的使用
  • iOS 需求 多语言(国际化)App开发 源码
  • [HTTP协议]应用层的HTTP 协议介绍
  • 从零开始 TensorRT(3)Python 篇:解析 ONNX、PyTorch TensorRT 接口
  • vue使用Mars3d弹框嵌套video视频/实时视频(flv) 使用jessibuca.js播放器
  • CTFshow web(php命令执行 45-49)
  • k8s 部署java应用 基于ingress+jar包
  • Flask基础学习
  • 高仿原神官网UI 纯html源码
  • 【C++11】统一初始化 和 initializer_list
  • 微信小程序新手入门教程四:样式设计
  • 自然语言处理(NLP)——使用Rasa创建聊天机器人