Mysql存储引擎

分布式锁特点、以及用python3实现redis分布式锁 以下是 Python3 实现 Redis 分布式锁的详细教程,包含代码示例、原理说明及最佳实践。 阅读详情

一、Mysql的存储引擎

简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。

存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有OLTP和OLAP模式的区分。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。

在MySQL中的存储引擎有很多种,可以通过“SHOW ENGINES”语句来查看。

这里写图片描述

从截图我们可以看到mysql默认的是InnoDB,并且还有其他存储引擎以及它们的作用。
我们主要讨论前三种比较常见的存储引擎——InnoDB,MYISAM、Memory。

二、InnoDB存储引擎

1、InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。
2、InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。
3、InnoDB支持外键、自增长。自动增长列的值不能为空,并且值必须唯一。
4、采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。
5、表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。
6、内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。
7、通过一些机制和工具支持真正的热备份。
8、InnoDB中,创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

三、MyISAM存储引擎

1、MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。
2、MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等
3、 MyISAM 不支持事务和行级锁,有表级锁
4、崩溃后无法安全恢复。可以手工或者自动执行检查和修复操作,但是和事务恢复以及崩溃恢复不同,可能导致一些数据丢失,而且修复操作是非常慢的。
5、可以包含动态或者静态的行。
6、如果指定了 DELAY_KEY_WRITE 选项,在每次修改执行完成时,不会立即将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入磁盘。这种方式可以极大的提升写入性能,但是在数据库或者主机崩溃时会造成索引损坏,需要执行修复操作。
7、MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为frm、MYD、MYI。其实,frm文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。
8、基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。

MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。
如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合采用 MyISAM 压缩表。
对于只读数据,或者表比较小、可以容忍修复操作,则依然可以继续使用 MyISAM。

InnoDB和MyISAM比较
事务:InnoDB 是事务型的。
备份:InnoDB 支持在线热备份。
处理速度:MyISAM速度比InnoDB快。
崩溃恢复:MyISAM 崩溃后发生损坏的概率比 InnoDB高很多,而且恢复的速度也更慢。
并发:MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
其它特性:MyISAM 支持全文索引,地理空间索引。

为什么MyISAM会比Innodb的查询速度快?
INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
1)数据块,INNODB要缓存,MYISAM只缓存索引块, 这中间还有换进换出的减少;
2)innodb寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致:
InnoDB通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。【但是InnoDB并不存储这些事件发生时的实际时间,相反它只存储这些事件发生时的系统版本号。这是一个随着事务的创建而不断增长的数字。每个事务在事务开始时会记录它自己的系统版本号。】每个查询必须去检查每行数据的版本号与事务的版本号是否相同。

参考:MySQL与B树的那些事

四、MEMORY存储引擎

MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中。这些特性与前面的两个很不同。

MEMORY默认使用哈希索引。速度比使用B+型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。

注意,MEMORY用到的很少,因为它是把数据存到内存中,如果内存出现异常就会影响数据。如果重启或者关机,所有数据都会消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。

五、如何选择?

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

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

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

国密SSL通信的调试技巧 前面写了几篇国密开发相关的文章:解读国密非对称加密算法SM2啥?双证书?详解国密SM2的加密和解密详解国密SSL ECC_SM4_SM3套件详解国密SM2的数字签名这篇文章来聊一聊国密S... 阅读详情

相关推荐

QMT量化交易实战:如何用通达信预警数据自动买卖股票(附完整Python代码)

本文详细介绍了如何利用QMT平台结合通达信预警数据实现股票自动化交易,提供完整的Python代码实现。通过实时监控通达信预警板块文件,系统自动执行买卖操作,提升交易效率。文章涵盖系统架构设计、数据对接、信号处理、订单执行等核心模块,适合量化交易初学者和通达信用户参考实践。

weixin_29251567的博客 679

MySQL数据库的存储引擎

MyISAM:不支持事务和外键约束,占用空间较小,访问速度快,适用于不需要事务处理,频繁查询的应用场景。1、MyISAM不支持事务,也不支持外键约束,只支持全文索引,数据文件和索引文件是分开保存的2、访问速度快,对事务完整性没有要求3、MyISAM 适合查询、插入为主的应用4、MyISAM在磁盘上存储成三个文件,文件名和表名都相 同,但是扩展名分别为:5、表级锁定形式,数据在更新时锁定整个表6、数据库在读写过程中相互阻塞7、数据单独写入或读取,速度过程较快且占用资源相对少8、MyIAM支持的存储格式静态表是

weixin_45305723的博客 1104

数据库原理及应用教程课后习题答案 第4版 微课版 陈志泊主编

数据库原理及应用教程 第4版 微课版 陈志泊主编 习题参考答案

共同学习,心怀感激。 5万+

mysql中常见问题HY000

Expression #1 of ORDER BY clause is not in SELECT list

liangbaiwan的博客 1628

TensorFlow_PyTorch实战:构建AI人工智能回归模型

回归分析是机器学习的核心任务之一,用于预测连续型目标变量(如房价、股票价格、用户留存时间等)。基础线性回归模型的数学原理与代码实现多项式回归模型的过拟合处理与正则化技巧自定义数据集加载与数据预处理流程动态图(PyTorch)与静态图(TensorFlow)的编程范式对比模型评估指标与可视化分析方法核心概念:对比两大框架的架构设计,解析回归模型核心组件数学原理:推导线性回归的假设函数、损失函数及优化算法算法实现:提供TensorFlow和PyTorch的完整代码示例项目实战。

