MySQL架构——SQL层和存储层

当MySQL的客户端与服务器建立连接后,MySQL将在SQL层处理每个查询。SQL层包括解析器、授权、优化器、执行查询,及查询日志。

图片
  • 解析器:验证查询语句的语法,语义并将其转换为标准格式。
  • 授权:验证连接的用户是否具有执行语句的权限,以及是否具有查询参照的对象权限。
  • 优化器:为每个查询创建一个优化的执行计划,包括使用哪个索引,按照一定的顺序处理表等。
  • 执行查询:按照查询计划执行每个查询。
  • 查询日志:记录服务器接收或执行的查询。
    SQL层按照上述顺序处理每个查询。
    图片

存储层

使用多种存储引擎是MySQL的一个重要的特征。MySQL的存储引擎包括InnoDB、MyISAM、NDB Cluster及Memory等引擎。

InnoDB:MySQL默认的内置引擎,该引擎支持事务处理,推荐用户使用该引擎。

MyISAM:MySQL5.5版本之前的默认存储引擎,不支持事务处理。

NDB Cluster:NDB(Network Database)是支持内存存储的非共享引擎,支持事务处理,并能够使用外键。

除了上述引擎之外,MySQL还支持ARCHIVE、BLACKHOLE、MERGE、CSV、FEDERATED等引擎,这些引擎包含在MySQL的源代码内。

存储引擎是服务器的一个低级别的组件,用来控制不同类型的表,负责存储和检索数据。MySQL将处理每一行数据的任务委托给存储引擎,存储引擎可以将数据存储在磁盘、内存或网络上的其他组件,并能够提供索引及其他的优化。当用户创建表时,需要为其指定存储引擎用于管理数据。

存储引擎不会影响SQL层的操作,通常情况下SQL层解析SQL,存储层控制每行数据的操作。SQL语句与存储引擎相互独立,用户需要在创建表时,指定存储引擎选项,创建之后,可以使用“ALTER TABLE”语句将其转换为不同的存储引擎。SQL层需要在存储引擎的数据行操作之前执行对语句的处理,如果SQL语句不支持在某些存储引擎上操作,将会发出警告。

存储引擎提供的功能

  • 存储媒介:磁盘、内存、网络中的数据节点,NULL(BLACKHOLE)。
  • 事务处理能力:多个语句的事务提交与回滚及事务的隔离级别。
  • 锁:锁的粒度超过表级别,MVCC。
  • 表分区:特定于引擎的功能。
  • 备份及恢复:复杂的存储引擎(InnoDB和NDB)内部保证一致性,以改善性能。文件系统的备份适用于简单的引擎(MyISAM)
  • 优化:部分引擎使用索引、内部缓存、缓冲,及内存,以提升性能。
  • 参照整合性:使用外键。
  • 全文检索
  • 空间地理数据

以上内容是关于MySQL的SQL层和存储层的介绍。

感谢关注“MySQL解决方案工程师”!

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/191016.html

联系我们
联系我们
分享本页
返回顶部