MySQL中的两种存储引擎MyISAM和Innodb

Innodb与Myisam引擎的区别与应用场景 Innodb与Myisam引擎的区别与应用场景 . 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理); (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁; 立即下载

本文目录:

        1、概述

        2、MyISAM

        3、Innodb

        4、对比

        5、总结

1、概述

      数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。而且,需要注意的是,存储引擎是针对数据表进行指定的。比如,我们通过navicat连接MySQL数据库的时候,可以在设计表结构的时候发现存储引擎的选项。如下图:

通过下拉选框可以看到有多种存储引擎可以选择。所以,我们要在设计数据表的时候,根据自己的业务特点,结合各个存储引擎的优缺点,选择合适的存储引擎。

 当然我们也可以在代码创建表的时候通过type参数来指定具体的存储引擎,如下:

CREATE TABLE tblMyISAM (

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

value_a TINYINT

) TYPE=MyISAM

 

CREATE TABLE tblISAM (

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

value_a TINYINT

) TYPE=Innodb

 

2、MyISAM

(1)简介

      MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB数据库引擎解决了这个问题。现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如:MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。 在数据库做主从分离的情况下,经常选择MyISAM作为主库的存储引擎。

(2)MyISAM特点

  • 不支持行锁(MyISAM只有表锁),读取时对需要读到的所有表加锁,写入时则对表加排他锁;
  • 不支持事务(所以当数据库奔溃的时候,无法完全恢复)
  • 不支持外键
  • 不支持崩溃后的安全恢复
  • 在表有读取查询的同时,支持往表中插入新纪录(读的同时,允许插入记录)
  • 支持BLOB和TEXT的前500个字符索引,支持全文索引
  • 支持延迟更新索引,极大地提升了写入性能
  • 对于不会进行修改的表,支持 压缩表 ,极大地减少了磁盘空间的占用

 

3、Innodb

(1)简介

InnoDB是MySQL的默认数据库引擎(5.5版之后)。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

(2)特点

  • 支持行锁,采用MVCC来支持高并发,有可能死锁
  • 支持事务
  • 支持外键
  • 支持崩溃后的安全恢复
  • 不支持全文索引

 

4、对比和区别

(1)count运算上的区别: 因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好的查询是不需要消耗多少资源的。而对于InnoDB来说,则没有这种缓存。

(2) 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

(3)是否支持外键: MyISAM不支持,而InnoDB支持。

(4)支持的锁粒度:MyISAM只支持表级锁,InnoDB既支持表锁也支持行锁。

 

5、总结

(1)MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。 在数据库做主从分离的情况下,经常选择MyISAM作为主库的存储引擎。

(2)一般来说,如果需要事务支持,可靠性要求比较高,并且有较高的并发读取频率(MyISAM的表锁的粒度太大,所以当该表写并发量较高时,要等待的查询就会很多了),InnoDB是不错的选择。如果你的数据量很大(MyISAM支持压缩特性可以减少磁盘的空间占用),插入不频繁,查询非常频繁,或者需要做很多count 计算,而且不需要支持事务时,MyISAM是最好的选择。

SoC 验证老兵手册 《SoC验证老兵手册》摘要: 针对大型SoC系统级验证,手册提出Cache+DMA场景的高效验证方案。核心方法采用C测试用例(模拟Linux/RTOS真实场景)触发隐蔽bug,配合SV Checker精准捕捉硬件问题(如DMA读取脏缓存行)。特别强调验证方法论:C用例负责复杂行为模拟,SV专注RTL正确性检查;利用Linux天然并发性暴露硬件缺陷。手册还包含模拟面试攻防技巧,指出验证架构师需具备定义Stimulus/Checker边界的能力。终极判断标准:未通过Linux下Cache+DMA+SMP+中断测 阅读详情

相关推荐

LTspice仿真三线制PT100高精度测温系统设计

本文详细介绍了如何使用LTspice仿真设计三线制PT100高精度测温系统。文章从三线制原理出发,逐步讲解了在LTspice中建模PT100、构建惠斯通电桥进行信号转换、设计差分放大与滤波电路、选型ADC以及进行系统联调与误差分析的全过程,旨在帮助工程师实现0.5°C分辨率的工业测温方案设计。

pz89012345的博客 95

mysql读写分离 写用Innodb 读用MyISAM

在写多读少的应用中还是Innodb插入性能更稳定,在并发情况下也能基本,如果是对读取速度要求比较快的应用还是选MyISAM。

weixin_33739627的博客 1115

Arm A-profile架构RAS系统设计:可靠性、可用性与可服务性解析

在计算机体系结构中,可靠性(Reliability)、可用性(Availability)和可服务性(Serviceability)是构建高可信系统的核心要素。RAS系统通过硬件错误检测、隔离和恢复机制,确保系统持续稳定运行。其技术原理包括ECC内存纠错、冗余执行单元和错误传播阻断等关键技术,可显著降低数据中心等关键业务场景的故障率。现代芯片设计中,Arm A-profile架构提供标准化的RAS框架,涵盖从内存子系统到计算单元的全方位错误管理。通过分层防御策略和统一错误记录格式,实现硬件错误可追溯、可修复。

weixin_30920853的博客 351

mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB

问题1:MySQL的data里的网站数据库里只有.frm 而没有.MYD和.MYI文件?解释:首先排除误删的情况,那么,你的此数据库的存储引擎可能为innoDB类型(把数据库导入为.sql后,可以在每个表结构后看到写着“ENGINE=InnoDB”;或者使用phpmyadmin查看数据表时,在“类型”列下,显示每个表的类型为“ENGINE=InnoDB”)。那么,在windows主机下查看数据库目...

weixin_39663729的博客 669

Cocos Creator 3D音频定位实战:从原理到沉浸感实现

3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案,

weixin_30972263的博客 286

Windows批处理脚本实战:用Ping命令打造简易网络监控工具(附完整代码)

本文介绍如何利用Windows批处理脚本和Ping命令,快速构建一个轻量级、自动化的网络监控工具。该方案无需额外安装软件,通过周期性探测目标IP连通性,并将结果(成功、失败及延迟)自动记录到带时间戳的日志文件中,适合中小团队或临时监控需求,实现低成本、高效率的网络状态监控。

5f4d3s2a1q的博客 487

mysql核心-innodb与myisam详细解读

mysql我们经常用到,我们对于mysql表的存储引擎认识又有多少呢,这篇文章会告诉你关于mysql存储引擎相关内容数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据;不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。具体实际应用场景灵活多变。参考文献。

HONG的个人博客 1104

《YOLOv8实例分割实战:训练自己的数据集 》(视频课程)

本课程将手把手地教大家使用labelme标注和使用YOLOv8训练自己的数据集,完成一个多目标实例分割实战项目。

bai666ai的博客 780

mysql的两种引擎_论MySQL数据库中两种数据引擎的差别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。MyIASM是IASM表的新版本,有如下扩展:1、二进制层次的可移植性。2、NULL列...

weixin_39736379的博客 203

解决Matlab激活后License checkout failed问题的详细步骤与避坑指南

本文详细解析了Matlab激活后出现License checkout failed错误的常见原因及解决方案,重点介绍了如何正确找到并运行激活程序,避免用户名填写错误等常见问题。文章还提供了多次激活与疑难排解的实用建议,帮助用户顺利完成Matlab激活过程。

weixin_33670786的博客 572

R语言机器学习算法实战系列(十三)随机森林生存分析构建预后模型 (Random Survival Forest)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。

专注生信领域 2001

mysql的InnoDB和Myisam引擎

InnoDB有事务,适合频繁修改数据的OLTP;Myisam是无事务,适合读取 那么主库InnoDB,备库Myisam呢? 可以的,有人在做了 slave机器的可以节省一半以上的空间 slave备份更快.读性能更高 其他略 具体操作如下 设置主库默认引擎为innodb,备库默认引擎为Myisam,并且备库不能支持innodb引擎 /etc/my.cnf中注释掉和In...

郑泽洲的博客 379

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1065

MySQL存储引擎MyISAM和InnoDB的区别

需要完整版PDF面试文档可扫描左侧二维码拿! 你都工作3年了,怎么还不知道MyISAM和InnoDB有什么区别?一位粉丝被面试官这样一个问题。当时,这位粉丝直接回复“不知道”,这位粉丝自己也怪不好意思的。 其实,面试官问他这个问题也不是随便问的,也是看了这位粉丝简历上写了熟练MySQL才提问的。其实,对于MySQL,这位粉丝可能只是非常熟练地完成建库、建表、往数据库表中读写数据这些简单的操作而已,并没有去了解建表的原理。 这个面试题也给我们敲了一下警钟,对于有些技术的知识点,要是没有掌握到一定深

Tom弹架构 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL的InnoDB和MyISAM存储引擎的区别

详细介绍了Mysql的InnoDB和MyISAM存储引擎的区别。

终生学习践行者 2408

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL - 存储引擎MyISAM和Innodb

首先,我们先看一下MySQL的体系架构,对MySQL整个架构有一个直观的感受: MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。存储引擎在MySQL的体系架构中位于第三层,负责MySQL中数据的存储与提取,是与底层系统文件打交道的子系统。MySQL存储引擎是插件式的,执行器通过调用存储引擎的API接口操作数据,接口屏蔽了不同存储引擎之间的差异,可以根据不同的需求去选择不同的存储引擎。存储引擎是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就

迪曼奥特迦-博客 5062

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Mysql的MyISAM和Innodb两种存储引擎以及区别

目录 一、Mysql的两种存储引擎   1、MyISAM:   2、Innodb: 一、Mysql的两种存储引擎 1、MyISAM: ①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性、一致性、隔离性、持久性) ②不支持外键,支持表锁,每次锁住的是整张表,MyISAM的表锁有读锁和写锁(两个锁都是表级别): 表共享读锁和表独占写锁。在对MyISAM表进行读操作时,不会阻塞其他用户对同一张表的读请求,但是会阻塞其他用户对表的写请求;对其进行写操作时会阻塞对同一表读操作和写操作.

