MySQL的架构和索引

Posted soul-xs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的架构和索引相关的知识,希望对你有一定的参考价值。

 

MySQL系统架构图

 技术图片

MySQL架构总共三层,在上图中以虚线作为划分。

第一层的服务并不是mysql独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。

第二层:的架构包括大多数的MySQL的核心服务。包括:查询解析、分析、优化、缓存以及所有的内置函数(例如:日期、时间、数学和加密函数)。同时,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。

第三层:包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。

更加详细的MySQL系统架构图

 技术图片

 

 

日志文件

MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志、中继日志等。这个只需要了解一下就好了。

索引

(1)单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引

  • 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入 重复值和空值,纯粹为了查询数据更快一点。
  • 唯一索引:索引列中的值必须是唯一的,但是允许为空值
  • 主键索引:是一种特殊的唯一索引,不允许有空值

(2)组合索引:

      在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字 段时,索引才会被使用,使用组合索引时遵循最左前缀集合

(3)全文索引:只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型 字段上使用全文索引

(4)空间索引:空间索引是对空间数据类型的字段建立的索引

      MySQL中的空间数据类型有四种,GEOMETRYPOINTLINESTRING POLYGON。在创建空间索引时,使用SPATIAL关键字。

要求:引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL

以上是关于MySQL的架构和索引的主要内容,如果未能解决你的问题,请参考以下文章

MySQL内存架构和索引说明

MYSQL架构篇

Mysql 架构和索引

MySQL 查询性能 - 查询/架构/索引?

java架构之路-(面试篇)Mysql面试大全

java架构之路-(面试篇)Mysql面试大全