高性能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
总结:
今日分享的三局关于自己主题得话:
“不论你的人生被贴上了什么标签,只有你自己可以定义自己。”
“你越早意识到,有趣的人生是靠自己,你的状况就会越好。”
“在浩瀚无垠的宇宙中,在短短的一生里,鼓起勇气,做想做的事,成为想成为的那个自己。”
本文地址:https://blog.csdn.net/jdk_wangtaida/article/details/107842933