【MySQL】MySQL学习笔记(二)数据库存储引擎

1 MySQL存储引擎简介

  MySQL的核心是存储引擎,DBMS使用存储引擎进行创建、查询、更新和删除数据的操作,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。MySQL提供了多个不同的存储引擎,在MySQL中,不需要再整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同存储引擎,MySQL提供的存储引擎有:

表1-1 MySQL 5.7 支持的存储引擎

EngineSupportCommentTransactionsXASavepoints
InnoDBDEFAULTSupports transactions,row-level locking,and foreign keysYESYESYES
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
MEMORYYESHash based, stored in memory, useful for temporary tablesNONONO
BLACKHOLEYES/dev/null storage engine (anything you write to it disappears)NONONO
MyISAMYESMyISAM storage engineNONONO
CSVYESCSV storage engineNONONO
ARCHIVEYESArchive storage engineNONONO
PERFORMANCE_SCHEMAYESPerformance SchemaNONONO
FEDERATEDNOFederated MySQL storage engineNULLNULLNULL

2 InnoDB存储引擎

  InnoDB存储引擎是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,是MySQL的默认存储引擎。

3 MyISAM存储引擎

  MyISAM基于ISAM的存储引擎,是在web、数据存储和其他应用环境下最常使用的存储引擎之一,拥有较高的插入、查询速度,但不支持事务。


  • 注意:使用MyISAM引擎创建数据库,将产生3个文件,文件的名字以表的名字开始,扩展名指出文件类型:frm文件存储表定义,数据文件的扩展名为.MYD,索引文件的扩展名是.MYI

4 MEMORY存储引擎

  MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。

5 存储引擎的选择

表5-1 存储引擎比较

功能InnoDBMyISAMMemoryArchive
存储限制64TB256TBRAMNone
支持事务YesNoNoNo
支持全文索引NoYesNoNo
支持数索引YesYesYesNo
支持哈希索引NoNoYesNo
支持数据缓存YesNoN/ANo
支持外键YesNoNoNo
  • MyISAM和InnoDB的区别:
    • InnoDB支持事务,MyISAM不支持
    • InnoDB支持外键,而MyISAM不支持
    • InnoDB是聚集索引,数据文件是和索引绑在一起的,MyISAM是非聚集索引,数据文件是分离的
    • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快
  • 如何选择存储引擎:
    • 支持事务、增删改多、并发控制——InnoDB
    • 存储、查询、全文索引——MyISAM
    • 临时存放数据、数据量不大——Memory,主要用来建立临时表,存放查询的中间结果
    • 只有插入和查询——Archive,例如日志归档
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值