MySQL 学习篇(二)MYSQL体系结构入门和存储引擎

上一章节中说明了服务器硬件和操作系统对MYSQL性能的影响,Mysql性能调优方面我们先要了解Mysql体系结构!

SQL(结构化查询语言):当面对一个陌生的数据库时需要一种方式与数据库交互,我们通常用SQL语言与数据库交互。

我们把SQL语言分为三类:

  1. DDL语句:数据定义语句
  2. DML语句:数据操纵语句
  3. DCL语句:数据控制语句

目录

Myql本身的性能影响因素

各种MySQL存储引擎和适用场景

 Mysql底层原理动图展示


  • Myql本身的性能影响因素

  1. 插件式存储引擎

这种架构将数据库查询处理及其他系统任务、和数据存储截取、相分离,一种数据处理和数据存储相分离的设计,可以让我们在使用时,根据存储引擎的不同的性能和特征,以及其他需要,来选择数据存储的一种方式。

要真正弄清楚这种设计的优缺点呢,我们首先要搞清楚,MYSQL服务器的体系结构:

这个体系结构最上面的一层:客户端【那代表了各种可以通过MYSQL连接协议能连接到MYSQL的客户端,大多数的CS架构的服务呢,都是采用这样的体系结构,这一层主要完成的是连接处理,授权认证和安全等一些功能,连接到MYSQL的客户端,都会在服务器的进程中都有一个线程,这个连接的查询只会在这个单独线程进行中执行,也就是我们前面所说到的,连接的查询的,只能用到一个CPU的核心】

这个体系结构的第二层:大多数都是有核心服务的都在这一层中包括了连接管理器,查询解析器,查询分析器与查询优化器,以及一系列的缓存,以及所有的内置函数和SQL接口,如果我们常用的DDL、DML语句全是,在这一层上面进行定义的,所有跨存储引擎的功能都是在这一层来实现的,因为这一层能够被称之为MYSQL服务层,在这一层中实现了所有与存储引擎无关的特性】

问:那么什么是有限度引擎无关的特性?

答:demo:比如说select语句,对于的存储引擎来说,实现的功能全都是一样的,就是获取存储在存储文件中的数据,并根据我们的过滤条件进行过滤,然后把数据的显示出来,所以这个select语句在MYSQL的服务层实现的。

问:如何从文件中获得我们所需要的查询数据,这个具体的实现方式是什么呢?

答:则是由下一层存储引擎层实现。

这个体系结构的第三层:MYSL和其他数据库的区别最大的地方,称之为存储引擎【MYSQL是一款非常优秀的开源数据库,其中定义了一系列存储引擎的接口,只要符合存储引擎接口的要求,我们就可以自己为MYSQL开发出一款,完全符合自己需要的那种存储引擎,现在比较常用的如下】

各种插件式存储引擎最大的特点就是灵活,可以根据不同的应用特点,选择不同的什么存储引擎。每一款存储引擎都有其自身的一些优缺点,对于开发人员来说呢,我们所面对的只是我们MYSQL的服务器,具体使用的是什么存储引擎,对于开发者来说是透明的,sql语句的差异对开发人员可能也会有一些影响。

比如,archive存储引擎由于其不支持update delete,所以能开发人员使用了不支持得语句,得到相应的报错信息。

另外还有一点要注意,存储引擎是针对于表,而不是针对于库,也就是说在一个库中,我们可以使用不同的存储引擎的建立不同的表,非常不建议这样做,但是从功能上来说确实是可以的。

  • 各种MySQL存储引擎和适用场景

  1. MyISAM存储引擎
  2. InooDB存储引擎
  3. CSV存储引擎
  4. Archive存储引擎
  5. Memory存储引擎
  6. Federated存储引擎
  • 如何选择存储引擎

内容

  • Mysql底层原理动图展示

  1. 前言:在insert中输入1或者其他,别的都为空即可
  2. 链接1:https://www.cs.usfca.edu/~galles/visualization/BTree.html
  3. 连接2:https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

 

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/87621655
今日推荐