MySQL InnoDB 概述

简介: MySQL InnoDB 概述

InnoDB 架构

下图是官方文档给出的InnoDB存储结构

InnoDB的日志先行策略,按照内存到磁盘的顺序对数据进行处理。

其中的优点有以下几点

  • 内存中操作完成就可以返回成功,执行效率高
  • 就算是数据落回磁盘过程中断电也能通过redo日志找回
  • InnoDB的缓存池通过页链表实现,效率高

InnoDB的磁盘中的存储有以下特点,我做了简化直接突出重点,方便大家记忆

  • InnoDB表的限制:一个表的辅助索引最多64个,一行大小最多65535,组合索引最多16个字段
  • 表空间
  • 系统表空间
  • File-Per-Table 表空间
  • Undo表空间
  • 临时表空间

索引

InnoDB中通过索引组织表存放索引。

InnoDB中主键索引使用的是B+索引

B+树的特点

  • 每个非叶子节点只存储键值,不存储数据
  • 一般的高度为2-4层,所以查找速度很快

辅助索引有被称为非聚集索引,辅助索引存储的是主键的值,当拿到主键的值之后再去查找数据的过程被称为回表。

如果人家问你回表,可以按照回表-辅助索引-索引的逻辑解释。

覆盖索引指的是辅助索引能找到要找的列,而不需要回表。

联合索引的顺序很重要,所以我们在创建索引的过程中需要注意列的顺序。

事务

ACID

  • 原子性:Atomicity
  • 一致性:Consistency
  • 隔离性:Isolation
  • 持久性:Durability

事务隔离级别有4种,InnoDB默认支持REPEATABLE READ。

InnoDB通过redo日志实现事务,redo日志是存储在磁盘的物理操作日志。

binlog是维护日志一致性在内存里的逻辑日志。

脏读是指一个事务提交之前,另一个事务来读取数据造成的数据不一致。

幻读问题就是一个事务中同一个SQL多次执行,结果集不同。

Innodb支持行级锁。

行级锁分为共享锁和排他锁。

  • 共享锁(S锁),只可以读,不可以修改
  • 排它锁(X锁),不可读也不可写

意向锁(Intention Locks)

  • 意向共享锁(IS),加行共享锁之前需要得到的锁
  • 意向排他锁(IX),加行排他锁之前需要得到锁

行锁的存储结构

typedef struct lock_rec_struct        lock_rec_t
struct lock_rec_struct{
    ulint space;    /*space id*/
    ulint page_no;  /*page number*/
    unint n_bits;   /*number of bits in the lock bitmap*/
}

加锁逻辑:加锁-唯一索引的冲突检查-判断Gap锁或Next-Key锁-加X锁

面试侧重点

  • 基本的查询语法
  • 索引
  • 存储结构建议在索引的时候自己带出来点,给自己创造一些亮点
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
存储 关系型数据库 MySQL
介绍MySQL的InnoDB引擎特性
总结而言 , Inno DB 引搞 是 MySQL 中 高 性 能 , 高 可靠 的 存 储选项 , 宽泛 应用于要求强 复杂交易处理场景 。
153 15
|
8月前
|
存储 网络协议 关系型数据库
MySQL8.4创建keyring给InnoDB表进行静态数据加密
MySQL8.4创建keyring给InnoDB表进行静态数据加密
278 1
|
4月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
181 11
|
12月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
2004 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
12月前
|
关系型数据库 MySQL 数据库
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
在这一章节,主要介绍两个部分,数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。接着,详细描述了MySQL 8.0的版本选择与下载,推荐使用社区版(免费)。安装过程包括自定义安装路径、配置环境变量、启动和停止服务、以及客户端连接测试。此外,还提供了在同一台电脑上安装多个MySQL版本的方法及卸载步骤。最后,解释了关系型数据库(RDBMS)的特点,即基于二维表存储数据,使用SQL语言进行操作,格式统一且便于维护。通过具体的结构图展示了MySQL的数据模型,说明了数据库服务器、数据库、表和记录之间的层次关系。
2015 56
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
|
8月前
|
SQL 缓存 关系型数据库
使用温InnoDB缓冲池启动MySQL测试
使用温InnoDB缓冲池启动MySQL测试
152 0
|
12月前
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
529 7
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
161 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
788 152

推荐镜像

更多