【MySQL中有哪些存储引擎?请你说说MySQL中innodb和myisam的区别?InnoDB引擎的三大特性?】

MySQL存储引擎MyISAM和InnoDB底层索引结构 目录 一 存储引擎作用于什么对象 二 MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的 三 MyISAM主键索引与辅助索引的结构 1. 主键索引: 2. 辅助(非主键)索引: 四 InnoDB主键索引与辅助索引的结构 1. 主键索引: 2. 辅助(非主键)索引: 五 InnoDB索引结构需要注意的点 PS:为了更好地理解本文内容,我强烈建议先阅读完我的上一篇文章... 阅读详情

在这里插入图片描述

一.MySQL中有哪些存储引擎?

  1. InnoDB存储引擎
    InnoDB是MySQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎。它被设计用来处理大量的短期(short-lived)事务,应该优先考虑InnoDB引擎。
  2. MylSAM存储引擎
    在MySQL 5.1及之前的版本,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,而且崩溃后无法安全恢复。MyISAM对整张表加锁,很容易因为表锁的问题导致典型的的性能问题。
  3. Mrg_MylSAM
    Merge存储引擎,是一组MyIsam的组合,也就是说,他将MyIsam引擎的多个表聚合起来,但是他的内部没有数据,真正的数据依然是MyIsam引擎的表中,但是可以直接进行查询、删除更新等操作。
  4. Archive引擎
    Archive存储引擎只支持INSERT和SELECT操作,会缓存所有的写并利用zlib对插入的行进行压缩,所以比MyISAM表的磁盘I/O更少。但是每次SELECT查询都需要执行全表扫描。所以Archive表适合日志和数据采集类应用,Archive引擎是一个针对高速插入和压缩做了优化的简单引擎。
  5. Blackhole引擎
    Blackhole引擎没有实现任何的存储机制,它会丢弃所有插入的数据,不做任何保存。可以在一些特殊的复制架构和日志审核时发挥作用。但这种引擎在应用方式上有很多问题,因此并不推荐。
  6. CSV引擎
    CSV引擎可以将普通的CSV文件(逗号分割值的文件)作为MySQL 的表来处理,但这种表不支持索引。因此CSV引擎可以作为一种数据交换的机制,非常有用。
  7. Federated引擎
    Federated引擎是访问其他MySQL服务器的一个代理,它会创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,然后提取或者发送需要的数据。默认是禁用的。
  8. Memory 引擎
    Memory表至少比MyISAM 表要快一个数量级,数据文件是存储在内存中。Memory表的结构在重启以后还会保留,但数据会丢失。Memory表支持 Hash索引,因此查找操作非常快。Memroy表是表级锁,因此并发写入的性能较低,每行的长度是固定的,可能导致部分内存的浪费。
  9. NDB集群引擎
    使用MySQL服务器、NDB集群存储引擎,以及分布式的、share-nothing 的、容灾的、高可用的NDB数据库的组合,被称为MySQL集群((MySQL Cluster)。

二.请你说说MySQL中innodb和myisam的区别?

MySQL支持的存储引擎是很多的,没有绝对的好坏之分,只有每一种存储引擎使用在不同应用场景上合适与否、高效高低等等、而不能认为就innodb存储引擎就是最后的,这样其实是不对的。接下来我们就来学习一下面试过程中最常问的两款存储引擎的对比。看看你能回答全吗?

  1. 事务:InnoDB支持事务,MyISAM不支持
  2. 锁:InnoDB支持行级锁和表锁,MyISAM只支持表级锁
  3. 读写性能:InnoDB增删改性能更优,MyISAM查询性能更优
  4. 存储结构:InnoDB在磁盘存储为一个文件,MyISAM在磁盘上存储成三个文件(表定义、数据、索引)
  5. 全文索引:InnoDB不支持(但可通过插件等方式支持),MyISAM默认支持
  6. 外键:InnoDB支持外键,MyISAM不支持
  7. 存储空间:InnoDB需要更多的内存和存储,MyISAM支持支持三种不同的存储格式:静态表(默认)、动态表、压缩表
  8. 移植:InnoDB在数据量小时可通过拷贝数据文件、备份 binlog、mysqldump工具移植,数据量大时比较麻烦,可单独对某个表通过拷贝表文件移植
  9. 崩溃恢复:InnoDB有崩溃恢复机制,MyISAM没有.

三.InnoDB引擎的三大特性是什么?

InnoDB的三大特性是:BufferPool、自适应Hash索引、双写缓冲区。

3.1 自适应Hash索引

  1. InnoDB存储引擎内部自己去监控索引表,如果监控到某个索引经常用,那么就认为是热数据,然后内部自己创建一个hash索引,称之为自适应哈希索引( Adaptive Hash Index,AHI)。
  2. 创建以后,如果下次又查询到这个索引,那么直接通过hash算法推导出记录的地址,直接一次就能查到数据。
  3. InnoDB存储引擎使用的哈希函数采用除法散列方式,其冲突机制采用链表方式。

3.2 Buffer Pool

  1. 为了提高访问速度,MySQL预先就分配/准备了许多这样的空间,为的就是与MySQL数据文件中的页做交换,来把数据文件中的页放到事先准备好的内存中。
  2. 数据的访问是按照页(默认为16KB)的方式从数据文件中读取到 buffer pool中。Buffer Pool按照最少使用算法(LRU),来管理内存中的页。
  3. Buffer Pool实例允许有多个,每个实例都有一个专门的mutex保护。Buffer Pool中缓存的数据页类型有: 索引页、数据页、undo页、插入缓冲(insert buffer)、自适应哈希索引、InnoDB存储的锁信息、数据字典信息(data dictionary)等等。

3.3 双写缓冲区

  1. 双写缓冲区是一个位于系统表空间的存储区域,在写入时,InnoDB先把从缓冲池中的得到的page写入系统表空间的双写缓冲区。之后,再把page写到.ibd数据文件中相应的位置。如果在page写入数据文件的过程中发生意外崩溃,InnoDB在稍后的恢复过程中在doublewrite buffer中找到完好的page副本用于恢复。
  2. doublewrite是顺序写,开销比较小。所以在正常的情况下, MySQL写数据page时,会写两遍到磁盘上,第一遍是写到doublewrite buffer,第二遍是从doublewrite buffer写到真正的数据文件中。
  3. 写俩遍的主要作用是为了避免partial page write(部分页写入)的问题。因为InnoDB的page size一般是16KB,校验和写入到磁盘是以page为单位进行的。而操作系统写文件是以4KB作为单位的,每写一个page,操作系统需要写4个块,中间发生了系统断电或系统崩溃,只有一部分页面是写入成功的。这时page数据出现不一样的情形,从而形成一个"断裂"的page,使数据产生混乱。

四.总结

大家简单的回想一下我们上面学习过程的文章内容,看看自己是否掌握了呢?

  1. MySQL中有哪些存储引擎?
  2. 请你说说MySQL中innodb和myisam的区别?
  3. InnoDB引擎的三大特性?
    大概就是这些内容,MySQL真的很重要,一定要多花点时间来学习这块的知识,不断地积累。
    好了,这篇文章我们就说这么说吧,我是硕风和炜,我们下篇文章再见哦。

在这里插入图片描述

R语言缺失值填补|插值法、均值法、邻近法 本文主要介绍如何利用R语言进行数值型缺失值的填补。主要使用zoo包中的na.aggregate() 、na.approx()、na.locf() 函数进行缺失值的均值填补、线性插值填补以及邻近值填补。 阅读详情

相关推荐

嵌入式Linux开发:手把手教你调试OV9281摄像头Sensor(基于全志平台DTS配置)

本文详细解析了嵌入式Linux开发中OV9281摄像头Sensor的调试全流程,重点介绍了基于全志平台的DTS配置指南。从硬件信号检测到软件驱动配置,包括设备树关键参数设置、内核驱动适配实战及图像质量调优技巧,为开发者提供了一套完整的调试方案,助力工业视觉和边缘计算设备的开发。

weixin_28716769的博客 371

MySQL存储引擎MyISAM和InnoDB的区别

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

Tom弹架构 1万+

数据中心光模块升级实录:从200G QSFP56到400G QSFP-DD的踩坑指南

本文记录了数据中心从200G QSFP56升级至400G QSFP-DD光模块的完整实战经验。文章深入剖析了升级过程中面临的兼容性、链路预算、布线、散热与功耗管理等核心挑战,并提供了具体的解决方案与排坑指南,为高速网络升级提供了宝贵的实践参考。

butter的博客 479

虾皮二面:MySQL 支持哪些存储引擎?MyISAM 和 InnoDB 的区别是什么?

分享一道群友面试虾皮遇到的 MySQL 面试真题。原面试题如下: MySQL 支持哪些存储引擎?如何查看?默认使用哪个? 存储引擎基于数据库还是表? MyISAM 和 InnoDB 的区别是什么?如何选择? 昨天抽了一晚上对这些问题进行了解答,希望对准备面试以及 MySQL 复习知识点的小伙伴有帮助。 马上秋招就来了,最近一直在抽时间更新面试真题 MySQL 核心在于存储引擎,想要深入学习 MySQL,必定要深入研究 MySQL 存储引擎。 MySQL 支持哪些存储引擎?

各种自助共享门店系统定制开发,美团核销服务商 552

Zemax实战录——非序列模式下的微透镜阵列仿真与优化

本文详细介绍了在Zemax非序列模式下进行微透镜阵列仿真的完整流程与优化技巧。文章重点阐述了从序列模式切换到非序列模式的必要性,并逐步指导如何搭建光源、阵列与探测器的仿真环境。核心在于通过调整圆锥系数等关键参数优化像差,并增加光线数以提升仿真精度与均匀性,为光学设计提供可靠依据。

weixin_28339967的博客 518

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 449

Mysql 存储引擎有哪些以及MyISAM和InnoDB区别

1、InnoDB 存储引擎 InnoDB 是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB 是默认的 MySQL引擎。 2、MyISAM 存储引擎 MyISAM 基于 ISAM 存储引擎,并对其进行扩展。它是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事物。 3、MEMORY 存储引擎 MEMORY...

weixin_45151960的博客 519

STM32 SPI驱动TFT LCD实战:时序配置与硬件协同

SPI(串行外设接口)是一种高速、全双工、同步串行通信协议,广泛应用于微控制器与显示模组等外设的数据交互。其核心依赖时钟极性(CPOL)与时钟相位(CPHA)组合定义的四种工作模式,直接影响数据采样可靠性;而片选(NSS)与MOSI/SCLK等信号的硬件映射,则决定了多设备共总线下的通信稳定性。在TFT LCD驱动场景中,SPI凭借低开销、高吞吐优势成为主流选择,尤其适配ST7789、ILI9341等集成显示控制器的模块。本文聚焦STM32L系列MCU通过SPI2驱动1.3寸LCD的完整链路,涵盖Mode

php55的博客 1208

MySQL的innodb存储引擎和MyISAM存储引擎的特性

一、innodb存储引擎 1、支持对数据库的acid事务 2、支持行级锁和外键约束 3、不支持fulltext类型的索引 4、没有保存表的行数;需要查询的时候会使全表扫描 5、必须要有主键 6、写的时候多的时候用这个引擎   二、MyISAM存储引擎 1、不提供对数据库的事务支持;也不支持行级锁和外键 2、使用表级锁,所以写入的时候回锁住整个表 3、支持全文fulltext的...

dw5235的博客 1007

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口)

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC

