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

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g