• MySQL体系结构


    一、初识MySQL

    按照数据结构来组织、存储和管理数据的仓库;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
    MySQL是关系型数据库,数据存储再磁盘中。操作MySQL时需要落盘才会返回。

    1.1、OLTP

    OLTP,全称On-Line transaction processing,即翻译为联机事务处理。主要对数据库增删改查。
    OLTP 主要用来记录某类业务事件的发生;数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功。

    1.2、OLAP

    OLAP,全称On-Line Analytical Processing,即翻译为联机分析处理。主要对数据库查询。
    当数据积累到一定的程度,需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做 OLAP 了。

    1.3、SQL

    结构化查询语言(Structured Query Language) 简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL 是关系数据库系统的标准语言。

    关系型数据库包括:MySQL, SQL Server, Oracle, Sybase,postgreSQL 以及 MS Access等。

    关系型数据库
    MySQL
    SQL Server
    Oracle
    Sybase
    postgreSQL
    Access

    SQL 命令包括:DQL、DML、DDL、DCL以及TCL。

    (1)DQL,全称Data Query Language,即数据查询语言。

    select:从一个或者多个表中检索特定的记录。

    (2)DML,全称Data Manipulate Language,即数据操作语言。

    insert:插入记录。
    update:更新记录。
    delete:删除记录。

    (3)DDL,全称Data Define Languge,即 数据定义语言。

    create:创建一个新的表、表的视图、或者在数据库中的对象;
    alter:修改现有的数据库对象,例如修改表的属性或者字段;
    drop:删除表、数据库对象或者视图;

    (4)DCL,全称Data Control Language,即 数据控制语言。

    grant:授予用户权限;
    revoke:收回用户权限;

    (5)TCL,全称Transaction Control Language ,即 事务控制语言。

    commit:事务提交;
    rollback:事务回滚;

    1.4、数据库术语

    1. 数据库:数据库是一些关联表的集合。
    2. 数据表:表是数据的矩阵。
    3. 列:一列包含相同类型的数据。
    4. 行:或者称为记录是一组相关的数据。
    5. 主键:主键是唯一的;一个数据表只能包含一个主键。
    6. 外键:外键用来关联两个表,来保证参照完整性;MyISAM 存储引擎本身并不支持外键,只起到注释作用;而 innoDB 完整支持外键。
    7. 复合键:或称组合键,将多个列作为一个索引键。
    8. 索引:用于快速访问数据表的数据;索引是对表中的一列或者多列的值进行排序的一种结构。

    二、MySQL体系结构

    mysql_arch
    MySQL 由以下几部分组成:

    1. 连接池组件。管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求。
    2. 管理服务和工具组件。系统管理和控制工具,例如备份恢复、MySQL 复制、集群等。
    3. SQL 接口组件。将 SQL 语句解析生成相应对象;DML,DDL,存储过程,视
      图,触发器等。
    4. 查询分析器组件。将 SQL 对象交由解析器验证和解析,并生成语法树。
    5. 优化器组件。SQL 语句执行前使用查询优化器进行优化;选择执行效率最优的方案。
    6. 缓冲组件。是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影
      响。
    7. 插件式存储引擎。
    8. 物理文件。

    MySQL的连接者:不同语言的代码程序和 MySQL 的交互(SQL交互)。

    2.1、连接池

    连接池主要 管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求。

    网络处理流程:主线程接收连接,接收连接交由连接池处理。

    交由
    主线程接收连接
    连接池处理

    主要处理方式:IO多路复用 select + 阻塞的 IO。
    mysql_threads

    每个连接,MySQL都会为每个客户端 fd 分配一个连接线程,专门负责处理该客户端的 sql 命令处理。

    MySQL命令处理是多线程并发处理的,默认最大线程数是151个,超过151就无法操作了。另外,MySQL是采用短连接的方式,长时间没有操作MySQL的连接会被MySQL主动断开,回收资源。

    2.2、缓冲组件

    缓冲组件是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影响。

    在数据库进行读取页操作,首先将从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲池中,若在缓冲池命中,直接读取;否则读取磁盘中的页,说明该页被 LRU 淘汰了。缓冲池中 LRU 采用最近最少使用算法来进行管理。

    缓冲池缓存的数据类型有:索引页、数据页、以及与存储引擎缓存相关的数据(比如innoDB 引擎:undo 页、插入缓冲、自适应 hash 索引、innoDB 相关锁信息、数据字典信息等)。

    三、执行select语句的过程

    执行一条select语句时,会经过:

    1. 连接器:主要作用是建立连接、管理连接及校验用户信息
    2. 查询缓冲:查询缓冲是以key-value的方式存储,key就是查询语句,value就是查询语句的查询结果集;如果命中直接返回。注意,MySQL 8.0已经删除了查询缓冲。
    3. 分析器:词法句法分析生成语法树。
    4. 优化器:指定执行计划,选择查询成本最小的计划。
    5. 执行器:根据执行计划,从存储引擎获取数据,并返回客户端。
    select执行过程
    no
    yes
    分析器
    select ...
    连接器
    查询缓存
    是否命中
    返回结果 给客户端
    优化器
    执行器
    从存储引擎获取数据

    总结

    1. 了解SQL的命令术语DML、DDL、DCL、DQL、TCL。
    2. 数据库专业术语:数据库、数据表、主键、外键、复合键、行、列、索引。
    3. MySQL体系架构由 连接池、系统管理和工具组件、SQL接口、分析器、优化器、缓冲组件、插件式存储引擎、物理文件 几个部分组成。
      在这里插入图片描述
  • 相关阅读:
    VPN创建连接 提示错误 628: 在连接完成前,连接被远程计算机终止。
    Linux内存查看通用方法
    C/C++教程 从入门到精通《第十一章》——初识MFC
    基于SSM的烟草管理系统的设计与实现该怎么写呀有会写的加我V Hik-5468其他都好谈
    武警三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课
    嵌入式中串口、COM口、TTL、RS232、RS485的区别详解
    微服务篇之负载均衡
    python 字典里的value
    unity3d-Animation&&Animator接口(基本使用)
    如何控制Spring bean的生命周期
  • 原文地址:https://blog.csdn.net/Long_xu/article/details/127526071