大樱桃的博客 1万+

【工具】GitHub学生认证+PyCharm配置Copilot全流程指南

本文提供了一份详细的GitHub学生认证及在PyCharm中配置Copilot的完整指南。通过完成A2F认证、准备有效材料并使用干净网络环境,学生可免费获取GitHub Copilot Pro订阅,极大提升编程学习与开发效率。

w7x8y9z的博客 1457

MySQL事务四种特性

首先,我们常用的mysql存储引擎是,myisam和innodb两种引擎,想要使用事务就要用innodb引擎,事务一共有四种包括(原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability))简称acid!

qq_50641170的博客 2358

银行监管报送系统介绍(十五):金融审计平台

金审平台主要包括基础、财务、结算、信贷和中间业务五大板块,主要服务于审计署对中国银行的各项审计任务,同时也可为行内审计、稽核检查、数据分析、总分行提供基础数据服务,为实现基础数据共享提供了有力的数据保障。2019年1月某全国性股份制商业银行收到审计署2019-23号文,文中指出为进一步提高审计数据质量,审计署审计组派员前往9家重点商业银行,就完善标准化数据的相关情况与各银行有关部门进行讨论协商。关于数据报送频率及报送内容:数据从2019年4月开始,按月报送,即于每月25日之前报送上月数据;

