Mysql 存储引擎详解


1. 存储引擎简介

关系型数据库表是用来存储和组织信息的数据结构,可以将表理解为由行和列组成的表格。
由于表的类型不同,我们在实际开发过程中,就有可能需要各种各样的表,不同的表就意味着存储不同类型的数据,数据的处理上也会存在差异
对于Mysql来说,它提供了很多种类型的存储引擎
存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
因为在关系型数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)


2. MyISAM 存储引擎

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

MyISAM主要特性有:

  1. 大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持。
  2. 当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成。
  3. 每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16。
  4. NULL被允许在索引的列中,这个值占每个键的0~1个字节。
  5. 可以把数据文件和索引文件放在不同目录(InnoDB是放在一个目录里面的)

静态MyISAM

如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。
因为数据表中的每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。
当数据受损时,恢复工作也比较容易做。

动态MyISAM

如果数据表中出现varchar,xxxtextxxxxBLOB字段时,服务器将自动选择这种表类型 。
相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降,同时内存中也可能会出现很多碎片。
因此这种类型的表要经常 用optimize table命令或优化工具来进行碎片整理。

压缩MyISAM

以上说的两种类型的表都可以用 Myisamchk工具压缩。
这种类型的表进一步减少了占用的存储。
但是这种表压缩之后不能再被修改。
另外,因为是压缩数据,所以这种表在读取的时候要先执行解压缩。

不管是哪种MyISAM表,目前都不支持事务,行级锁和外键约束的功能。
MyISAM表示独立于操作系统的,这说明可以轻松的将其从windows服务器转移到linux服务器;
每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷赫斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值