MySQL中的InnoDB存储引擎

server/2024/12/22 19:06:39/

MySQL 中的 InnoDB 存储引擎是一个广泛使用的存储引擎,其支持事务、行级锁、外键约束以及多版本并发控制(MVCC)。下面详细介绍 InnoDB 的各个方面:

1. InnoDB 存储引擎
特点:InnoDB 是 MySQL 的默认存储引擎,支持事务(ACID)。提供行级锁,减少了锁冲突,提高了并发性能。支持外键,数据的完整性得到保障。使用了数据字典以提高查询的性能。
文件结构:
InnoDB 数据存储主要依赖于表空间文件(ibdata 文件)和日志文件(ib_logfile),一个表可以存储在单独的 .ibd 文件中(如果使用了独立表空间)。
2. 事务
定义:事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。
ACID 属性:原子性(Atomicity):一个事务中的所有操作要么全部完成,要么全部不执行。一致性(Consistency):事务执行前后的数据库状态是合法的。隔离性(Isolation):多个事务并发执行时,彼此之间不受干扰。持久性(Durability):一旦事务提交,其结果即使在系统崩溃下也能保持。
实现方式:使用 SQL 语句 BEGIN, COMMIT, ROLLBACK 来控制事务。
3. 索引
类型:主键索引:唯一标识每一行数据,InnoDB 使用聚集索引组织数据。唯一索引:保证索引列的唯一性。普通索引:加快查询速度,但不强制唯一性。全文索引:对文本数据进行全文搜索。
B+ 树结构:InnoDB 索引通常使用 B+ 树结构,叶子节点存储完整数据行的指针,可以有效地支持范围查询与排序。
4. 锁机制
行级锁 vs 表级锁:
行级锁:只锁定正在操作的行,支持高并发。
表级锁:锁定整张表,性能较低。
锁类型:共享锁(S锁):读操作,可以与其他共享锁共存。排他锁(X锁):写操作,不能与其他锁共存。
死锁检测:InnoDB 会自动检测死锁,并通过回滚某个事务来解决。
5. 多版本并发控制(MVCC)
定义:MVCC 允许多个事务并发执行而不会相互阻塞,提高了并发性能和系统响应能力。
实现方式:
在 InnoDB 中,每一行数据有两个额外的列:一个是事务 ID(用于标识行的版本),另一个是回滚指针(用于指向旧版本行)。
快照读与当前读:快照读:获取某一时刻的数据快照,不会阻塞其他事务的写入。当前读:需要加锁,确保读取的是最新数据,可能会阻塞其他事务。

总结
InnoDB 存储引擎提供了一个功能齐全且高效的系统,支持事务、丰富的索引机制、行级锁以及 MVCC,使其成为处理高并发和复杂事务场景的理想选择。这些特性使得 InnoDB 成为 MySQL 中最常用的存储引擎之一。


http://www.ppmy.cn/server/129232.html

相关文章

git pull

# git reset --hard # git clean -f #git pull git pull origin master

ClickHouse之更新表(ReplicatedReplacingMergeTree)

CK没有更新的方法,但是有一种引擎可以支持去重,它就是ReplicatedReplacingMergeTree; 一种是手工执行optimize table; 另一种是table后面加final关键字; 如何设置去重? 需要指定order key;注…

mount 挂载用法

用法&#xff1a; mount [-lhV] mount -a [选项] mount [选项] [--source] <源> | [--target] <目录> mount [选项] <源> <目录> mount <操作> <挂载点> [<目标>] 选项&#xff1a; -a, --all 挂载 fstab 中的…

【C/C++】错题记录(六)

题目一 e前必须有数字&#xff0c;e后必须为整数。 并不完全按照科学计数法的规定来&#xff08;e前的数字可以任意大小&#xff0c;并不是只能是大于等于1小于10&#xff09;。 题目二 C不支持嵌套函数定义。 在 C中&#xff0c;函数的定义必须在全局作用域或者类作用域中进…

ts类型体操-简单篇

介绍下type challenge中几道简单的类型体操。涉及的知识点主要是&#xff1a;映射类型、 条件类型、联合类型的分布式、infer R等。 1、实现pick 不使用 Pick<T, K> &#xff0c;实现 TS 内置的 Pick<T, K> 的功能。 从类型 T 中选出符合 K 的属性&#xff0c;构…

单片机原理与技术

文章目录 一、单片机概述二、单片机的基本原理1. **硬件结构**2. **指令系统** 三、单片机的关键技术1. **编程技术**2. **接口技术**3. **嵌入式系统技术** 四、单片机在现代科技中的应用 一、单片机概述 单片机&#xff0c;全称为单片微型计算机&#xff08;Single-Chip Mic…

【吊打面试官系列-MySQL面试题】说说对 SQL 语句优化有哪些方法?

大家好&#xff0c;我是锋哥。今天分享关于【说说对 SQL 语句优化有哪些方法&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 说说对 SQL 语句优化有哪些方法&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 1、Where 子句中&#xff1a;…

使用 Maven 与 Spring Boot 集成的详细指南

一、Maven 简介 Maven 是一个基于 POM&#xff08;Project Object Model&#xff09;的项目管理工具&#xff0c;它提供了以下功能&#xff1a; 依赖管理&#xff1a;Maven 可以轻松地管理项目所需的第三方库&#xff0c;并能自动解决库之间的依赖关系。构建自动化&#xff1…