Mysql的【存储引擎】之【InnoDB】与【MyISAM】的区别

2024-04-21 15:36

本文主要是介绍Mysql的【存储引擎】之【InnoDB】与【MyISAM】的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.存储引擎在 MyISAM 和 InnoDB 有什么区别

2.Mysql 5.7 默认的存储引擎是什么

3.一个简单例子(如果非要使用【MyISAM】存储引擎 )

4.2009年写的留言板程序的数据(存储引擎是:【MyISAM】)

5.mysql 8.0 可以使用 MyISAM 存储引擎 吗?

6.什么是【InnoDB】数据库引擎

7.什么是【MyISAM】数据库引擎

8.ISAM 和 InnoDB 相比,有什么优势


-----------

1.存储引擎在 MyISAM 和 InnoDB 有什么区别

MyISAM 和 InnoDB 是 MySQL 中两种常用的存储引擎,它们有以下区别:

  1. 事务支持:InnoDB 支持事务,可以使用 COMMIT 和 ROLLBACK 来实现事务的原子性、一致性、隔离性和持久性,而 MyISAM 不支持事务。

  2. 行级锁和表级锁:InnoDB 支持行级锁,可以提高多用户并发时的性能,而 MyISAM 只支持表级锁,在并发访问下可能会导致性能问题。

  3. 外键约束:InnoDB 支持外键约束,可以保证数据的完整性和一致性,而 MyISAM 不支持外键约束。

  4. 数据缓存:InnoDB 会缓存数据和索引,可通过缓冲池来提升性能,而 MyISAM 只缓存索引,不缓存数据,对于频繁读取的应用可能会有些许性能上的差异。

  5. 崩溃恢复:InnoDB 在MySQL异常情况下更加稳健,其崩溃恢复能力较强。而MyISAM在某些情况下可能会出现数据丢失。

基于以上区别,一般来说,对于需要支持事务、需要较好并发控制和数据完整性的应用,推荐使用 InnoDB 存储引擎;而对于仅需要快速读取、对数据完整性要求不高的应用,可以考虑使用 MyISAM 存储引擎。

2.Mysql 5.7 默认的存储引擎是什么

Mysql 5.7 默认的存储引擎是 InnoDB。从Mysql 5.5版本开始,InnoDB 被作为默认的存储引擎,并取代了之前的 MyISAM。这是因为 InnoDB 支持事务、行级锁和外键约束等特性,适合更多的应用场景,提供了更好的性能和数据完整性。

3.一个简单例子(如果非要使用【MyISAM】存储引擎 )

create database messageBoard DEFAULT CHARACTER SET utf8;

create database messageBoard DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

-------

create table messageboard_user(
   id int not null auto_increment primary key,
   muId varchar(16) NOT NULL,
   muMessage varchar(100) NOT NULL,
   muReply varchar(100),
   muTime TIMESTAMP NOT NULL,
   muState varchar(15),
   muIp varchar(20) NOT NULL
)Engine=MyISAM
DEFAULT CHARACTER SET utf8;

4.2009年写的留言板程序的数据(存储引擎是:【MyISAM】)

===

MySQL数据库连接配置(tomcat,java)_tomcat maxwaitmillis-CSDN博客

===

5.mysql 8.0 可以使用 MyISAM 存储引擎 吗?

是的,MySQL 8.0 仍然支持 MyISAM 存储引擎。尽管在 MySQL 5.5 版本及之后,InnoDB 被设置为默认存储引擎,但是 MyISAM 仍然可以在 MySQL 8.0 中使用。然而,MySQL 官方建议将表格转换为 InnoDB 存储引擎以获得更好的性能和数据完整性。 MyISAM 存储引擎在某些情况下仍然有其特定的用途,比如进行只读操作或者非事务性的简单存储等情况。

==

6.什么是【InnoDB】数据库引擎

"InnoDB"是一种数据库存储引擎,最初由Innobase Oy公司开发,后来被MySQL AB公司收购。这个名称确实不是一个显而易见的缩写或全称,但"Inn"可能代表"inner"(内部)的一个缩写,"DB"代表数据库。因此,可以将"InnoDB"解释为一种内部支持数据库操作的存储引擎。希望这次的解释更清楚了。如果您还有任何疑问,请随时告诉我。

--

Innobase Oy是一家位于芬兰赫尔辛基的数据库技术公司,最初开发了InnoDB存储引擎。公司成立于1995年,专注于开发高性能的数据库管理系统技术。在2005年,Innobase Oy被MySQL AB收购,后来MySQL AB被Sun Microsystems和Oracle收购。InnoDB存储引擎被MySQL数据库广泛应用。

===

7.什么是【MyISAM】数据库引擎

MyISAM存储引擎是MySQL数据库系统的另一种存储引擎,最初由Uppsala University数据库研究组开发。MyISAM最早出现在MySQL 3.23版本中,并在之后的MySQL版本中得到持续改进和优化。MyISAM存储引擎以其简单、快速和高效的特性而闻名,是MySQL数据库中最常用的存储引擎之一。

MyISAM存储引擎具有以下特点:

  1. 支持全文本索引:MyISAM存储引擎提供了全文本索引的支持,使得用户可以进行高效的全文搜索操作。
  2. 不支持事务和外键约束:相比InnoDB存储引擎,MyISAM不支持事务处理和外键约束,因此在需要事务支持和数据完整性方面可能不如InnoDB存储引擎。
  3. 表级锁定:MyISAM采用表级锁定,因此在高并发的情况下可能出现锁定竞争,影响系统性能。

总的来说,MyISAM存储引擎适用于读写不频繁且对数据完整性要求不高的场景,例如用于存储静态数据或日志信息。如果您有任何其他问题或需要更多详细信息,请随时告诉我。

---

ISAM是指Indexed Sequential Access Method(索引顺序存取方法),是一种早期的数据库存储引擎技术,主要用于将数据按照顺序排列,并使用索引进行快速检索。ISAM将数据存储在一个主数据文件和一个索引文件中,通过索引来加快数据检索速度。然而,ISAM不支持事务处理和并发访问控制,因此在现代数据库系统中已经较少使用。MySQL数据库中没有ISAM存储引擎,但InnoDB存储引擎就是一个常用的替代选择,它支持事务处理和具有更好的并发性能。

==

8.ISAM 和 InnoDB 相比,有什么优势

ISAM和InnoDB是两种不同的存储引擎技术,它们各自有着不同的优势和劣势。

优势:

ISAM的优势:

  • ISAM拥有简单架构,因此对资源消耗较小,读取速度较快。
  • ISAM适用于静态或者少量变动的数据,需要定期维护索引,但在某些特定场景下可以有较好的性能表现。
  • InnoDB的优势:
  • InnoDB支持事务处理和行级锁定,保证数据的完整性和一致性,更适合于有较高并发要求的应用。
  • InnoDB支持外键约束和更多的数据恢复和备份功能,更适合于需要强大数据库功能和可靠性的应用场景。
  • InnoDB适合于大规模数据存储和频繁更新的场景,具有更好的性能和稳定性。

总的来说,InnoDB在事务处理、数据完整性、大规模数据处理等方面有着明显的优势,而ISAM适用于一些小型或者特定场景下的应用。在选择存储引擎时,需要根据具体的应用需求来选择合适的存储引擎。

---

这篇关于Mysql的【存储引擎】之【InnoDB】与【MyISAM】的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923429

相关文章

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分