白不懂黑的静的专栏 1320

MySQL存储引擎 INNODB和MYISAM

是数据库底层软件组件,数据库管理系统使用数据索引进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧】锁定水平等功能,使用不同的存储引擎可以获得特定的功能。

anbesrt的博客 1175

MySQL存储引擎InnoDB和MyISAM的区别

面试经常会问到MySQL存储引擎的相关内容。常见的MySQL存储引擎有MyISAM和InnoDB,本文主要介绍这两种存储引擎的特点和区别以及如何选择合适的存储引擎。 什么是引擎? 引擎(Engine)是开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能。什么是MySQL 引擎? 简单来说:MySQL存储引擎就是指表的类型以及表在计算机上的存储方式。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。InnoDB是事务型数据库的首

qq_52173163的博客 2613

MySQL两种存储引擎: MyISAM和InnoDB 的区别和优缺点

MySQL两种存储引擎: MyISAM和InnoDB 简单总结 Mysql 数据库主要有以下几种引擎,介绍如下, 本文将主要介绍MyISAM和InnoDB这两个引擎。 1.1 MyISAM和InnoDB简介 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)...

helloxiaozhe的博客 2万+

【MYSQL】存储引擎MyISAM和InnoDB

在实现上面两个功能的同时,需要考虑客观条件的限制,因为机器的内存大小是有限的,所以MySQL的InnoDB Buffer Pool的大小同样是有限的,如果需要缓存的页占用的内存大小超过了Buffer Pool大小,也就是Free链表中已经没有多余的空闲缓存页的时候岂不是很尴尬,发生了这样的事儿该咋办?所以,我们不得不再创建一个存储脏页的链表,凡是在LRU链表中被修改过的页都需要加入这个链表中,因为这个链表中的页都是需要被刷新到磁盘上的,所以也叫FLUSH链表,有时候也会被简写为FLU链表。

