MySQL几种存储引擎的特性

前言

在日常开发过程中,很多时候需要代码性能上的调优,在大多数情况下,性能的好坏与数据库有着紧密的联系,因此很有必要学习一下数据库的存储原理,所以从MySQL的几种存储引擎开始,由浅入深,慢慢探索。

MySQL默认支持多种存储引擎,已使用与不同领域的数据库应用需求,用户可以通过选择不同的存储引擎提高应用的效率,提供灵活的存储。

可以通过以下方式查看当前数据库支持的存储引擎:

show ENGINES

从上图中可以看出,MySQL支持的存储引擎包括MRG_MYISAM、MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE、InnoDB、PERFORMANCE_SCHEMA等,其中InnoDB为MySQL默认的存储引擎,笔者使用的MySQL版本号为5.5.49,不同版本会有差异。

几种常用的存储引擎特性

MyISAM

1、不支持事务、不支持外键
2、访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用可以使用这个引擎来建表
3、MyISAM表支持三种不同的存储格式,分别为静态表、动态表、压缩表。其中静态表是默认的存储格式,具有存储迅速,易缓存的优点,缺点是占用的空间比动态表多,动态表则占用空间相对较少,但是频繁的更新或删除记录会产生碎片,压缩表占据的磁盘空间非常小,由于每个记录是被单独压缩的,因此访问开支也非常小 
4、每张使用MyISAM引擎建立的表对应磁盘中的3个文件,文件名和表名相同,扩展名分别为.frm(存储表定义)、.MYD(存储数据)、.MYI(存储索引)                                                                                                                                                                                 

InnoDB  

1、支持事务、支持外键
2、支持自动增长列 
3、写的处理效率差一些,占用更多的磁盘空间以保留数据和索引 
3、InnoDB支持两种存储方式,分别为:共享表空间存储、多表空间存储。使用共享表空间存储时,表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dirinnodb_data_file_path定义的表空间中,可以是多个文件;使用多表空间存储时,数据和索引单独保存在.ibd

MEMORY 

1、不支持事务、不支持外键 
2、将数据存储在内存中,访问速度非常快
3、支持HASH和BTREE索引,默认使用hash索引
4、每个memory表只对应一个格式是.frm的磁盘文件

总结

三种主要的引擎特点如下表所示:

特点MyISAMInnoDBMEMORY
存储限制256TB64TBRAM
事务安全NYN
锁机制表锁行锁表锁
B树索引YYY
HASH索引NNY
全文索引YNN
数据缓存NYY
索引缓存YYY
数据可压缩YNN
空间使用N/A
内存使用中等
支持外键NYN
批量插入速度

如果数据表主要用来插入和查询记录,并且对事务的完整性、并发性要求不高,则MyISAM引擎能提供较高的处理效率

如果应用对事务的完整性有比较高的要求,在并发条件下还要求数据的一致性的能力,那么InnoDB是一个好的选择

如果只是临时存放数据,数据量较小且更新不太频繁,也不需要较高的数据安全性,则可以将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值