MySQL 知识点整理 (一) 体系结构

2019-08-11  本文已影响0人  架构技术专栏

感觉好久没有看MySQL相关的书了,最近边复习,边整理下感觉重要的知识点,一点点的由简入繁,先从整体概念上理解下,扩充下整个知识图谱。

一、MySQL 体系结构

image.png

基础中有两个重要概念,数据库和数据库实例。

数据库:文件的集合,依照某种数据模型组织并存放于二级存储器中的数据集合。

数据库实例:是程序,位于用户与操作系统之间的一层数据库管理软件,用户对于数据库的任何操作(DML,DDL)都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

看了,最开始的架构图,可以了解到MySQL 由以下组成

1、连接池组件

2、管理和工具组件

3、接口组件

4、解析器组件

5、优化器组件

6、缓存组件

7、插件式的存储引擎

8、物理文件

注意:存储引擎是基于表,而不是数据库

二、存储引擎

下面介绍几个重要的存储引擎的特点

1、InnoDB

特点:

存储其采用了聚集的方式,因此数据都是顺序存储,如没有显示的指定主键,会为每一行数据生成一个6字节的ROWID作为主键

2、MyISAM

不支持事物,表锁设计,支持全文检索,主要面向OLAP

缓冲池之缓存索引文件不缓冲数据

表由MYD 和MYI 组成,MYD存储数据,MYI 存储索引文件

3、NDB

集群存储引擎类似Oracle的RAC集群

数据全部存放在内存中

(JOIN)连接操作是在mysql数据库层完成的,而不是存储引擎层完成。(复杂的连接操作需要巨大的网络开销,因此查询巨慢)

4、Memory

表中数据存放在内存中,重启数据消失

适用于临时数据的临时表,数据仓库维度表。

默认是哈希索引,而不是B+树索引

只支持表锁,并发性能差,并不支持TEXT和BLOB类型。

存储变长字段(varchart)时,是按照定长字段(char)方式进行,因此会浪费内存

如果MYSQL数据库使用MEMORY存储引擎作为临时表来存放查询的中间结果集。如果结果集大于Memory存储引擎设置的容量,又或者其中包含TEXT 和BLOB 数据类型字段,则MySQL数据库会把其转换到MYISAM存储引擎表而存放到磁盘中。因M有ISAM不缓存数据文件,所以临时表的查询会损失性能。

先整体回顾了下大概的结构和知识点,下周主要针对InnoDB 做一个完整性的细节回顾


角儿旮旯
上一篇 下一篇

猜你喜欢

热点阅读