MySQL体系结构

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

01)关系型数据库和非关系型数据库

关系型数据库是:是基于关系模型提出来的数据库,关系模型是用一张二维表来表示和存储数据的,关系型数据库支持事务;

非关系型数据库(NoSQL)是:键值对的方式进行存储数据,key-value是分布式的,一般不支持acid特性。

 

02)数据库和实例

数据库就是一堆文件,是一个物理概念;数据库文件里面的一堆文件加载到内存中,把内存中的镜像叫做实例,实例是一个 逻辑概念;

操作数据库,需要通过操作实例,而数据库实例才是真正用于操作数据库文件的。

MySQL被设计为一个单进程多线程的架构的数据库,MySQL数据库实例在系统上的表现就是一个进程。

 

Oracle体系结构


01Oracle的集群

wKiom1k-BD6w41_DAAA6FmZgN14196.png-wh_50


02Oracle的体系结构

 wKioL1k-BD_g58P1AAA55XgNwN4831.png-wh_50

任何语言都是以操作系统的进程来操作数据库文件的。

在图中,客户端(如jdbc)连接到数据库,一般图里面的小方块和连接数是一样的;一个实例只有一个大方块。

大方块是:SGA(system global area系统全局区)

小方块是:PGA(Process global area)

客户端操作数据,保存在PGA中,操作完之后commit提交,PGA写入到SGASGA通过写进程,写入数据库文件。这样就是通过两个阶段提交数据,写入速度更快。因为如果PGA直接写入数据库,那么三个PGA就需要写三次,如果提交到SGA只需要写一次。



mysql的体系结构


了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的


 wKiom1lMf8rShvmTAAF_1dqDQUY163.png-wh_50 

1 Connectors指的是不同语言中与SQL的交互


2 Management Serveices & Utilities: 系统管理和控制工具


3 Connection Pool: 连接池。

管理缓冲用户连接,线程处理等需要缓存的需求


4 SQL Interface: SQL接口。

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


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也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。


01)MyISAM引擎

01.mysql在5.5.5版本之前都是MyISAM引擎,面向OLAP(联机分析处理:快速分析和观察数据)

02.mysql的系统表大都也是MyISAM引擎,MYD(数据文件)MYI(索引文件)frm(表定义)

03.mysql引擎的特点:

不支持事务;

表级锁定,锁粒度大;

只会缓存索引;

读写互相阻塞;

读取速度快;

不支持外键约束。

04.数据库系统与文件系统很大的一个不同之处就是在于对事务的支持,然而myisam存储引擎是不支持事务的。(原因很简单,如果没有ETL这些操作,只是简单的报表查询是否还需要事务的支持呢?)

05.myisam存储引擎的另外一个与众不同的地方就是它的缓冲池只缓存索引文件,而不是缓冲数据文件。


02)InnoDB引擎

设计目标主要面向在线事务处理(OLTP)的应用。

特点:

01.支持事务;

02.行级锁定;

03.读写阻塞与事务相关;

04.具有非常高效的缓存特性,可以缓存索引,也可以缓存数据;

05.整个表和主键以cluster方式存在,组成一颗平衡树;

06.所有Secondery Index都会保存主键信息;

07.支持分区分表;

08.支持外键约束,5.5之前不支持全文索引,之后支持了;

09.与MyISAM相比,InnoDB对硬件资源要求更高。

03)Memory

    将表的数据放在内存中,如果数据库重启或者发生崩溃,表中的数据都将消失。memory存储引擎默认使用哈希索引,而不是 我们熟悉的B+索引。

    memory存储引擎速度非常快,但是在使用上还是有一定限制。比如只支持表锁,并发性差,不支持text和blob列类型;并且char和varchar一样使用固定内存。

04)Archive

    这个存储引擎只支持insert和select操作,从MySQL5.1开始支持索引。archive存储引擎非常适合存储归档数据,如日志信息。其设计目标主要是提供高速的插入和压缩功能。

05)NDB

    是一个集群存储引擎,ndb的特点是数据全部放在内存中(从MySQL5.1开始,可以将非索引数据放在磁盘上),因此主键查找速度很快。

    需要注意的是,ndb的连接操作是在MySQL数据层完成的,而不是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢。


>show engines\G;


观察MySQL数据库启动后的进程情况:

#ps -ef | grep mysqld


查看当MySQL数据库实例启动时,会在哪些位置查找配置文件:

#mysql --help | grep my.cnf


查看MySQL的默认数据文件:

>show variables like 'datadir'\G;


查看MySQL支持的存储引擎:

>show engines\G;


创建表指定存储引擎 :

>create table mytest Engine=InnoDB;

>alter table mytest Engine=MyISAM;


本文转自 叫我北北 51CTO博客,原文链接:http://blog.51cto.com/qinbin/1934420


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 缓存 关系型数据库
MySQL体系结构
MySQL体系结构
|
10月前
|
存储 关系型数据库 MySQL
MySQL 体系结构概述
MySQL 体系结构概述
32 0
|
6月前
|
SQL 存储 关系型数据库
MySQL概述与体系结构
MySQL概述与体系结构
33 1
|
9月前
|
存储 关系型数据库 MySQL
java202303java学习笔记第四十三天函数-存储引擎-mysql体系结构
java202303java学习笔记第四十三天函数-存储引擎-mysql体系结构
45 0
|
10月前
|
存储 SQL 缓存
MySQL高级第二篇(共四篇)之体系结构、存储引擎、优化SQL步骤、索引使用、SQL优化
最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安 全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
380 1
|
11月前
|
存储 关系型数据库 MySQL
java202303java学习笔记第四十三天函数-存储引擎-mysql体系结构
java202303java学习笔记第四十三天函数-存储引擎-mysql体系结构
68 0
|
11月前
|
关系型数据库 MySQL
java202303java学习笔记第四十三天函数-mysql体系结构
java202303java学习笔记第四十三天函数-mysql体系结构
57 0
|
12月前
|
SQL 存储 缓存
MySQL - 体系结构初探
MySQL - 体系结构初探
59 0
|
12月前
|
存储 SQL 缓存
MySQL-体系结构以及常用存储引擎MyISAM和InnoDB初探
MySQL-体系结构以及常用存储引擎MyISAM和InnoDB初探
69 0
|
12月前
|
存储 SQL 缓存
看了这一篇文章,你还不懂MySQL体系结构,你来找我
工作很长时间了,对于数据库的掌握程度却仅仅停留在表面的CRUD阶段,对于深层次的原理和技术知识了解的少之又少,随着岁数不断的增长。很多时候,出去找工作很迷茫,被面试官问的感觉自己很菜。现在利用工作休息时间,把自己现有的资料和新学的知识进行总结。也算是一种深层次的理解和掌握。本文章收录在MySQL性能优化+原理+实战专栏,更多的MySQL优化点击此处查看开篇介绍。 在以后的学习中,我会创建一个没有权限的用户,进行MySQL权限和优化的实战。 关于有些系统变量的作用及在学习中遇见的ERROR会全部会收录到开篇介绍一文当中。
366 0

推荐镜像

更多