mysql入门(三)mysql的存储引擎

我们都知道mysql支持了很多种存储引擎,那么它们之间有什么区别、我们又怎么选择呢?本文主要讲述了mysql常用的存储引擎的优缺点,以及它们各自的适用场景。

Mysql的存储引擎

  1. 查看数据库所支持的存储引擎指令为:show engines; 它可以使用’\g’或者’\G’或者’;‘结束。’\G’的结果更为美观一些
  2. 查询当前默认使用的存储引擎为 show variables like ‘%storage_engine%’;

InnoDB(B+)

优点

  • 支持自动增长序列,AUTO——INCREMENT;非空唯一,为主键。
  • 支持外键
  • 提供良好的事务管理、崩溃修复能力与并发控制。

缺点

  • 缺点是读写效率稍差,占用数据空间相对较大。

###应用场景

  • 密集型表。InnoDB适合处理多重并发的更新请求;
  • 事务。InnoDB是唯一支持事务标准的MySql存储引擎。
  • 自动灾难恢复。能够自动回复,但是回复时间较长。

MyISAM(B+索引,索引与数据分离,索引只记录地址)

  • 它是基于ISAM发展起来的。解决了许多不足

MyISAM存储的文件类型

  1. frm 存储表的结构
  2. MYD 存储数据,是MYData的缩写。
  3. MYI 存储索引,是MYIndex的缩写。

存储格式

  • MyISAM静态。如果所有表列的大小都是静态的(即不使用xBLOB,xTEXT或VARCHAR数据类型),便会自动使用静态MYISAM格式。使用这种类型性能高,因为在维护和访问以预定义格式存储的数据开销很低。以空间换时间。
  • MyISAM动态。如果有表列(即使只有一列)定义为动态。MySql自动使用动态格式。动态格式比静态格式所占空间少,但带来性能下降,以及当某个字段发生改变则位置移动会导致碎片的产生,数据集中碎片增加数据访问性能就会降低。有两种修复方式:第一:尽可能使用静态数据类型。第二:经常使用OPTIMIZE TABLE语句,它会整理表的碎片,恢复由于表更新和删除导致的空间丢失。

MyISAM压缩

  • 有时候会创建在整个应用程序生命周期中都只读的表。这种情况下可以使用myisampack工具将其转化为MyISAM压缩表来减少空间。

MyISAM的优缺点

它的优势在于占用空间小,处理速度快;缺点是不支持事务的完整性和并发性。

MEMORY存储引擎

MEMORY的文件存储格式

  • 基于MEMORY的表实际对应一个磁盘文件。文件名与表名相同。类型为frm。该文件只存储表的结构,数据文件都存储在内存中。这十分有利于对数据的快速处理,提高表的的处理效率。但服务器需要有足够的内存。

MEMORY存储引擎的索引类型

  • 它默认使用哈希索引,其速度优于B树索引。可以在创建时进行选择。

MEMORY的存储周期

  • 它一般很少用到,因为它的数据存储在内存上,内存出现异常就会影响数据的完整性。重启机器或者关机会导致表中的数据消失。所以它的生命周期很短,一般是一次性的。

MEMORY的优缺点

  • MEMORY的大小受到限制。取决于两个参数,max_rows 以及 max_heap_table_size;max_rows可以在建表时候使用,max_heap_table_size默认为16MB;

存储引擎的选择

每种存储引擎都有自己的优势,不能笼统的说谁比谁好,只有在某种场景下哪一个更合适。

InnoDB

关于InnoDB的使用,它用于事务处理应用程序, 具有众多的特性,包括ACID事务支持,支持外键,同时支持崩溃修复能力与并发控制。它更适用于对事务的完整性要求较高,实现并发控制。若需要频繁的更新、删除操作的数据库,也可以选择InnoDB。因为它可以实现事务的提交与回滚。

MyISAM

它适用于管理非事务表,他提供了告诉存储与检索以及全文搜索能力。MyISAM存储引擎插入数据快,空间和内存使用比较低。如果表主要用于插入新纪录和读出记录,它能实现处理的高效率。在应用对完整性与并发性要求低的情况下,也可以选择它。

MEMORY

MEMORY提供在内存中的表,它的所有数据都在内存中,数据的处理速度非常快,但是安全性较差。如果需要很快的读写速度,对数据的安全性要求低,那么它是最适合的。但是它也有一定的局限性,它对表的大小有限制,不能建立太大的表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值