Mysql InnoDB 存储引擎简介
InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的
Mysql 为什么默认使用 InnoDB 存储引擎
InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎
在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版本,都默认使用 InnoDB 存储引擎;
可通过 show engines 命令查看当前服务支持的存储引擎

各个存储引擎支持的特性

由上图可以看出 InnoDB 存储引擎 相比于 MyISAM 存储引擎
支持事务(也是众多存储引擎中唯一支持的),使用行级锁(高并发性),支持崩溃时自动恢复,支持外键约束,支持全文索引,支持自适应哈希索引(针对反复查询的行),使用缓冲池(用于缓存数据页和索引,提高数据的访问速度)
所以基于上述 InnoDB 的优势,可以得出
-
事务支持和数据完整性:InnoDB 支持事务和外键约束,能够保证数据的完整性和一致性,适用于复杂的应用场景。而 MyISAM 不支持事务,存在数据丢失的风险。
-
高并发性能:InnoDB 采用行级锁,相较于 MyISAM 的表级锁,能够在高并发环境下表现更好,提高读写性能,减少锁冲突。
-
崩溃恢复能力:InnoDB 提供了更可靠的崩溃恢复机制,能在系统宕机或故障后自动恢复数据,保证系统的可用性和数据安全性。
因此在 Mysql 5.5 及其以后,使用了 InnoDB 存储引擎;
InnoDB 存储引擎架构
官方给出的架构图

