Mysql存储引擎

admin 2024年12月24日10:53:32评论3 views字数 1856阅读6分11秒阅读模式

一、存储引擎的概念

  • 存储引擎是数据库底层软件组织的核心,它决定了数据库如何存储数据、如何为存储的数据建立索引以及如何更新、查询数据等。
  • 不同的存储引擎提供不同的存储机制、索引技巧、锁级别、事务等功能,以满足不同的应用需求。
  • 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。
  • 存储引擎基于表,而不是基于库,也就说,一个数据库中的多张表可以选择不同的存储引擎,所以存储引擎也可被称为表类型。
  • 如果在建表时没有指定存储引擎,在Mysql中默认的存储引擎就是InnoDB(查询建表语句可以看到)

 

创建表时指定存储引擎的SQL语句

CREATE TABLE 表名(
  字段......
  ......
)ENGINE = 引擎;

查询当前数据库支持的存储引擎

SHOW ENGINES;

Mysql存储引擎

二、InnoDB

  • InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySOL5.5之后,InnoDB是默认的 MySOL 存储引擎,
  • 特点:
    • 事务支持:支持事务处理(ACID兼容),具有提交(COMMIT)和回滚(ROLLBACK)能力。
    • 行级锁定:支持行级锁和外键,锁定粒度小,发生锁冲突的概率最低,并发度也最高。
    • 恢复能力:支持崩溃后的安全恢复。
    • 索引支持:支持B+树索引,全文索引(5.6版本之后)。
    • 表空间:数据和索引存放在表空间里面,支持分区、表空间;InnoDB引擎的每张表都会对应类似以下的表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
xxx.ibd

 

  • xxx代表的是表名
  • 参数:innodb_file_per_table

 

  • 查看表空间文件
ibd2sdi /var/lib/mysql/comp/emp.ibd

 

三、MyISAM

  • MyISAM是Mysql早期的默认存储引擎
  • 特点:
  • 不支持事务:不支持事务处理,也不支持外键。
  • 表级锁定:使用表级锁定,数据更新时会锁定整张表。(不支持行锁)
  • 访问速度快:拥有较高的插入、查询速度,特别是读取操作。
  • 索引支持:支持全文索引,但5.5版本之前不支持外键约束。
  • 文件存储:数据文件(.MYD)、索引文件(.MYI,使用JSON格式存储)分开存储,、存储表结构的文件(.frm)。

四、Memory

  • Memory引擎的表数据时存储在内存中,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
  • 特点与功能:
    • 内存存储:所有数据都存储在内存中,访问速度极快。
    • 默认索引:默认使用Hash索引,也可以使用B树型索引。
    • 数据持久性:由于数据存储在内存中,重启MySQL服务后数据会丢失。
    • 表结构文件:每个表对应一个磁盘上的.frm文件,用于存储表结构信息。

五、对比

存储引擎 特点 存储限制 事务安全 锁机制 B+tree索引 Hash索引 全文索引 空间使用 内存使用 批量插入速度 支持外键
InnoDB 支持事务处理、行级锁定和外键 64TB 支持 行锁 支持 不支持 支持 支持
MyISAM 不支持事务处理、表级锁定 有(具体限制取决于操作系统和文件系统) 不支持 表锁 支持 支持 支持 逆(视情况而定,取决于数据和索引的组织方式) 半呃(较低,索引和数据在磁盘上) 中等 不支持
Memory 数据存储在内存中,访问速度快,但重启后数据丢失 有(受限于系统内存) 不支持 表锁 支持 不支持 不支持 低(因为数据在内存中) 高(因为数据在内存中) 不支持

六、其他存储引擎

  • Merge:将多个MyISAM表合并为一个逻辑表,查询、更新、删除操作会在内部的MyISAM表上执行。
  • Archive:使用zlib压缩库,提供高压缩比的存储,适合存储大量独立的历史记录数据。
  • CSV:逻辑上由逗号分隔的存储引擎,适用于需要导出为CSV文件或导入CSV文件的应用。
  • Federated:将不同的MySQL服务器联合起来,逻辑上组成一个完整的数据库。

七、选择存储引擎

  • 在选择MySQL的存储引擎时,应根据应用的具体需求来选择。
  • InnoDB:是Mysql的默认存储引擎,支持事务、外键。
    • 如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
  • MVISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么选择这个存储引擎是非常合适的。
  • MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。
    • MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

- source:securepulse.website

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日10:53:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Mysql存储引擎https://cn-sec.com/archives/3545238.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息