美文网首页
Mysql的架构-1

Mysql的架构-1

作者: 6a91e15c5cde | 来源:发表于2017-10-07 13:35 被阅读98次

mysql的组成部分

enter image description here
  1. 连接池组件
  2. 管理服务和工具组件
  3. sql接口组件
  4. 查询分析器组件
  5. 优化器组件
  6. 缓冲组件
  7. 插件式存储引擎
  8. 物理文件

一条SQL语句的执行经历了哪些流程

SQL语句  ->  查询缓存(cache) -> 解析器  -> 预处理器

-> 优化器 -> 执行计划(plan) ->  程序api  -> 存储引擎

-> 调用数据
enter image description here

Mysql主流的存储引擎

  • 概念
存储引擎就是调用数据的方法
mysql插件式的存储引擎是基于表的,而不是数据库,mysql的核心就是存储引擎
  • innodb
1. 支持事物,面向在线事物处理(OLTP)方面的应用,支持行锁,支持外建
2. 通过多版本并发控制MVCC来获取高并发性,并且实现了sql标准的4种隔离级别(默认为repeatable)
3. 还提供了插入缓存(inset buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)
4. 对于表中数据的存储,innodb采用clustered.每张表的存储都按主键的顺序存放,如果没有显式的为表定义主键,innodb为每张表生成一个6字节的rowid作为主键

  • myisam
1. 不支持事务,表锁,全文索引,对olap在线分析处理,操作速度快
2. myisam存储引擎表由MYD和MYI组成,MYDy用来存放数据文件,MYI用来存放索引文件
3. 从mysql5.0开始,mysql默认支持256T单表数据
4. 对于myisam存储引擎表,mysql数据库只缓存其索引文件,数据文件的缓存交由操作系统本身完成,区别于使用LRU算法存放数据的大部分数据库

  • innodb与myisam的区别
1. 事务的支持
    innodb支持,myisam不支持
2. 锁粒度
    innodb行级,myisam表级别
3. 并发性
    innodb并发性高,myisam并发性低
4. 缓存机制
    innodb缓存数据和索引,myisam只缓存索引
5. select count(*)
    innodb慢(全表扫描),myisam快
image.png
如上图:现在假设执行语句select * from t1 where id=4;那么获取这条数据的过程中都发生了什么?

基础概念:
在mysql数据库中数据的单位分为,段,区,页,每个页对应内存中的一个buffer,这些内存中的buffer不是随意分布的,而是通过chain连接起来的,在内存中buffer是有状态的,分为free(空闲的),clean(可以清除的),dirty(脏数据),对应的会有三条链,
free list, LRU list, flush list. 从磁盘读取数据到内存是以页为单位的。

流程:
1. 现在查询id=4的这条数据,发现不在内存中,那么就需要回到磁盘读取。
2. 从磁盘中发现有id=4这条数据,于是将id=4对应的页读入内存。
   那么读到内存中应该放在哪里呢?如果内存中有free状态的buffer,那么就放入free状态的buffer中,但多数情况都没有free状态的buffer可用。那么该覆盖哪块已有的buffer呢?会根据LRU算法,从其管理的clean状态的buffer中,选择不常使用的一个buffer将其覆盖。
3. 数据又是如何从内存中写入磁盘的呢?
   上图中明显内存和磁盘中的数据不一致,内存中存在脏数据,那么这些脏数据是否该写入磁盘呢?在将脏数据写入磁盘时,主要看flush list管理的dirty buffer,是否需要将数据写入磁盘,还需要看LRU算法,如果dirty buffer中的数据,是经常被读取的,就暂时不会写入磁盘,如果是常时间不被读取的,会写入磁盘。

相关文章

  • 【性能优化】MySQL性能优化之存储引擎调优

    1 MySQL总体架构介绍 1.1 MySQL总体架构介绍 总的来说:MySQL架构是一个客户端-服务器系统。 M...

  • 43-MySQL-逻辑架构

    一、逻辑架构 1、MySQL服务器处理客户端请求 2、MySQL服务器架构MySQL服务器架构.png 2.1、C...

  • 面试题之Mysql篇

    Mysql篇1. Mysql架构组成有哪些?Mysql架构图2.Mysql的查询具体流程?客户端请求-->连接器(...

  • MySQL的逻辑架构

    MySQL的逻辑架构 MySQL的逻辑架构(from《高性能MySQL》)MySQL逻辑架构,来自:高性能MySQ...

  • 高性能Mysql笔记

    一、Mysql架构与历史 1、架构图 2、锁 表锁 行级锁 3、事务 死锁 Mysql中的事务 1

  • mysql概览

    mysql体系结构 从mysql官方手册给的架构图(参考文献1)来看,mysql采用分层的架构,面向client是...

  • MySQL逻辑结构

    MySQL逻辑架构 1. MySQL逻辑架构 如图,MySQL服务器逻辑架构分为三层: 第一层,这一层不是MyS...

  • 理解 MySQL(1):架构和概念

    理解 MySQL(1):架构和概念

  • 20190401每周精品之编程

    mysql执行过程 一MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是MySQL 的一个简要架构...

  • MySQL(一)MySQL架构

    1. MySQL体系架构 MySQL Server架构自顶向下大致可以分 、 、 和 。 1.1 网络连接层 客户...

网友评论

      本文标题:Mysql的架构-1

      本文链接:https://www.haomeiwen.com/subject/wydjyxtx.html