AI天才研究院 1432

linux 内核vxlan收发包流程

1.vxlan口收包处理流程 前面几章详细介绍了vxlan接口的使用,而且已经知道vxlan是 MAC IN UDP中的封装,因此,在解封装之前,一切按照原有流程走,在此复习一下内核收发包流程(驱动层的数据处理这次不再解析,直接从__netif_receive_skb_core开始) #物理网卡处理中断,触发softirq i40e_intr └─napi_schedule_irqoff #i40e softirq把包放到per cpu backlog,触发softirq i40e_napi_p

魏言华的博客 3826

一文带你看懂 MySQL 存储引擎

本文目录:1.MySQL体系结构2.存储引擎介绍3.MySQL 存储引擎特性4.MySQL 有哪些存储引擎5.了解 MySQL 数据存储方式6.存储引擎介绍6.1 CSV存储引擎6.1.1 使用CSV存储引擎建表6.1.2 查看数据所在硬盘位置6.2 Archive存储引擎6.2.1 使用Archive存储引擎建表6.2.2 Archive对比InnoDB,使用函数批量存储1w条数据6.3.3 查看数据所在硬盘位置6.2.4 使用命令对比数据容量占用情况6.3 Memory5.【重点】InnoDB 和 My

扛麻袋的少年的博客 1万+

单电源运放偏置电压设计:如何避免信号失真

本文详细解析了单电源运放偏置电压设计的关键技术,以LM358为例,探讨如何通过1/2 VCC偏置避免信号失真。文章从基本原理出发,揭示了双端偏置的黄金法则,并提供了常见设计陷阱的解决方案和进阶调试技巧,帮助工程师实现高保真信号放大。

weixin_29266647的博客 293

MySQL中的存储引擎详解

为了管理方便,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQL Server的功能,把真实存取数据的功能划分为存储引擎的功能。所以在MySQL Server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。 MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。其实存储引擎以前叫做表处理器,后来改名为存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。 # 【1】 M

小小默:进无止境 6101

Flow Matching03-01:微分方程【微分方程(描述变化规律的方程):包含未知函数和它的导数的方程】【公式解(精确)、数值解(逼近)】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 221

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2836

【数据库】MySQL 的存储引擎

存储引擎(Storage Engine)是 MySQL 的专用称呼,数据库行业老大哥 Oracle,以及 SQL Server,PostgreSQL 等都没有存储引擎的说法。

Data · Model · Agent · Repeat 1491

爬虫面试:关于爬虫破解验证码的13个经典面试题

​解释:验证码是一种用于区分人类用户和自动化程序(如爬虫)的技术,通常通过显示图形、文字或音频等方式,要求用户完成特定任务(如识别扭曲的字母、点击特定区域等)。​作用:防止恶意爬虫滥用网站资源、进行批量注册、登录破解等行为,保护网站的安全性和数据的完整性。

数据知道的博客 1万+

MySQL 存储引擎

MySQL 存储引擎

weixin_68840588的博客 1567

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

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

MySQL存储引擎

1.存储引擎 1.1什么是存储引擎 MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式 MySQL数据库中的组件,负责执行实际的数据I/O操作 MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储 存储引擎是MySQL将数据存储在文件系

kid00013的博客 1372

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【MySQL】存储引擎

MySQL存储引擎学习

gma999的博客 2262

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL的存储引擎

主要介绍MySOL的存储引擎

2301_81453175的博客 925

MySQL:存储引擎

在MySQL数据库中选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。存储引擎是基于表的,而不是基于库的,也就是说,同一个数据库的不同表,可以选择不同的存储引擎,所以存储引擎也可被称为“表类型”Memory引擎的表,表数据存储在内存中,由于受到硬件问题、断电问题的影响,只能将这些表作为临时表、缓存。因此,不同的引擎,有不同的应用场景,而没有好坏之分,我们只需要在合适的场景选择使用合适的引擎就可以了。引擎层:主要关注一点,即索引是在存储引擎层实现的,也就意味着不同的存储引擎,他们的存储结构是不同的。

casually的博客 1318

[存储引擎] MySQL的存储引擎介绍

前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。 存储引擎查看 MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL8.1,可以使用: SHOW ENGINES; 看到MySQL给用户提供了这么多存储引擎,包括处理事务安全表的.

GSON的博客 9811

【MYSQL】存储引擎

存储引擎专题1、InnoDB存储引擎2、MyISAM存储引擎3、MySQL内建其他存储引擎1、Archive引擎。2、CSV引擎3、Blackhole引擎4、Federated引擎5、Memory引擎6、Merge引擎7、NDB集群引擎4、第三方存储引擎 1、InnoDB存储引擎   InnoDB是MySQL的默认事务型引擎,也是最重要最广泛的存储引擎。被设计用来处理大量的短期(short-lived)事务,大部分短期事务正常提交,很少被回滚。InnoDB的性能和自动崩溃恢复特性,在非事务型存储需求中也很流

王富贵的博客 700

mysql外键的存储引擎_10.mysql存储引擎

2.1 存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相...

weixin_32476639的博客 2502
上一篇: 数据库设计以及优化注意的问题
下一篇: MySQL容易混淆的语法
HY_Chan
博客等级 码龄10年 54粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值