【后端面经-数据库】MySQL的存储引擎简介 全球观热点
来源:博客园 时间:
2023-06-10 06:31:34
【资料图】
mysql主要有四类存储引擎,目前主要使用InnoDB作为存储引擎。
0. 存储引擎的查看和修改查看当前数据库的默认存储引擎show variables like "default_storage_engine";
查看当前数据库所支持的存储引擎show engine;//语句1show variables like "have_%";//语句2
查看支持事务处理的存储引擎select engine from information_schema.engines where transactions="yes";
设置新表的存储引擎create table 表名 (字段名 字段类型) engine=存储引擎;//语句1create table 表名 (字段名 字段类型) type=存储引擎;//语句2
1. MyISAM文件组成.frm文件:表结构定义,frame
,可以理解成对整体框架的存储.MYD文件:数据文件,存储的是具体的数据库数据条目.MYI文件:索引文件,存储的是数据库表项的索引文件如果用图书管理系统做比喻的话,那么,.frm文件
存放的是书架本身,.MYD文件
存储具体的书籍,.MYI文件
存储检索书籍的索引目录。.MYI文件
和.MYD文件
可以存储在不同的文件目录中,从而分散IO读写压力,提高访问速度,具体操作可在创建表的时候,通过DATA DIRECTORY
和INDEX DIRECTORY
属性进行设置。适用范围由于MyISAM不支持事务,不支持外键,访问速度快的特点,适用于以下特点的数据库:- 不要求事务完整性- 操作主要是查找SELECT
和INSERT
安全性MyISAM表中有一个标志,用于存储上次退出表是否是正常退出,每次启动该表之前会检查该标志,如果上次是异常退出,则考虑进行检查和修复。可使用CHECK TABLE
和REPAIR TABLE
命令进行表的检查和修改。支持的存储格式静态表:每个条目长度固定动态表:每个条目长度不固定压缩表:压缩存储,节省空间三者的特点如下所示:
优缺点优点:访问速度快,缺点:不支持事务,不支持外键,不支持行级锁,不支持崩溃后的安全恢复,不支持并发插入(性能方面)2. InnoDB自动增长列指的是InnoDB支持用户手动插入的条目遵循索引项的自动增长,而不需要用户自己设置。
然而,在InnoDB中,自动增长列必须是索引项,如果是组合索引,则是其中的第一列;而对于MyISAM,则可以是任意数据项。
创建一个表之后,其自动增长列的起始值默认是1,也可以在创建表的时候进行修改:
CREATE TABLE t1 ( id INT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=某个起始数字;
在插入条目的时候,也可以通过ALTER TABLE
命令进行修改:
ALTER TABLE 具体条目 AUTO_INCREMENT=某个起始数字;
外键约束
在本文介绍的四个存储引擎中,只有InnoDB支持外键约束。外键约束可以指定数据表中,对父表的操作如何影响子表,具体参数如下:restrict
:父表的删除和更新不会对子表产生影响cascade
:级联操作,父表的删除和更新操作会影响子表,set null
:父表的删除和更新将会使得子表中相关条目设置为null
值no action
:效果等同于restrict
,父表的删除和更新操作不会对子表产生影响。外键约束的开关根据set forgein_key_checks=0或者1
的值,可以开启(值为1)或者关闭(值为0)外键约束。优缺点
优点:支持回滚等事务处理缺点:访问效率低,花费内存存储索引结构,占用内存较大3. MEMORY使用内存内容MEMORY表使用内存中的数据进行存储管理,因此,在使用期间需要足够的内存空间,当使用结束之后,需要进行内存释放,命令如下DROP FROM MEMORY 表名;TRUNCATE table 表名;
hash结构MEMORY表的索引结构为hash,因此,有很快的访问速度,但是也引申出对于数据库操作指令的响应性能问题:相等比较:=
,<=>
,性能较好范围比较:>
,<
,BETWEEN
,IN
,LIKE
,性能较差排序比较:order by
,性能较差可通过改进为B树结构来提高性能文件组成:使用内存中的数据来存储,只需要一个.frm
文件,用于存储表结构定义。固定长度存储创建该表的时候,需要设置固定长度,内部的条目长度固定,可设置最大行数来确定所需要的内存大小,max_heap_table_size
参数用于设置最大行数。因此,对于TEXT
、BLOB
等可变长度数据类型并不支持,但是对于VARCHAR
数据类型,在实际的数据库操作中依然看作固定长度,因此可支持VARCHAR
数据类型。优缺点根据上文的分析,可得出MEMORY表的优缺点如下:优点: 访问速度快,使用hash存储对于相等比较操作性能良好,使用内存中的数据而不用额外生成新文件缺点: 只支持固定长度的数据条目,对于可变长度的数据类型不支持,且使用hash索引,对于范围、排序类的数据比较操作性能较差,需要额外释放内存。4. MERGE文件组成.frm: 存储表的框架信息.MRG:存储表的定义信息具体操作Merge存储引擎相当于MyISAM的一个集合,需要多个表结构相同的MyISAM组合,本身并不存在数据,仅仅是一个结构,增删改查等操作还是需要对于具体的MyISAM表进行操作。优缺点优点: 管理多个MyISAM表,方便操作缺点: 本身是多个MyISAM表的复合表,因此,MyISAM表的缺点都有。5. 总结对上述四种存储引擎进行比较,得出如下表格:
6. 参考博客参考博客-1关键词:
为您推荐
-
近日,普林斯顿大学团队已经开发出一种钙钛矿型太阳能电池设备,工作时间长达30年,传统太阳能电池寿命门槛约为20年,其性能远超业内标准。
22-07-05
-
3月15日,中来股份发布公告称,公司与太原市人民政府、古交市人民政府签署了《战略合作与投资协议》,公司拟在山西省古交市投资年产20万吨
22-03-18
-
中新网8月28日电 据健康北京微信公众号消息,北京中康时代康复医院、北京四惠中医医院等多家医疗机构,存在工作人员未严格落实定期进
21-08-30
-
中新网兰州8月28日电 (记者 殷春永 冯志军)“刚开始说待三年,但三年之后又三年……”14年前受上级“委派”,在大漠戈壁深处的峡谷
21-08-30
-
中新网上海8月28日电 (张践)阿依古丽来自新疆阿勒泰地区,2009年来到上海创业。十余年来,阿依古丽身边的小伙伴们都亲切地称呼她为“
21-08-30
-
新华社郑州8月28日电(记者翟濯)记者从河南省政府新闻办28日举办的“河南省加快灾后重建”周口专场新闻发布会上获悉,本次洪涝灾害共造
21-08-30
-
中新网防城港8月28日电(陈思华 罗婕 李尚珍)8月28日上午,广西防城港火车站增加4条到发线工程正式开工。该工程系广西“十四五”规划
21-08-30
-
河南第一产粮大市近800万亩未受灾秋粮长势喜人 有望以丰补歉 中新网郑州8月28日电 (记者 李贵刚)记者28日从“河南省加快灾后重建
21-08-30
-
今天(8月28日)下午,河南省郑州市召开疫情防控新闻发布会,介绍疫情防控最新情况。 记者从发布会上获悉,郑州市居民小区继续落实查
21-08-30