Msql点滴学习之存储引擎

本文详细介绍了MySQL中四种常用的存储引擎:MyISAM、InnoDB、MEMORY和MERGE,包括它们的特点、优势和应用场景。重点阐述了如何根据用户应用特点选择合适的存储引擎以提高效率和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在关系数据库中数据的存储是以表的形式存储的,有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取非常快,但是插入数据时却很差; 而我们在实际开发过程中,可能需要各种各样的表,不同的表,意味着存储不同类型的数据,数据的处理上也会存在着差异。对于MySQL来说,它默认支持多种存储引擎,以适用不同领域的数据库应用需要,用户可以通过选择使用不同的存储引擎提供应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制行。


MySQL5.5 之前的默认存储引擎是MyISAM, 5.5 之后改为了InnoDB。如果要修改默认的存储引擎,可以在参数文件中设置default—table-type。 查看当前的默认存储引擎,可以使用: show variables like 'table_type'; 如果查看当前数据库支持的存储引擎,可以使用show engines 或 SHOW VARIABLESLIKE 'have%';


下面重点介绍常用的4种存储引擎: MyISAM,InnoDB、MEMORY 和 MERGE 。


1. MyISAM

MyISAM 不支持事务,不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以select、insert为主的应用基本上都可以使用这个引擎来创建表。

MyISAM 存储引擎表的存储有三个文件:.frm 文件,存储表的结构 、.myd文件, 存储表的数据、.myi文件,存储表的索引


MyISAM的表还支持三种不同的存储格式,分别是:静态表;动态表 和 压缩表。

其中静态表示默认的存储格式,静态表中的字段是非变长字段。优点:存储非常迅速,容易缓存,出现故障容易恢复;缺点,占用空间多。动态表中包含变长字段,记录不是固定长度的,优点是占用的空间相对较少,但是频繁地更新和删除记录会产生碎片,需要定期执行optimeize table 语句或myisamchk-r命令改善性能。


2. InnoDB

InnoDB存储提供了具有提交、回滚和崩溃恢复能力的事务安全,但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。 MySQL支持外键存储引擎的只有InnoDB,在创建外键的时候,要求附表必须有对应的索引,子表在创建外表的时候也会自动创建对应的索引。 InnoDB存储方式为两种:1. 使用共享表空间存储  2. 使用多表空间


3. MEMORY

MEMORY存储引擎使用存在于内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,格式是.FRM。 MEMORY 类型的表访问非常地快,因为它的数据是放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失掉。

MEMORY类型的存储引擎主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表。

 

4. MERGE

MERGE存储引擎是你一组MyISAM表的组合,本身并没有数据,对MERGE类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行的。

磁盘文件:.frm 文件(表定义) 和.MRG文件(组合表的信息)

 

以上是对MySQL常用存储引擎的一些理论介绍,在实际中,不同的应用开发各有不同,选择哪种存储引擎需要根据用户各自的应用特点来进行选择。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值