DB-Mysql-介绍

mysql的架构介绍

mysql概述

mysql01.bmp

mysql高级

  1. mysql内核优化
  2. sql优化工程师
  3. mysql服务器的优化
  4. 查询语句的优化
  5. 主从复制
  6. 软硬件升级
  7. 容灾备份
  8. sql编程

mysql架构

mysql02.bmp
mysql03.bmp
mysql04.bmp
mysql05.bmp

Connectors

指的是不一样语言中与SQL的交互

Management Serveices & Utilities

系统管理和控制工具

Connection Pool: 链接池

管理缓冲用户链接,线程处理等须要缓存的需求。
负责监听对 MySQL Server 的各类请求,接收链接请求,转发全部链接请求到线程管理模块。每个链接上 MySQL Server 的客户端请求都会被分配(或建立)一个链接线程为 其单独服务。而链接线程的主要工做就是负责MySQLServer 与客户端的通讯,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些链接线程。包括线程的建立,线程的 cache 等。

SQL Interface: SQL接口

接受用户的SQL命令,而且返回用户须要查询的结果。好比select from就是调用SQL Interface

Parser: 解析器

SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
在 MySQL中咱们习惯将全部 Client 端发送给 Server 端的命令都称为 query ,在 MySQL Server 里面,链接线程接收到客户端的一个 Query 后,会直接将该 query 传递给专门负责将各类 Query 进行分类而后转发给各个对应的处理模块。
主要功能:
  1. 将SQL语句进行语义和语法的分析,分解成数据结构,而后按照不一样的操做类型进行分类,而后作出针对性的转发到后续步骤,之后SQL语句的传递和处理就是基于这个结构的。
  2. 若是在分解构成中遇到错误,那么就说明这个sql语句是不合理的

Optimizer: 查询优化器

SQL语句在查询以前会使用查询优化器对查询进行优化。就是优化客户端请求的 query(sql语句) ,根据客户端请求的 query 语句,和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优的策略,告诉后面的程序如何取得这个 query 语句的结果
他使用的是“选取-投影-联接”策略进行查询。
用一个例子就能够理解:
select uid,name from user where gender = 1;
这个select 查询先根据where 语句进行选取,而不是先将表所有查询出来之后再进行gender过滤
这个select查询先根据uid和name进行属性投影,而不是将属性所有取出之后再进行过滤
将这两个查询条件联接起来生成最终查询结果

Cache和Buffer: 查询缓存

他的主要功能是将客户端提交 给MySQL 的 Select 类 query 请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值 作一个对应。该 Query 所取数据的基表发生任何数据的变化以后, MySQL 会自动使该 query 的Cache 失效。在读写比例很是高的应用系统中, Query Cache 对性能的提升是很是显著的。固然它对内存的消耗也是很是大的。
若是查询缓存有命中的查询结果,查询语句就能够直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。好比表缓存,记录缓存,key缓存,权限缓存等

存储引擎接口

存储引擎接口模块能够说是 MySQL 数据库中最有特点的一点了。目前各类数据库产品中,基本上只有 MySQL 能够实现其底层数据存储引擎的插件式管理。这个模块实际上只是 一个抽象类,但正是由于它成功地将各类数据处理高度抽象化,才成就了今天 MySQL 可插拔存储引擎的特点。
从图2还能够看出,MySQL区别于其余数据库的最重要的特色就是其插件式的表存储引擎。
MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎自己无关,多是每一个数据库系统自己都必需的,如SQL分析器和优化器等,
而存储引擎是底层物理结构的实现,每一个存储引擎开发者均可以按照本身的意愿来进行开发。
注意:存储引擎是基于表的,而不是数据库。

存储引擎之MyISAM

show engines 显示安装的mysql提供的存储引擎类型
show variables like '%storage_engine%' 显示默认使用的存储引擎类型mysql

存储引擎之InnoDB

对比项 MyISAM InnoDB
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁 行锁
缓存 只缓存索引,不缓存真实数据 索引和真实数据都会缓存,内存对于系统的性能有着决定性的影响
表空间
关注点 性能 事务
相关文章
相关标签/搜索