MySQL的存储引擎

MySQL中的存储引擎


简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。
存储引擎是MySQL的概念,Oracle中没有存储引擎,Oracle中有OLTP和OLAP模式之分,不同的存储引擎决定了MySQL数据库中的表可以以不同的方式来存储。

MySQL中的存储引擎有很多种,可以通过“SHOW ENGINES”语句来查看。主要有InnoDB,MyISAM,MEMORY这三种。

1、InnoDB

InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。MySQL后来的版本默认的存储引擎就是InnoDB。

  • InnoDB支持AUTO_INCREMENT。自动增长的列不能为空,并且值必须唯一。
  • MySQL中只有InnoDB支持外键,外键所在的表叫做子表,外键所依赖的表叫做父表。父表被子表所关联的字段必须为主键。当删除,更新父表中的某条信息的时候,子表也应该有相应改变,这是数据库的参照完整性规则。
  • InnoDB中,创建的表的表结构存储在.frm文件中,数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

InnoDB的优势在于提供了良好的事务处理,崩溃修复能力和并发控制。缺点读写效率差,占用的数据空间较大。

2、MyISAM

MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。

MyISAM的表存储成3个文件,文件的名字与表名相同。拓展名为frm,MYD,MYI。其中,frm文件存储表的结构,MYD(MYData)存储数据,MYI(MyIndex)存储索引。

基于MyISAM存储引擎的表支持3种不同的存储格式,包括静态型,动态型和压缩型。静态型是MyISAM的默认存储结构,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用磁盘空间较小。

MyISAM占用空间小,处理速度快,缺点是不支持事务的完整性和并发性。

3、MEMORY

Memory是MySQL中一类特殊的存储引擎,其使用存储在内存中的内容来创建表,而且所有数据也存放在内存中。
每个基于memory存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型为frm类型。该文件只存储表的结构,其数据是存放在内存中的,有利于数据的快速处理。
Memory存储引擎默认使用哈希(HASH)索引,速度比B型树快,如果要使用B型树,可以在创建索引时选择使用。

因此,Memory存储引擎基于内存中的特性,处理速度非常快,但是数据容易丢失。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值