美文网首页MySQL
mysql的架构

mysql的架构

作者: richard520 | 来源:发表于2017-03-03 14:37 被阅读208次

A 构架
MySQL(最大的特色就是把查询处理与 实际的数据存储和提取(存储引擎)的操作分开了。其整体的[架构]如下:


20150.jpg

1.Connectors 看到JDBC就懂起了,是连接mysql的各种客户端 和接口 是我外部调用
2.Connection Pool 用于创建用户连接,缓存连接线程,做连接池。 还有鉴权 进行身份验证、线程重用,连接限制,检查内存,数据缓存;管理用户的连接,线程处理等需要缓存的需求
3.Management Serveices & Utilities: 系统管理和控制工具备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据
4.SQL Interface: SQL接口。接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。进行 DML、DDL,存储过程、视图、触发器等操作和管理;用户通过 SQL 命令来查询所需结果
5.Parser: 解析器。
SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。主要功能:
a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的
6.Optimizer: 查询优化器 SQL语句在查询之前会使用查询优化器对查询进行优化。他使的是“选取-投影-联接”策略进行查询。
用一个例子就可以理解: select uid,name from user where gender = 1;这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤,这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤将这两个查询条件联接起来生成最终查询结果
7.Cache和Buffer: 查询缓存 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
8.Engine :存储引擎。
存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。
Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB默认下MySql是使用MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务。InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。
Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。
mysql 常用存储引擎
3.1.1 myisam 存储引擎
主要的存储文件有.frm主要是用来记录表结构。.MYD存储数据.MYI存储索引。myisam支持的是表级锁,通过check table 检查是否损坏,通过repair table修复myisam 支持全文索引,myisam 可以进行压缩(myisampck)适用于非事务型应用,只读类应用。
3.1.2 innodb 存储引擎
.frm文件存储了innodb表结构文件innodb有表空间的概念。当innodb_file_per_table=ON时。则采用独立表空间,此时,innodb数据存储在tablename.ibd文件中,否则,则采用系统表空间,存储在ibdataX中innodb支持事务,通过Redo Log 和Undo Log来进行实现。undo log主要是帮助未提交事务进行回滚和MVCC(多版本并发控制),redo log 存储的是已经提交的事务。innodb支持行级锁。是mysql 5.5后的默认存储引擎,其主要的适用场景是有事务处理的情况。
3.1.3 csv存储引擎
csv存储引擎的是以文本形式存储,可以直接进行编辑存储文件主要有.CSV文件主要是用来存储表内容,.CSM文件存储表的元数据如表状态和数据量.frm文件存储表结构信息。csv存储引擎列不能为空,不支持索引。csv存储引擎适用于数据交换的中间表 电子表格 ->> csv 文件 ->> mysql数据
3.1.4 Archive存储引擎
Archive存储引擎以zlib对表数据进行压缩,磁盘I/O更少。只支持insert和select操作,并且只能在自增列上建立索引。以.ARZ存储数据可以用于日志和数据采集的表
3.1.4 Memory存储引擎
Memory存储引擎的所有数据都是存储在内存中。支持HASH和BTree索引。所有的字段都是固定长度,不支持BLOG和TETX类型,使用表级锁。引擎的大小由max_heap_table_size参数决定。

相关文章

  • MySQL的逻辑架构

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

  • 20190401每周精品之编程

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

  • mysql 架构

    MySQL架构图解 MySQL物理架构 MySQL逻辑架构 mysqld: MySQL服务器守护程序,在后台运行。...

  • 读书笔记-高性能mysql(理解mysql知识点)

    第一章, mysql架构和历史 mysql架构图, mysql是客户端/服务器的c/s架构 mysql架构图 事务...

  • MySQL高级

    MySQL的架构介绍MySQL的架构介绍MySQL简介 MySQL Linux版的安装MySQL 配置文件MySQ...

  • MySQL架构学习笔记

    MySQL逻辑架构 了解MySQL的架构有助于深入理解MySQL服务器,下图是MySQL的三层逻辑架构图(图片来自...

  • 一、MySql 基础架构

    一、MySql 基础架构 目录[toc] 1.1Mysql逻辑架构 如上图:展示了mysql逻辑的架构图。 最上层...

  • MySQL架构学习笔记

    MySQL逻辑架构了解MySQL的架构有助于深入理解MySQL服务器,下图是MySQL的三层逻辑架构图(图片来自于...

  • MySQL一条语句执行的过程

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以...

  • 一条sql语句在mysql中如何执行的

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可...

网友评论

    本文标题:mysql的架构

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