2.Mysql之体系结构

1.前言

  这里主要介绍一下Mysqld的体系结构

2.Mysql之体系结构

  

  这里看到是从网上找到的,很多人都说这幅图是Mysql官网手册上面的,可惜我没有找到。。。

  2.1 Connectors

    指的是不同语言中与MySQL的连接交互层,这个可以在Mysql官网下面查到关于不同语言的API

  2.2 Management Serveices & Utilities

    系统管理和控制工具,例如备份恢复、MySQL复制、集群等

  2.3 Connection Pool

    连接池,管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的信息;

    MySQL服务器对每一个连接产生一个线程,而这个线程独自为该连接服务。因此,MySQL服务器中的并行是指并行执行许多个查询而非一次查询内的并行。也由此原因致使MySQL对多核支持不够好,MySQL服务器是一组线程的集合。

  2.4  SQL Interface

    SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如DML就是调用SQL Interface

  2.5  Parser

    解析器,SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本;

    主要功能:    

    • 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的;
    • 如果在分解构成中遇到错误,那么就说明这个SQL语句是不合理的 ;
    • Lex:Lexical Analyzer是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序;
    • acc:Yet Another Compiler Compiler是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语法解析器;

  2.6 Optimizer

    查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。它使用的是“选取-投影-联接”策略进行查询;

    优化 select uid,name from user where gender = 1; SQL语句执行的过程如下:   

    • 这个select 查询先根据where 语句进行记录选取,而不是先将表全部记录查询出来以后再进行gender过滤;
    • 这个select查询先根据uid和name进行属性投影(字段选择),而不是将属性全部取出以后再进行过滤;
    • 将这两个查询条件联接起来生成最终查询结果;

  2.7 Cache&Buffer

    高速缓存区,查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。通过LRU算法将数据的冷端溢出,未来得及刷新到磁盘的数据页,叫脏页。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等;

  2.8 Engine

  存储引擎,存储引擎是MySQL与文件打交道的子系统。也是MySQL最具有特色的一个地方。MySQL的存储引擎是插件式的,它根据MySQL AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)现在有很多种存储引擎,各个存储引擎的优势各不一样。MySQL也支持自定义制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

  

posted on 2020-10-26 16:40  太白金星有点烦  阅读(45)  评论(0)    收藏  举报

导航