由上图可以看出,InnoDB 主要包括内存结构和磁盘结构
其中内存结构包括:缓冲池(Buffer pool),变更缓冲区(Change Buffer),日志缓冲区(Log Buffer),自适应哈希(Adaptive Hash Index)
磁盘结构包括:系统表空间,独立表空间,通用表空间,临时表空间,撤销表空间,撤销日志,双写缓冲区
相关文章:
Mysql InnoDB 存储引擎简介
InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的 Mysql 为什么默认使用 InnoDB 存储引擎 InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎 在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版…...
驾校预约学习系统的设计与实现
摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…...
Python--读取文件时出现的报错
在使用 Python 读取文件时,尤其是涉及到文件编码的场景,常常会遇到编码解码问题。常见的编码问题主要发生在尝试解码不同编码格式的文件时,比如将使用 GBK 编码的文件按 UTF-8 解码,或者相反。 常见编码错误及其原因:…...
基于http请求的一种安全校验认证方案记录
目录 需求简述 设计方案 参考代码 可优化点 需求简述 日常的开发对接过程中,经常会遇到需要给其他合作伙伴或者其他系统通过接口的方式提供数据,或者有些接口是需要提供通用能力出去的。 从安全的角度考虑,我们往往需要给接口加一些安全校…...
链动321模式开发系统解析源码
链动321模式是一种结合了区块链技术、动态激励机制与“321”运营模式的新型电商架构。该模式通过激励用户分享和推广,实现用户、企业和平台的共赢,具有独特的商业逻辑和高效的运营机制。以下是对链动321模式的详细解析: 系统特点 裂变迅速&am…...
TypeScript 快速上⼿ (3:装饰器)
目录 一、简介 二、类装饰器 基本语法 应用举例 关于返回值 关于构造类型 替换被装饰的类 三、装饰器工厂 四、装饰器组合 五、属性装饰器 基本语法 关于属性遮蔽 应用举例 六、方法装饰器 基本语法 应用举例 七、访问器装饰器 基本语法 应用举例 八、参数装…...
el-input设置后缀显示单位并阻止滚轮微调
项目中收集form表单信息时,有时会需要在el-input后面显示单位,效果如图: 当然,我们可以直接在输入框后面加上单位,但直接给输入框上加单位不管是视图上还是用户体验上看起来都要好一点 element-plus / element-ui给我…...
Redis Key的过期策略
Redis 的过期策略主要是指管理和删除那些设定了过期时间的键,以确保内存的有效使用和数据的及时清理。 具体来说,Redis 有三种主要的过期策略:定期删除(Scheduled Deletion)、惰性删除(Lazy Deletion&#…...
数据结构:时间复杂度与空间复杂度
目录 算法效率时间复杂度大O渐进表示法时间复杂度计算案例 空间复杂度空间复杂度案例 复杂度算法题 算法效率 算法在编写成可执行程序后,运⾏时需要耗费时间资源和空间(内存)资源 。因此衡量⼀个算法的好坏,⼀般是从时间和空间两个维度来衡量的…...
C语言实现贪吃蛇小游戏
✅博客主页:爆打维c-CSDN博客 🐾 🔹分享c语言知识及代码 🐾 目录 游戏展示视频 一、项目准备工作 二、功能实现分析 1.游戏开始 a.设置本地化、创建窗口、标题 b.隐藏光标,封装定位光标的函数 c.打印欢迎界面及提示信息 …...
深入解析包裹信息管理系统:关系型数据库逻辑数据模型设计、超类实体与派生属性探讨
目录 案例 【题目】 【问题 1】(14分) 【问题 2】(6分) 【问题 3】(5分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 案例 阅读下列说明,回答问题 1 至问题 3。 【题目】 某企业委托软件公司开发包裹信息管理系统,以便于对该企业…...
Cyber Weekly #24
赛博新闻 1、OpenAI发布最强模型o1 本周四(9月12日),OpenAI宣布推出OpenAIo1系列模型,标志着AI推理能力的新高度。o1系列包括性能强大的o1以及经济高效的o1-mini,适用于不同复杂度的推理任务。新模型在科学、编码、数…...
Java多线程面试精讲:源于技术书籍的深度解读
写在前面 ⭐️在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视…...
【Elasticsearch系列七】索引 crud
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
快速生成服务器响应json-server的安装和使用
json-server介绍地址:https://www.geeksforgeeks.org/json-server-setup-and-introduction/ 1.json-server是什么? 基于自定义的json文件,快速生成服务端响应,可用于前端调试接口 2.安装和卸载json-server 2.1 安装: 使用npm命令: npm install -g json-server 2.2 卸载 npm …...
增强LinkedList实现瑞士轮赛制编排
前言 LinkedList底层虽然是基于链表实现,但是由于其对底层节点进行了封装,导致无法操作底层Node对象。这也为使用上带来了很多不便,比如我之前遇到的一个需求:将n个队伍按照瑞士轮进行编排,组成n/2个队伍,…...
C++编译环境(IDE)推荐及安装
IDE是什么 嗨嗨嗨,我又来水博文了 今天来给大家推荐几款好用的IDE IDE是集成开发环境(Integrated Development Environment)的缩写,是一种软件应用程序,提供了用于软件开发的各种工具和功能,包括代码编辑…...
Android 12系统源码_窗口管理(八)WindowConfiguration的作用
前言 在Android系统中WindowConfiguration这个类用于管理与窗口相关的设置,该类存储了当前窗口的显示区域、屏幕的旋转方向、窗口模式等参数,应用程序通过该类提供的信息可以更好的适配不同的屏幕布局和窗口环境,以提高用户体验。 一、类定…...
已读论文创新点合集
系列文章目录 文章目录 系列文章目录一、《LAMM: Label Alignment for Multi-Modal Prompt Learning》二、《MaPLe: Multi-modal Prompt Learning》三、《Learning to Prompt for Vision-Language Models》CoOp 一、《LAMM: Label Alignment for Multi-Modal Prompt Learning》…...
12_持久化数据结构
菜鸟:老鸟,我在处理一个项目时遇到了问题。我需要频繁地修改和查询一个数据结构,但每次修改后我都得复制整个结构,性能实在是太低了。有没有什么办法可以高效地处理这种情况? 老鸟:你提到了一个很有意思的…...
震惊!Claude Code 藏着 117 个大招,你竟然只用了 3 个?
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型! 我整个人都傻了! 大家伙平时用 Claude Code,是不是感觉它就一“高级聊天框”? 让他写段代码,它写;让他修个 Bug,它…...
OpenClaw多模型对比:Qwen3-14b_int4_awq与开源小模型任务表现
OpenClaw多模型对比:Qwen3-14b_int4_awq与开源小模型任务表现 1. 测试背景与动机 最近在折腾OpenClaw自动化工作流时,发现一个关键问题:同样的任务脚本,换不同的大模型后端,执行效果差异巨大。为了找到最适合个人办公…...
STM32开发中printf重定向的两种实现方法
1. STM32开发中的printf重定向需求解析在嵌入式开发中,调试信息的输出是开发过程中不可或缺的一环。对于STM32这类ARM Cortex-M系列微控制器而言,标准库中的printf函数默认是无法直接使用的,因为这类设备通常没有像PC那样的标准输出设备。这就…...
嵌入式IMU姿态解算:轻量级卡尔曼滤波器实现Pitch/Roll估计
1. 项目概述Kalman滤波器库是一个面向嵌入式姿态解算的轻量级C语言实现,专为资源受限的MCU(如STM32F0/F1/F4系列、nRF52、ESP32等)设计。其核心工程目标明确:在无磁力计辅助、仅依赖IMU原始数据(加速度计陀螺仪&#x…...
老旧电脑焕新生:OpenClaw+Qwen3-4B低资源占用优化方案
老旧电脑焕新生:OpenClawQwen3-4B低资源占用优化方案 1. 为什么需要低资源优化方案 去年我翻出一台2015款的MacBook Air,4GB内存的配置在当下连开几个Chrome标签页都吃力。但作为技术爱好者,我总想让它发挥余热。当我尝试在这台设备上运行O…...
从 0 到 1 构建你的第一个 AI Agent 项目——完整实战指南
【AI 开发】从 0 到 1 构建你的第一个 AI Agent 项目(2026 最新实战指南) 摘要 想做一个能写进简历的 AI Agent 项目,但不知道从哪开始?本文从项目选择、架构设计、技术选型到落地表达,给你一套完整的方法论。避开&q…...
Android 14 ShellTransitions 实战:手把手教你理解 Transition 如何“抓取”动画参与者(WindowContainer 篇)
Android 14 ShellTransitions 深度解析:WindowContainer 动画参与者捕获机制实战指南 在 Android 14 的动画框架革新中,ShellTransitions 引入了一套精密的"参与者捕获"系统,其运作机制堪比特种部队的精准行动。本文将带您深入这套…...
Python 中的正则表达式:从基础到高级应用
Python 中的正则表达式:从基础到高级应用 1. 背景介绍 正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串中字符组合的模式。在 Python 中,正则表达式是处理文本的强大工具,它可以…...
Linux命令-ncftp(增强的的FTP工具)
ncftp 是 Linux 中一个功能强大的 FTP 客户端,提供了比传统 ftp 命令更丰富的功能和更友好的界面。它支持自动登录、断点续传、递归传输、书签管理等功能,是 FTP 操作的强大工具。 📖 基本语法 ncftp [选项] [主机名] ncftpget [选项] 主机名…...
游戏盾不生效、攻击防不住?策略校验与节点切换教程
做游戏运维和安全的兄弟,基本都碰到过这种糟心事:明明接了游戏盾,服务器还是被打瘫、攻击流量拦不住、正常玩家频繁掉线。很多人第一反应是 “产品垃圾”,但实际 80% 的情况是策略配置错、节点没选对、SDK 接入有问题。这篇就从实…...
