mysql-构架原理

mysql-构架原理



前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、体系构架

在这里插入图片描述

构架自上而下一次是网络连接层、服务层、存储引擎层和系统文件层。

1.网络连接层

通过各自的API去连接各自的语言,例如java(jdbc)、Python等

2.服务层

连接池、系统管理和控制工具、SQL接口、解析器、查询优化器、缓存
连接池:负责储存和管理客户端与数据库的连接
系统管理和控制工具:集群管理、备份恢复等
SQL接口:接受客户端的SQL命令,返回用户需要的结果
解析器:将SQL解析生成解析树,检查是否合法
查询优化器:检测合法后,将由优化器将其转化成执行计划,然后与存储引擎交付
缓存:表缓存、记录缓存、权限缓存、引擎缓存等

3.存储引擎层

负责数据存储与提取,与底层系统文件的额交互。最常见的存储引擎是MYISAM、MYSQL

4.系统文件层

负责将数据库的日志存储在文件系统上、完成和存储引擎的交互。有日志文件、数据文件、配置文件、pid文件、socket文件等

二、运行机制

在这里插入图片描述

1.创建连接

客户端/服务器通信协议与MySQL建立连接,通信方式是半双工。
通信机制:全双工、半双工、单工
全半工:能同时发送和接收数据,例如打电话
双半工:指的是某一时刻,要么发送数据要么接受数据,不能同时
单工:只能接收或是发送,例如单行道

2.查询缓存

如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句,则将查询结果直接返回给客户端;如果没有开启查询
缓存或者没有查询到完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成“解析树”。

3.解析器

没有缓存就将SQL语句语法解析,生成解析树。对语法进行检查是否存在问题。

4.查询优化器

查询优化策略有以下几点:
等价变换策略、优化count、min、max等函数、提前终止查询、in的优化
等价策略:5=5 and a>5 改成 a > 5;a < b and a=5 改成b>5 and a=5;基于联合索引,调整条件位置等
优化count、min、max等函数:InnoDB引擎min函数只需要找索引最左边;InnoDB引擎max函数只需要找索引最右边;MyISAM引擎count(*),不需要计算,直接返回
提前终止查询:使用了limit查询,获取limit所需的数据,就不在继续遍历后面数据
in的优化:使用二分查找查找数据,比如where id in (2,1,3),变成 in (1,2,3)

5.查询执行引擎负责执行 SQL 语句

如果开启了查询缓存,先将查询结果做缓存操作,返回结果过多,采用增量模式返回

三、存储引擎

在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎

1.解析器 InnoDB和MyISAM对比

  1. 事务和外键: InnoDB支持事务和外键,安全;MYISAM不支持事务和外键
  2. 锁机制:INNODB支持行级锁;基于索引;MYISAM支持表级锁。锁定整张表
  3. 索引结构:INNODB使用聚集索引,记录和索引在一起存储;MYISAM使用非聚集索引,索引和记录分开
  4. 并发处理能力:INNODB读写阻塞可以与隔离级别有关,可以采用多版本并发控制支持高并发;MYISAM使用表级锁,并发处理能力差,读之间阻塞,写之间不阻塞
  5. 存储文件:InnoDB表对应两个文件,一个.frm表结构文件,一个.ibd数据文件; MyISAM表对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件
    总结:是否需要事务?有,InnoDB;
    是否存在并发修改?有,InnoDB;
    是否追求快速查询,且数据修改少?
    是,MyISAM在绝大多数情况下,推荐使用InnoDB

2.InnoDB存储结构

  1. 内部结构:Buffer pool、Change Buffer、Adaptive Hash Index 和Log Buffer四大组件。
  2. 磁盘结构:Tablespaces,InnoDB Data Dictionary,Doublewrite Buffer、Redo Log和Undo logs

3.InnoDB数据文件

  1. 分为一个ibd数据文件–>Segment(段)–>Extent(区)–>Page(页)–>Row(行)
  2. 页:用于存储多个Row行记录,大小为16K。包含很多种页类型,比如数据页,undo页,系
    统页,事务数据页,大的BLOB对象页。
  3. 行,包含了记录的字段值,事务ID(Trx id)、滚动指针(Roll pointer)、字段指针(Field
    pointers)等信息。
    在这里插入图片描述

总结

对mysql构架结构以及原理进行简单的介绍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值