<五>从0基础到中级DBA(MySQL篇)----------->存储引擎

目录

一、存储引擎

        1.MySQL的体系结构

        2.存储引擎的概念

        3.存储引擎的特点

        4.特点罗列对比

二、InnoDB的逻辑存储结构

三、存储引擎的选择

四、总结


一、存储引擎

        1.MySQL的体系结构

        连接层:最上层的一些客户端和链接服务,主要完成一些类似于连接处理、授权认证及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

        服务层:第二层架构主要完成大多数的核心服务功能、如SQL接口并完成缓存的查询、SQL的分析和优化、部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。

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

        存储层:主要时将数据存储在文件系统之上,并完成与存储引擎的交互。 

        2.存储引擎的概念

        谈到MySQL的存储引擎大家一定很陌生,但如果把存储去掉只剩下引擎,我想大家应该不陌生了吧,引擎========>其实就是发动机;

        引擎非常重要,就好比我们买了一辆车但是没有发动机,这样的话他就发挥不了一个车该有的作用。

        在假如,如果一架飞机装上了汽车的引擎,这也是不行的,所以引擎也不是随便哪一个都可以。     说了这么多,想必大家也明白了引擎的重要性,接下来我们就来看一看今天的主角——存储引擎。

        存储引擎,是MySQL中特有的,是存储数据建立索引更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型 

-- MySQL早期的默认存储引擎是 ==> MyISAM
-- 在MySQL的5.5版本之后默认存储引擎是 ==> InnoDB

        在创建表时指定存储引擎

create table 表名(
    字段1  数据类型  [comment  字段注释] ,
    字段2  数据类型  [comment  字段注释] ,
    字段3  数据类型  [comment  字段注释] ,
    ...     ...     [...]
    字段n  数据类型  [comment  字段注释] 
        ) engine= innoDB [comment 数据表的注释]

         查询当前数据库支持的存储引擎

show engines;

        3.存储引擎的特点

InnoDB-------------->是一种高可靠性和高性能的通用存储引擎

        特点:1、DML操作遵循ACID模型,支持事务

                   2、行级锁,提高并发访问性能

                   3、支持外键Foreign key 约束,保证数据的完整性和正确性

        文件:在磁盘中存入文件为:xxx.ibd (xxx代表表名)=====>InnoDB引擎的每张表都会对应这样一个表空间文件,其中存有表的表结构(frm[8.0版本之前]、sdi)、数据和索引

        参数:innodb_file_per_table        该参数默认为开,意味着每张表都有一个表空间文件

-- 查询开关情况
show variables like 'innodb_file_per_table';
-- 查看ibd格式文件,用命令行执行
ibd2sdi 文件名

MyISAM---------------->MySQL早期的默认存储引擎

        特点:不支持事务,不支持外键

                   支持表锁,不支持行锁

                    访问速度快

        文件:1.   xxx.MYD======>存储表中的数据

                   2.   xxx.MYI=======>存储索引

                   3.   xxx.sdi========>存储表结构信息

                (其中sdi格式的文件文本格式为json格式,登录网址www.json.cn进行格式化后就可以很容易读懂)

Memory-----------------> 该引擎的表数据时存储在内存中的,由于受到硬件问题或断电问题的影响,只能将这些表作为临时表和缓存使用

        特点:内存存放=====>访问速度快          支持hash索引(默认)[哈希索引] 

        文件:xxx.sdi=======>存储表结构信息        (因为数据都在内存中)

        4.特点罗列对比

 此表十分重要,面试题中会有:

        谈谈InnoDB 和 MyISAM 的区别

特点InnoDBMyISAMMemory
存储限制64TB
事务安全支持————
锁机制行锁表锁表锁

B+tree索引

支持支持支持
Hash索引————支持
全文索引支持(5.6版本之后)支持——
空间使用N/A
内存使用中等
批量插入使用
支持外键支持————

二、InnoDB的逻辑存储结构

         在该存储引擎中,Page  时磁盘操作的最小单元,一个Page的大小为固定的 16K   

一个Extent的大小为固定的 1M ========> 可计算出一个Extent中有 64 个 Page

三、存储引擎的选择

        首先,存储引擎没有好坏之分,我们需要按需求来选择合适的存储引擎

        InnoDB------> 是MySQL的默认引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据一致性,数据除了插入和查询之外,还包含很多更新、删除操作,那InnoDB存储引擎是比较合适的选择。

        MyISAM------>如果应用以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那MyISAM存储引擎比较合适。

        Memory------->将所有的数据保存在内存中,访问速度快通常用于临时表及缓存。Memory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

InnoDB=====>适合核心数据

MyISAM=====>例如,日志、评论、弹幕......  现被NOSQL系列中的MongoDB 替代

Memory======> 现被NOSQL系列中的Redis 替代

四、总结

        经过以上的学习,相信大家对MySQL中特有的存储引擎有了一定的了解, 也希望本篇文章能够帮到大家,当然如果有表达不恰当的地方也欢迎大家前来指正,再次谢谢大家!!!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值