mysql cbo_MySQL的体系架构

一、MySQL基架

对于MySQL来说,虽然经历了多个版本迭代(MySQL5.5,MySQL 5.6,MySQL 5.7,MySQL 8),但每次的迭代,都是基于MySQL

基架的,MySQL基架大致包括如下几大模块组件:

MySQL向外提供的交互接口(Connectors)

管理服务组件和工具组件(Management Service & Utilities)

连接池组件(Connection Pool)

SQL接口组件(SQL Interface)

查询分析器组件(Parser)

优化器组件(Optimizer)

缓存主件(Caches & Buffers)

插件式存储引擎(Pluggable Storage Engines)

物理文件(File System)

28c1427daa879285f4fe2e0e6600f802.png

(一)MySQL向外提供的交互接口(Connectors)

Connectors组件,是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互。

(二)管理服务组件和工具组件(Management Service & Utilities)

提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等

(三)连接池组件(Connection Pool)

负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。

(四)SQL接口组件(SQL Interface)

接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。

(五)查询分析器组件(Parser)

首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理。

(六)优化器组件(Optimizer)

对SQL命令按照标准流程进行优化分析。有基于CBO的优化(成本)和基于RBO的优化(规则)

(七)缓存主件(Caches & Buffers)

缓存和缓冲组件,存放一些常量数据,并不经常修改。由于大部分并不会频繁的执行一条查询语句,不同的查询语句都会去缓存结果,占用内存空间。命中率比较低。所以8.0 移除了缓存

(八)MySQL存储引擎

什么是MySQL存储引擎

MySQL属于关系型数据库,而关系型数据库的存储是以表的形式进行的,对于表的创建,数据的存储,检索,更新等都是由MySQL存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。存储引擎可以概括为数据文件在磁盘上的不同组织形式. SQL Server和Oracle的读者可能很清楚,这两种数据库的存储引擎只有一个,而MySQL的存储引擎种类比较多,如MyISAM,InnoDB和Memory.多种存储引擎是因为MySQL的开源性.

MySQL存储引擎作用

MySQL存储引擎在MySQL中扮演重要角色,其作比较重要作用,大致归结为如下两方面:

管理表创建,数据检索,索引创建等

满足自定义存储引擎开发。

MySQL引擎种类

23b2364a8f640827637a2a61a3f96177.png

MyISAM

适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

InnoDB

是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

几种典型MySQL存储引擎比较

(九)物理文件(File System)

实际存储MySQL 数据库文件和一些日志文件等的系统,如Linux,Unix,Windows等。

二、一个查询流程图

0bde3a3771e49b1a3a774964056b8a40.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值