> 文档中心 > 【MySQL入门实战3】-存储引擎

【MySQL入门实战3】-存储引擎


📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.存储引擎
    • 📣 2.InnoDB 存储引擎
    • 📣 3.MyISAM存储引擎
    • 📣 4.Memory存储引擎
    • 📣 5.ARCHIVE 存储引擎
    • 📣 6.总结
    • ✨ 每日一练

前言

MySQL入门实战将持续推出MySQL入门的技能和相关运维经验给大家


📣 1.存储引擎

存储引擎是存储系统的发动机,直接决定了存储系统的性能和功能。存储引擎负责管理数据具体在存储介质上如何存储和检索。不同的存储引擎的优劣势不同,我们需要了解不同存储引擎的优缺点,才能根据需求选择合适的存储引擎来管理数据,从而来提高存储系统的性能,以下将介绍几种常用的存储引擎。
1.MyISAM: 拥有较高的插入,查询速度,但不支持事务
2.InnoDB :5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定
3.Memory :所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
4.Merge :将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
Archive :非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
5.Federated: 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
6.CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。

查询MySQL支持的存储引擎
mysql> show engines;
查看当前的默认存储引擎
mysql> show variables like “default_storage_engine”;

【MySQL入门实战3】-存储引擎

📣 2.InnoDB 存储引擎

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的 MySQL存储引擎。支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如证券),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

【MySQL入门实战3】-存储引擎

📢📢📢 应用场景

由于其支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

📣 3.MyISAM存储引擎

MyISAM是MySQL早期的默认存储引擎,不支持事务,不支持外键,支持表锁,不支持行锁,占用空间小,访问速度快。插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率,一般用于以读写插入为主的应用程序,比如博客系统、新闻门户网站。

📢📢📢 应用场景

1 、不需要事务支持的业务(例如转账就不行)。
2 、一般为读数据比较多的应用,读写都频繁场景不适合,读多或者写多的都适合。
3 、读写并发访问相对较低的业务(纯读纯写高并发也可以)(锁定机制问题)
4 、数据修改相对较少的业务(阻塞问题)。
5 、以读为主的业务,例如:数据库系统表、www, blog ,图片信息数据库,用户数据库,商品库等业务。
6 、对数据一致性要求不是非常高的业务(不支持事务)。
7 、硬件资源比较差的机器可以用 MyiSAM (占用资源少)
8 、使用读写分离的 MySQL 从库可以使用 MyISAM。
小结:单一对数据库的操作都可以使用MyiSAM,所谓单一就是尽量纯读,或纯写 ( insert . update , delete )等.

📣 4.Memory存储引擎

Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY,它对表的大小有要求,不能建立太大的表。

📢📢📢 MEMORY 主要特性有:

1、MEMORY 表的每个表可以多达 32 个索引,每个索引 16 列,以及 500B 的最大键长度。
2、MEMORY 存储引擎引擎执行 HASH 和 BTREE 索引。
3、可以在一个 MEMORY 表中有非唯一键。
4、MEMORY 不支持 BLOB 或 TEXT 列。
5、MEMORY 表使用一个固定的记录长度格式。
6、MEMORY 支持 AUTO_INCREMENT 列和对包含 NULL 值的列索引。
7、MEMORY 表内容被存在内存中,内存是 MEMORY 表和服务器在查询处理时的空闲中创建的内部表共享。
8、MEMORY 表在所有客户端之间共享(就像其他任何非 TEMPORARY 表)。
9、当不再需要 MEMORY 表的内容时,要释放被 MEMORY 表使用的内存,应该执行 DELETE FROM 或 TRUNCATE TABLE,或者删除整个表(使用 DROP TABLE)。

📣 5.ARCHIVE 存储引擎

ARCHIVE 存储引擎非常适合存储大量独立的、作为历史记录的数据。ARCHIVE 提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差。

📣 6.总结

在MySQL数据库中可以使用多种存储引擎的表,如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

📢📢📢 存储引擎的选择

【MySQL入门实战3】-存储引擎

✨ 每日一练

关于 MySQL 的存储引擎,下列说法错误的是:()
1.InnoDB 支持事务,有更好的并发能力。
2.MyISAM 不支持事务和外键,结构简单,可以压缩为只读状态。
3.Memory 引擎将数据保存在内存中,重启会丢失数据,读速度快很快,适合作为会话表和缓存表。
4.临时表默认使用 Memory 引擎。
A.4
B.1, 2, 3
C.全部都对
D.2, 3, 4

❤️❤️❤️ 请在评论区留下你的答案,我会做出详细的解答。

在这里插入图片描述