高性能的Mysql读书笔记系列之一(Mysql的逻辑架构和常见的存储引擎)

前言:

      为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。MySQL的灵活性体现在很多方面。例如,你可以通过配置使它在不同的硬件上都运行得很好,也可以支持多种不同的数据类型。但是,MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。(摘自高性能的Mysql)

简而言之:为了更好的学习Mysql你得了解人家的底层架构。

正文:

一、Mysql的逻辑架构

1.客户端层:

连接处理、授权认证、安全等功能。

2.核心服务层:

查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。

3.存储引擎:

存储引擎负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有功能不同。

二、Mysql常见的存储引擎

数据库储存引擎是数据库底层软件组织,数据库管理系统使用存储引擎创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。

建表的时候指定不同的储存引擎,也会影响此表的特性(存储和操作此表的类型)。

1.MyISAM存储引擎

  • 不支持事务,但整个操作是原子性的
  • 不支持外键,支持表锁
  • 一个MyISAM表有三个文件:索引文件、表结构文件、数据文件
  • 存储表的总行数,执行select count(*) from table时只要简单的读出保存好的行数即可,但是加where条件的时候就需要扫表
  • 采用非聚集索引,索引文件的数据域只存储指向数据文件的指针
  • 支持全文索引和空间索引

2.InnoDB存储引擎

  • 支持事务,支持事务的四种隔离级别
  • 支持行锁和外键约束
  • 主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问主键索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

两种引擎索引图的的区别:

参考文章:https://www.cnblogs.com/rgever/p/9736374.html 

总结:

今日分享的三局关于自己主题得话:

“不论你的人生被贴上了什么标签,只有你自己可以定义自己。”

“你越早意识到,有趣的人生是靠自己,你的状况就会越好。”

“在浩瀚无垠的宇宙中,在短短的一生里,鼓起勇气,做想做的事,成为想成为的那个自己。”

我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有10683位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!

猜你喜欢

转载自blog.csdn.net/jdk_wangtaida/article/details/107842933