五、mysql逻辑架构

逻辑架构图

五、mysql逻辑架构_第1张图片
Connectors
连接器,指的是不同语言中与SQL的交互

Management Serveices & Utilities
系统管理和控制工具

Connection Pool:连接池

  • 管理缓冲用户连接,线程处理等需要缓存的需求。
  • 负责监听对mysql服务器的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上mysql服务器的客户端请求都会被分配(或创建)一个连接线程为其单独服务。

SQL Interface:SQL接口
接受用户的sql命令,并且返回用户需要查询的结果。

Parser:解析器
sql命令传递到解析器的时候会被解析器验证和解析。

  • 将sql语句进行语义和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,做出针对性的转发到后续步骤,以后sql语句的传递和处理就是基于这个结构的。
  • 如果在分解过程中遇到错误,那么就说明这个sql语句是不符合语法的。

Optimizer:查询优化器
sql语句在查询之前会使用查询优化器对查询进行优化。(explain语句可以查看sql语句执行计划)

Cache和Buffer:查询缓存
将客户端提交给mysql的select请求的返回结果集添加到内存中,与该查询语句的一个hash值做一个对应。
该查询语句所取的基表发生任何数据的变化之后,mysql会自动使该查询的缓存失效。在读写比例非常高的应用系统中,查询缓存对性能的提高是非常显著的。当然对内存的消耗也是非常大的。如果查询缓存有命中的查询结果,查询语句就可以直接去缓存中取数据。

Pluggable Storage Engines:存储引擎
存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
存储引擎是针对表的,用户可以根据不同的需求为数据表选择不同的存储引擎;同一数据库不同的表可以选择不同的存储引擎。

create table xxx() engine=InnoDB/Memory?MyISAM
  • 存储引擎的分类(主要介绍三种:MyISAM/InnoDB/Memory)
    • MyISAM :高速引擎,拥有较高的插入、查询速度,但不支持事务,不支持行锁,支持3种不同的存储格式。包括静态型、动态型和压缩型。
    • InnoDB :5.5版本后MySql的默认数据库,支持事务和行级锁定,事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全,比MyISAM处理速度稍慢、支持外键。
    • Memory :内存存储引擎,拥有极高的插入、更新和查询效率。但是会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失。
## 查看存储引擎
show engines;
  • InnoDB和MyISAM存储引擎区别:
    InnoDB:存储文件 :.frm表定义文件、.ibd数据文件和索引文件
    锁: 表锁、行锁
    事务:支持
    CRUD:读、写
    count :扫表
    索引结构 :B+Tree
    外键 :支持
    MyISAM :存储文件 :.frm表定义文件、.myd数据文件、.myi索引文件
    锁:表锁
    事务 :不支持
    CRUD :读多
    count :专门存储的地方 (加where也扫表)
    索引结构 :B+ Tree
    外键 : 不支持
  • 存储引擎的选型
    • InnoDB :支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高,要求实现并发控制,那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交和回滚。
    • MyISAM :插入数据快,空间和内存使用比较低。如果表主要是用于插入新纪录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
    • Memory : 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,不需要持久保存,可以选择memory。它对表的大小有要求,不能建立太大的表。

你可能感兴趣的:(mysql)