欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

高性能Mysql的逻辑架构和常见的存储引擎

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

前言:

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

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

正文:

一、Mysql的逻辑架构

高性能Mysql的逻辑架构和常见的存储引擎

1.客户端层:

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

2.核心服务层:

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

3.存储引擎:

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

二、Mysql常见的存储引擎

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

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

1.MyISAM存储引擎

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


2.InnoDB存储引擎

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


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

高性能Mysql的逻辑架构和常见的存储引擎

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

总结:

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

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

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

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

本文地址:https://blog.csdn.net/jdk_wangtaida/article/details/107842933

相关标签: 开发问题 mysql