当前位置:   article > 正文

数据库之MySQL_mysql通常包括存储管理器和查询处理器两大部分

mysql通常包括存储管理器和查询处理器两大部分

MySQL是一种开放源代码的关系型数据库管理系统,使用结构化查询语言(Structured Query Language)SQL进行数据库管理,而且是开放源代码的。
MySQL常用的存储引擎包括:
●InnoDB
InnoDB是MySQL的默认存储引擎,支持事务、行锁和外键等操作。
●MyISAM
MyISAM是MySQL 5.1版本前的默认存储引擎,并发性比较差,不支持事务和外键等操作,默认的锁粒度为表级锁。

 

MySQL体系结构

一、连接池(网络接入层)

主要负责连接管理、授权认证、安全等等。每个客户端连接都对应着服务器上的一个线程。服务器上维护了一个线程池,避免为每个连接都创建销毁一个线程。当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过SSL证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。

二、查询处理器(服务层)

第二层服务层是MySQL的核心,MySQL的核心服务层都在这层。查询解析,SQL执行计划分析,SQL执行计划优化,查询缓存,以及跨存储引擎的功能都在这一层实现: 存储过程,触发器,视图等。内部结构:

图中红色框中标出来的就是MySQL服务层内部执行的过程。组成:管理服务和工具组件,SQL接口组件,查询分析器组件,查询优化器组件。SQL语句在服务层中具体的流程:

  1. 查询缓存
  2. 在解析查询之前,服务器会检查查询缓存,如果能找到对应的查询,服务器不必进行查询解析、
  3. 优化和执行的过程,直接返回缓存中的结果集。
  4. 解析器与预处理器
  5. MySQL会解析查询,并创建了一个内部数据结构(解析树) 。这个过程解析器主要通过语法规则来验证和解析。
  6. 比如SQL中是否使用了错误的关键字或者关键字的顺序是否正确等等。预处理会根据MySQL的规则进一步检查
  7. 解析树是否合法。比如要查询的数据表和数据列是否存在等。
  8. 查询优化器
  9. 优化器将其转化成查询计划。多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。
  10. 优化器的作用就是找到这其中最好的执行计划。它并不关心使用什么存储引擎,
  11. 但是存储引擎对优化查询是有影响的。优化器要求存储引擎提供容量或某个具体操作的开销信息来评估执行时间。
  12. 查询引擎
  13. 在完成解析和优化阶段以后,MySQL会生成对应的执行计划,查询执行引擎根据执行计划给出的指令
  14. 调用存储引擎的接口得出结果。

三、存储管理器(存储引擎层)

负责MySQL中数据的存储与提取。服务器中的查询执行引擎通过API与存储引擎进行通信,通过接口屏蔽了不同存储引擎之间的差异。MySQL采用插件式的存储引擎,提供了许多存储引擎,每种都有不同的特点。可以根据不同的业务特点选择最适合的存储引擎。如果对于存储引擎的性能不满意,可以通过修改源码来得到自己想要的性能。
存储引擎是针对于表的而不是针对库的(一个库中不同表可以使用不同的存储引擎),服务器通过API与存储引擎进行通信,用来屏蔽不同存储引擎之间的差异。

InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracle的架构。一般而言在OLTP的应用中,InoDB应该作为核心应用表的首选存储引擎。

1.事务管理器

事务(Transaction) 是数据库区别于文件系统的重要特性之一。在文件系统中,如果写文件时操作系统崩溃了,这个文件就很有可能被破坏。有一些机制可以把文件恢复到某个时间点,不过如果需要保证两个文件同步,这些文件系统可能就无能为力了。如需要更新两个文件时,更新完一个文件后,在更新完第二个文件之前系统重启了,就会有两个不同步的文件。
这正是数据库系统引入事务的主要目的:事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都不保存。

在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此开始一个事务,必须使用BEGIN, START TRANSACTION,或者执行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/334849
推荐阅读
相关标签
  

闽ICP备14008679号