xiazi0721的博客 1227

mysql 存储引擎InnoDB和MyISAM详解

存储引擎 简介 存储引擎通俗的说就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。 因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 Oracle和SQL Server等数据库只有一种存储引擎,所有数据存储管理机制都是一样的;而MySql数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎...

CrownP的博客 1254

MySQL 存储引擎 MyISAM 和 InnoDB

目录引言一、MyISAM 存储引擎1. 存储引擎概述2. MyISAM 介绍3. MyISAM 特点4. MyISAM 支持的存储格式5. 适用的生产场景二、InnoDB 存储引擎1. InnoDB 概述2. 特点3. 适用的生产场景4. 企业选择存储引擎的依据三、存储引擎的查看与修改1. 查看数据库可配置的存储引擎类型2. 查看表使用的存储引擎3. 修改存储引擎总结 引言 存储引擎的实质就是如何实现存储数据,为存储的数据建立索引以及查询、更改、删除数据等技术实现的方法。 不同于很多数据库系统仅仅选择一种

不要因为走的太远而忘了为什么出发 3080

MySQL存储引擎中的MyISAM和InnoDB

MySQL存储引擎中的MyISAM和InnoDB 更好排版:https://www.zybuluo.com/phper/note/78781 转载自标点符网站:MySQL存储引擎中的MyISAM和InnoDB 。这里仅仅防止好文被删,留个备份。 在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开

domorejojo 1025

MySQL存储引擎MyISAM和InnoDB

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。

weixin_73083053的博客 1064

MySql存储引擎MyISAM和InnoDB

什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支...

zhangshengdong111的专栏 274
上一篇: Java中equals()和hashCode()关系
下一篇: MySQL数据库中的锁知识点梳理
W墨眉W
博客等级 码龄9年 40粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值