MySQL 存储引擎之InnoDB

devtools/2024/9/24 23:08:51/

InnoDB 存储引擎是一个非常重要的组件,它提供了许多高级特性,如事务支持、行级锁定、多版本并发控制 (MVCC) 和外键约束等。InnoDB 是 MySQL 5.5 及更高版本中的默认存储引擎,并且被广泛应用于需要高可靠性和并发性的应用程序中。

InnoDB 的主要特点包括:

  • 事务支持:InnoDB 支持 SQL 标准的四种隔离级别(READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE),并确保事务的原子性、一致性、隔离性和持久性(ACID)。
  • 行级锁定:InnoDB 使用行级锁定机制来提高并发性能。这允许不同的事务同时更新不同的行,减少了锁竞争。
  • 多版本并发控制 (MVCC):InnoDB 使用 MVCC 来支持读取已提交和可重复读隔离级别下的非阻塞读取操作。
  • 外键支持:InnoDB 支持外键约束,可以用来维护数据库中不同表之间的关系完整性。
  • 自动恢复:InnoDB 在系统崩溃后能够自动恢复未完成的事务。
  • 在线备份:支持在线热备份。
  • 空间管理:InnoDB 使用自适应哈希索引、B+树索引等数据结构来优化查询性能。
  • 压缩:InnoDB 支持行压缩,减少存储空间需求。
  • 缓冲池:InnoDB 使用缓冲池来缓存数据和索引,减少磁盘 I/O 操作。

InnoDB 的数据存储结构:
InnoDB 将数据存储在一个或多个 .ibd 文件中(每个表一个文件),或者在一个共享的表空间文件(通常是 ibdata1)中。数据是以页为单位组织的,默认页大小为 16KB。每一页可以包含数据行、索引或其他元数据。
InnoDB 的锁机制:
InnoDB 支持多种类型的锁,包括:

  • 共享锁 (S Lock):允许多个事务读取一行数据,但阻止其他事务获取排他锁。

  • 排他锁 (X Lock):允许一个事务更新一行数据,并阻止其他事务读取或更新同一行数据。

  • 意向锁 (IS, IX):用于锁定表或索引的一部分,表明事务可能需要获取更深层次的锁。

示例:创建使用 InnoDB 存储引擎的表

CREATE TABLE employees (
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(45) DEFAULT NULL,
last_name VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;


http://www.ppmy.cn/devtools/94211.html

相关文章

汽车补光照明实验太阳光模拟器光源

汽车补光照明实验概览 汽车补光照明实验是汽车照明领域的一个重要环节,它涉及到汽车照明系统的性能测试和优化。实验的目的在于确保汽车在各种光照条件下都能提供良好的照明效果,以提高行车安全。实验内容通常包括但不限于灯光的亮度、色温、均匀性、响应…

uniapp3.0实现图片上传公用组件上传uni-file-picker,uni.uploadFile

用uniapp3.0的写法组合式api,setup形式封装一个图片上传公用组件,要求 1、使用uni-file-picker选择文件 2、uni.uploadFile上传图片 3、要能支持上传接口动态化 4、支持删除如片列表中已上传项 5、可以预览已上传列表图片 6、支持动态化限制图片格…

【c++】通过Privilege类来保护数据

简介: 我设计了一个类Privilege类来保护数据,它有效地通过控制访问性和可修改性来保护数据。不过,有几个小地方可以改进或注意,以确保代码的健壮性和易用性。 源码展示: #include <iostream> #include <stdexcept> // 包含 std::runtime_errorclass Privil…

优化之光:用Xdebug照亮PHP性能的阴影

标题&#xff1a;优化之光&#xff1a;用Xdebug照亮PHP性能的阴影 在PHP开发的世界中&#xff0c;性能优化是一个永恒的话题。Xdebug作为PHP开发者的得力助手&#xff0c;不仅提供了强大的调试功能&#xff0c;其性能分析工具也能帮助开发者深入理解代码的执行效率。本文将详细…

24/8/13算法笔记 复习_梯度下降

import matplotlib.pyplot as plt import numpy as np#构建方程 f lambda x:(x-3.5)**2-4.5*x10 #构建导数 g lambda x:2*(x-3.5)-4.5x np.linspace(0,11.5,100)#这段代码使用了NumPy库来生成一个线性空间的数组 x 和根据给定的函数 f 计算对应的 y 值。 y f(x)#可视化 plt…

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好&#xff0c;我是联通数字科技有限公司数据智能事业部的王兴杰。 更好的阅读体验可前往原文阅读:巨人肩膀 | 联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台 今天&#xff0c;我将和大家聊一聊联通数字科技有限公司是如何基于Apache Dol…

【单片机原理与技术】第 2 章 MCS-51 单片机的结构与原理,程序存储器,数据存储器,专用寄存器(北京交通大学)

目录 提要 2.1 MCS-51 单片机的硬件功能 2.2 MCS-51 硬件系统结构 2.2.1 运算部件 2.2.2 控制部件 2.3 存储器结构 2.3.1 程序存储器 2.3.2 数据存储器 1&#xff0e;数据存储器 2&#xff0e;专用寄存器 3.外部数据存储器 提要 本章介绍 MCS-51 单片机的硬件结构与工…

JVM运行时数据区之虚拟机栈

【1】概述 Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;&#xff0c;早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈&#xff0c;其内部保存一个个的栈帧&#xff08;Stack Frame&#xff09;&#xff0c;对应着一次次的Java方法调用。 栈是运行…