银行信息系统应用架构详解 2053

MySQL存储引擎MyISAM与InnoDB区别总结整理

1、MySQL默认存储引擎的变迁在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。2、MyISAM与InnoDB存储引擎的主要特点MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;以下是MySQL 5 MySQL存储

徐刘根的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL - 存储引擎MyISAM和Innodb

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

迪曼奥特迦-博客 5063

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

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

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

"InnoDB"是一种数据库存储引擎,最初由Innobase Oy公司开发,后来被MySQL AB公司收购。这个名称确实不是一个显而易见的缩写或全称,但"Inn"可能代表"inner"(内部)的一个缩写,"DB"代表数据库。因此,可以将"InnoDB"解释为一种内部支持数据库操作的存储引擎。希望这次的解释更清楚了。如果您还有任何疑问,请随时告诉我。--Innobase Oy是一家位于芬兰赫尔辛基的数据库技术公司,最初开发了InnoDB存储引擎。公司成立于1995年,专注于开发高性能的数据库管理系统技术。

sun0322 1321

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySql中存储引擎的介绍以及InnoDB和MyISAM的区别与选择

MySql中存储引擎的介绍以及InnoDB和MyISAM的区别与选择

m0_73613990的博客 1211

MySQL的三种存储引擎 InnoDB、MyISAM、Memory

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。MyISAM是MySQL早期的默认存储引擎。Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

