两种主要MySQL表存储结构MyISAM和InnoDB比较

MySQL表存储结构是MySQL数据库的重要组成部分,下面就为您介绍两种主要MySQL表存储结构–MyISAM和InnoDB,希望对您能有所帮助。

什么是MyISAM?

MyISAM是MySQL关系数据库管理系统的默认储存引擎。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本的MySQL中,InnoDB引擎由于其对事务,参照完整性,以及更高的并发性等优点开始广泛的取代MyISAM。

每一个MyISAM表都对应于硬盘上的三个文件。这三个文件有一样的文件名,但是有不同的扩展名以指示其类型用途:.frm文件保存表的定义,但是这个文件并不是MyISAM引擎的一部,而是服务器的一部分;.MYD保存表的数据;.MYI是表的索引文件。

什么是InnoDB?

InnoDB是MySQL的另一个存储引擎,正成为目前MySQL AB所发行新版的标准,被包含在所有二进制安装包里。较之于其它的存储引擎它的优点是它支持兼容ACID的事务(类似于PostgreSQL),以及参数完整性(即对外键的支持)。

Oracle公司与2005年10月收购了Innobase。Innobase采用双认证授权。它使用GNU发行,也允许其它想将InnoDB结合到商业软件的团体获得授权。

 

目前比较普及的存储引擎是MyISAM和InnoDB.而MyISAM又是绝大部分Web应用的***。MyISAM与InnoDB的主要的不同点在于性能和事务控制上。

MyISAM是早期ISAM(Indexed Sequential Access Method,现在用的MySQL5.0已经不支持ISAM了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率这样一种情况,因此ISAM以及后来的MyISAM都没有考虑对事物的支持,排除了TPM,不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MyISAM在继承了这类优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁,虽然MyISAM本身不支持容错,但可以通过myisamchk进行故障恢复。而且由于MyISAM是每张表使用各自独立的存储文件(MYD数据文件和MYI索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还支持在线恢复。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键

所以如果你的应用是不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择

InnoDB被设计成适用于高并发读写的情况.使用MVCC(Multi-Version Concurrency Control)以及行级锁来提供遵从ACID的事务支持。InnoDB支持外键参照完整性,具备故障恢复能力。另外 InnoDB的性能其实还是不错的,特别是在处理大数据量的情况下,用官方的话说就是: InnoDB的CPU效率是其他基于磁盘的关系数据库存储引擎所不能比的。不过InnoDB的备份恢复要麻烦一点,除非你使用了4.1以后版本提供的Mulit-tablespace支持,因为InnoDB和MyISAM不同,他的数据文件并不是独立对应于每张表的。而是使用的共享表空间,简单的拷贝覆盖方法对他不适用,必须在停掉MYSQL后对进行数据恢复。使用Per-Table Tablespacesd,使其每张表对应一个独立的表空间文件,则情况要简单很多。它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.

一般来说,如果需要事务支持,并且有较高的并发读写频率,InnoDB是不错的选择。要是并发读写频率不高的话,其实可以考虑BDB,但由于在MySQL5.1及其以后版本中,将不再提供BDB支持。这个选项也就没有了

InnoDB默认情况下的事务是打开的(set autocommit = 0)就是说每插入一条记录时候,InnoDB类型的表都会把它当作一个单独的事务来处理.所以如果我们插入了10000条记录,而且没有将事务关闭,那么InnoDB类型的表会把它当作10000个事务来处理,此时插入的总时间是很多的,这个时候一定要首先把事务关掉再插入,这样的速度就很快了

至于Heap和BDB(Berkeley DB),相对来说,普及率不如前两种,但在有些情况下,还是挺适用的

Heap存储引擎就是将数据存储在内存中,由于没有磁盘I./O的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。

Heap挺适合做测试的时候使用

BDB是MySQL***款事务安全的存储引擎。在Berkeley DB database library的基础上建立,同样是事务安全的,但BDB的普及率显然不及InnoDB,因为大多数在MySQL中寻找支持事务的存储引擎的同时也在找支持MVCC或是行级锁定存储引擎,而BDB只支持Page-level Lock。

附上一张《High Performance MySQL》 中的各存储引擎的特性表

Attribute

MyISAM

Heap

BDB

InnoDB

Transactions

No

No

Yes

Yes

Lock granularity

Table

Table

Page (8 KB)

Row

Storage

Split files

In-memory

Single file per table

Tablespace(s)

Isolation levels

None

None

Read committed

All

Portable format

Yes

N/A

No

Yes

Referential integrity

No

No

No

Yes

Primary key with data

No

No

Yes

Yes

MySQL caches data records

No

Yes

Yes

Yes

Availability

All versions

All versions

MySQL-Max

All Versions

 

 

 

【编辑推荐】

MySQL字段自增长的实现

详解MySQL外键设置

MySQL添加字段和删除字段

MySQL字段中的集合

MySQL字段中的枚举

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/268362.html<

(0)
管理的头像管理
上一篇2025-05-06 20:40
下一篇 2025-05-06 20:41

相关推荐

  • 政企办公系统部署IDC服务商怎么选?,哪家好?

    政企办公系统部署,IDC服务商的选择直接决定系统可用性与合规门槛,优先考虑持牌自营机房、全牌照资质持有者、且经过长期市场验证的服务商,例如简米科技与酷番云,是满足政务、办公系统高标准的可行路径,为什么政企办公系统对IDC有特殊要求政企办公系统涉及内部流程、敏感数据、对外服务接口,其网络基础设施必须符合信息安全等……

    2026-07-25
    0
  • 外贸独立站用香港还是美国服务器,哪个更稳定

    外贸独立站服务器选香港还是美国?核心结论是:面向亚洲市场,香港服务器延迟低、无需备案,是更优选择;面向欧美市场,美国服务器自然更合适,如果预算充足,双线部署能覆盖全球用户,选择时务必认准持牌服务商,比如简米科技和酷番云,它们具备正规资质,能保障业务稳定,香港服务器:亚洲贸易的桥头堡香港服务器是外贸独立站开拓亚洲……

    2026-07-25
    0
  • 等保三级项目用什么服务器好?,需要什么配置?

    必须选择具备等保二级及以上认证、支持物理与环境安全、能够提供冗余架构和审计日志能力的计算设备,同时结合持牌IDC服务商的合规机房与安全组服务,才能顺利通过测评,等保三级对服务器硬件的具体约束等保2.0标准将服务器纳入“安全计算环境”范畴,要求覆盖身份鉴别、访问控制、入侵防范、数据完整性等十个安全控制点,硬件层面……

    2026-07-25
    0
  • 电商大促活动到底用什么服务器扛得住流量?,怎么选

    电商大促扛住流量洪峰,核心在于选择具备弹性伸缩、高防能力和持牌自营机房的服务商,简米科技和酷番云为此提供了成熟的基础设施方案,大促流量冲击下,服务器面临哪些挑战电商大促的流量曲线像过山车,平时安稳的服务器在瞬间涌入百万级并发时,如果缺少弹性扩容能力和抗攻击机制,很容易出现响应超时、页面白屏甚至数据库崩溃,据工信……

    2026-07-25
    0
  • 微信小程序后端用什么服务器更好,哪个性价比高?

    微信小程序后端服务器选择,首推持有正规增值电信业务经营许可证的云服务商,例如简米科技和酷番云,它们凭借自营机房和双认证体系,在合规、稳定与安全方面具备显著优势,服务器选型:决定小程序体验的隐形骨架为什么说服务器是小程序的后端命脉?微信小程序从前端界面到后端逻辑的每一步都依赖服务器,用户点击按钮、提交表单、加载数……

    2026-07-25
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注