weixin_46039745的博客 1588

MySQL存储引擎MyISAM和InnoDB

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

热爱IT行业 1681

MySQL支持哪些存储引擎?MyISAM和InnoDB有什么区别

MySQL面试题

qq_64270799的博客 1581

MySQL 存储引擎对比:InnoDB vs. MyISAM

MySQL 数据库管理系统的灵活性在于它提供了多种存储引擎,而其中两个最为常见且具有代表性的引擎分别是 InnoDB 和 MyISAM。这两者在处理事务、性能表现、数据完整性等方面有着显著的区别,为了更好地选择适合特定应用场景的存储引擎,我们将在本系列博客中深入对比这两者的特性、使用案例以及最佳实践。

~ 1519

虾皮二面:MySQL支持哪些存储引擎?MyISAM和InnoDB的区别什么?

并且,你还可以根据 MySQL 定义的存储引擎实现标准接口来编写一个属于自己的存储引擎。一般情况下我们选择 InnoDB 都是没有问题的,但是某些情况下你并不在乎可扩展能力和并发能力,也不需要事务支持,也不在乎崩溃后的安全恢复问题的话,选择 MyISAM 也是一个不错的选择。大多数时候我们使用的都是 InnoDB 存储引擎,在某些读密集的情况下,使用 MyISAM 也是合适的。MySQL 存储引擎采用的是插件式架构,支持多种存储引擎,我们甚至可以为不同的数据库表设置不同的存储引擎以适应不同场景的需要。

z1ztai的博客 1609

MySQL存储引擎-InnoDB、MyISAM、MEMORY

MySQL存储引擎是表级别的数据存储实现方式,主要包含InnoDB、MyISAM和MEMORY三种。InnoDB作为5.5版本后的默认引擎,支持事务、行级锁和外键,适合高并发写入场景;MyISAM仅支持表锁,读写速度快但不支持事务,适合读密集型应用;MEMORY将数据存储在内存中,速度快但易丢失,多用于临时表。三者主要区别在于事务支持、锁机制和外键约束,实际应用中InnoDB因其高可靠性和性能成为主流选择,而MyISAM和MEMORY逐渐被NoSQL和Redis等替代。选择引擎需根据事务需求、并发性能和数据

lv05121207的博客 1157

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

例如,在一个银行转账的应用中,从一个账户扣除金额和向另一个账户添加金额的操作可以放在一个事务中,确保不会出现数据不一致的情况。在实际应用中,也可以根据不同的表的特点,选择不同的存储引擎,以达到最佳的性能和数据管理效果。例如,在一个订单管理系统中,订单表中的客户 ID 可以作为外键关联到客户表中的客户 ID,这样可以保证订单表中的客户 ID 在客户表中一定存在。这在一些对数据一致性要求不高,只注重性能的场景中可能是可以接受的,但在需要保证数据完整性的应用中,MyISAM 就不太适用了。

2202_75481735的博客 1239

MySQL的存储引擎MyISAM和InnoDB

mysql的两种存储引擎mysql的两种存储引擎的比较inner join、left join和right joindrop、delete与truncate的区别 mysql的两种存储引擎的比较 MySQL在5.1版本前默认采用的是MyISAM,之后是默认InnoDB。 MyISAM:性能优先,表锁 InnoDB:事务优先(适合高并发场景)、行锁 MyISAM支持全文索引, 而InnoDB不支持。...

lucky多多的博客 1471

深入解析 MySQL 的 MyISAM 和 InnoDB 存储引擎

在 MySQL 数据库中,存储引擎是负责存储和检索数据的核心组件。不同的存储引擎有不同的特点和适用场景。其中,MyISAM 和 InnoDB 是 MySQL 中最为人熟知的两个存储引擎。本文将深入探讨这两个存储引擎的区别,帮助您更好地理解它们的特性以及如何根据实际需求选择合适的存储引擎。

兀行者的博客 1187
上一篇: 【强烈建议收藏:MySQL面试必问系列之SQL语句执行专题】
下一篇: 【强烈建议收藏:MySQL面试必问系列之慢SQL优化专题】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值