MySQl技术内幕:InnoDB引擎学习纲要

Mysql技术内幕InnoDB存储引擎——InnoDB存储引擎 特此申明: 前段时间找工作所以看了《Mysql技术内幕InnoDB存储引擎》,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处。不过无所谓啦,写出来自己看看,需要的朋友参考下,仅此而已。 一.mysql体系结构和存储引擎 1.1、数据库和实例的区别          数据库:物理操作系统或其他形式文件类型的集合。在mysql下数据库文件可以是frm, 阅读详情

1.MySQL的逻辑架构
(1)服务层
(2)解析优化,内置函数
(3)存储引擎

2.连接管理与安全性
线程池:新建一个连接不会重启一个线程

3.优化与执行
解析查询的内部数据结构:解析树
查询之前的优化:查询缓存

4.并发控制
锁的分类:
(1)读锁,共享锁(S锁)
(2)写锁,排他锁(X锁)
意向锁:不会阻塞全表扫描外的任何请求
(1)IS锁
(2)IX锁(IX锁之间是互相兼容的)
锁的粒度:
(1)表级锁
(2)行级锁

5.事务处理
事务的ACID特性:
(1)原子性(redo log,记录页的更改)
(2)一致性(undo log,记录每行的操作)
(3)隔离性(lock)
(4)持久性(redo log)
事务的隔离级别:
(1)read committed
(2)read uncommitted
(3)repeatable read
(4)serializable
set session transaction isolation level repeatable read;

6.死锁
解决死锁问题:
(1)死锁检测:等待图   {锁的信息链表,事务等待链表}
(2)死锁超时机制
InnoDB处理死锁的方法:回滚

7.事务日志
预写式
修改数据需要修改2次磁盘
undo log -> update -> redo log -> write to 磁盘
undo log存放在undo段,undo段位于共享表空间。
当InnoDB引擎进行回滚时,实际上是做与之前相反的操作。
undo log会产生redo log。

8.MYSQL的事务:自动提交
隐式锁定:
显式锁定:
select * lock in shape mode;(S锁)
select * for update; (X锁)
lock tables;

9.多版本并发控制(MVCC)
实现了可重复读,读取快照数据
InnoDB的MVCC实现:undo log(每行数据有两个隐藏列:创建版本号,删除版本号)
间隙锁策略(next-key locking)防止幻读

10.后台进程
Master Thread
IO Thread (Read, Write, Insert Buffer, Log IO Thread)
Purge Thread
(删除无用的undo页)
Page Cleaner Thread(刷新脏页)

11.缓冲池技术
平衡CPU和磁盘的速度差异
redo日志:持久化(redo日志缓冲)
缓冲池对象:数据页,索引页,insert buffer,lock info,自适应hash索引,数据字典
缓冲池页的管理:LRU算法(优化版),midpoint位置;page made young,page not made young
页的列表:free列表和LRU列表,维护页的更新。

12.压缩页
16kB -> 8/4/2kB
压缩页的管理:unzip_LRU列表

13.checkpoint机制
只对checkpoint之后的redo log进行恢复,脏页刷新
缩短数据库的恢复时间

14.insert buffer
对于不是unique的非聚集索引,
插入或更新时,判断辅助索引页是否在缓冲池,若不在则放到一个insert buffer对象中
merge insert buffer:(1)辅助索引页读到缓冲区
(2)insert buffer bitmap查到该辅助索引页无可用空间
(3)master thread
insert buffer -> change buffer
实现:B+树(共享表空间),叶子结点,非叶子节点
非叶子节点的键值---[space(表空间id),marker,offset(页偏移)]
叶子结点的键值---[space,marker,offset,metadata(进入顺序),辅助索引记录]
若辅助索引不在缓冲区,构造一个键值插入到叶子结点
insert buffer bitmap:标记每个辅助索引页的可用空间

15.double write
解决了部分写失效的问题,提高了可靠性。
在宕机恢复数据库的时候,应用redo日志前,需要建立一个页的副本。

16.自适应hash索引
InnoDB引擎为热点页,自动建立hash索引。

17.异步IO(AIO)
AIO的优势:IO merge操作;
需要native AIO,操作系统的支持。

18.刷新邻接页
刷新脏页时,连同该页所在区的所有页一起刷新。
固态硬盘不需要。

19.数据库的日志文件(不是InnoDB引擎)
(1)错误日志(error log):数据库优化信息
(2)二进制日志(binlog):记录数据库的更改操作(格式:STATEMENT,ROW,MIXED)
(3)慢查询日志(slow query log):定位有问题的SQL语句
(4)查询日志(log):记录对数据库的请求信息

20.重做日志与binlog的区别
(1)记录的内容不同,redo log记录对页的更新情况;
(2)写入的时间不同,binlog提交前记录一次,redo log在事务过程中记录;
(3)记录的范围不同,redo log只是记录innodb引擎,binlog记录所有存储引擎;
重做日志还有一个重做日志缓冲,按扇区写的,一定成功,不需要double write。

21.表的逻辑存储结构
表空间(共享,独立),段(数据段,索引段,回滚/undo段)
区(1MB连续空间),页(磁盘管理最小单位)
行:行格式
Antelope(Compact[NULL值不占用空间],Redundant)
Barracuda(Compressed[zlib压缩,有效存储blob/text数据],Dynamic)

22.InnoDB数据页结构
[文件头,页头,Infinum和Suprenum记录,user record,空闲空间,页目录,文件尾]
B+树索引只能找到记录所在页,数据库载入内存,通过二叉查找。

23.分区表
InnoDB引擎支持分区,水平分区
range分区,list分区,hash分区,key分区

24.聚集索引和辅助索引
聚集索引:叶子结点存放行记录数据(数据页);
数据页存放完整行记录,非数据页的索引页存放键值和数据页偏移量。
辅助索引:叶子结点存放键值和书签,书签告诉如何查找对应行数据,对应数据的聚集索引键。
通过辅助索引页找到主键,再通过聚集索引页找到数据页。

25.覆盖索引
从辅助索引就可以查到的,不需要查询聚集索引。
explain select语句:显示Extra:Using Index表示使用了覆盖索引。

26.优化器不使用索引的情况
(1)全表扫描(范围查找,join操作)
(2)数据量比较大(辅助索引带来离散读,性能低下)
(3)固态硬盘(离散读性能较高)  
force index 强制索引
use insex 索引提示
>select * from table_name force/use index() where ...

27.MRR优化(Multi_Range Read)
减少磁盘的随机访问,将离散读转化为较为顺序的数据访问。
MRR工作方式:将查询到的辅助索引键值放在缓存,将键值按照rowid排序
MRR还可以将范围查询拆分为键值,批量数据查询

28.ICP优化(Index Condition Pushdown)
在取出索引的同时,利用where条件过滤。

29.全文索引(Full-Text Search)
实现:倒排索引,在辅助表中存储了单词与单词所在文档位置之间的映射
inverted file index [单词,所在文档id]
full inverted index [单词,所在文档id,具体位置]
FTS Index Cache(全文检索索引缓存):红黑树结构,根据(word,ilist)进行排序
将(文档id,具体位置)视为一个ilist
InnoDB引擎对辅助表进行批量更新,批量更新前是对FTS Index Cache进行更新
语法:match (col1, col2) against (expr[])
>select * from table_name where match (body) against ('+please+hot' in boolean mode)
>select * from table_name where match (body) against ('prorridge' in natural language mode)

 

安装和使用pandoc 支持 Markdown、DOCX、LaTeX、HTML、PDF、EPUB 等 60+ 种格式 的互相转换 阅读详情

相关推荐

别再被手机厂商忽悠了!一文看懂光学变焦、数字变焦和混合变焦到底有啥区别

本文深入解析手机摄影中的光学变焦、数字变焦和混合变焦技术,揭示它们的工作原理和实际效果差异。光学变焦保持无损画质,数字变焦依赖算法放大,而混合变焦结合两者优势。帮助消费者识破厂商宣传,根据实际需求选择最适合的变焦方式,提升拍摄质量。

weixin_28717969的博客 411

MySQL技术内幕-InnoDB存储引擎

MySQL技术内幕-InnoDB存储引擎

young_man2的博客 2224

从零开始!Jupyter Notebook的安装教程(附带pip和Python的安装教程)

本篇文章创造性的以“授人以渔”的方式教大家如何安装Jupyter Notebook、pip和Python,以及对于Jupyter Notebook代码路径的基本设置。

保证安全,保证寿终正寝的博客 13万+

《MySQL技术内幕》之InnoDB存储引擎

目录InnoDB引擎概述InnoDB的体系架构后台线程内存Checkpoint技术Master Thread工作方式1.0.x版本之前1.2.x版本之前1.2.x版本InnoDB的关键特性插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive HashIndex)异步IO(Async IO)刷新邻接页(Flush Neighbor Page) InnoDB引擎概述 InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracle数据库的架构。通常

weixin_40460171的博客 609

temu登录接口逆向分析(含Py纯算)

【代码】temu登录接口逆向分析(含Py纯算)

数据精灵喵 1944

Python中优化模块scipy.optimize的优化算法介绍

如果你有一个特殊的优化问题,你可以使用对象来自定义问题的求解。# 自定义目标函数# 自定义优化问题custom_problem.fun = custom_objective_function # 目标函数custom_problem.x = [1, 1] # 初始猜测# 执行优化# 打印结果在上述例子中,我们自定义了一个对象,并指定了目标函数和初始猜测,然后使用minimize函数进行求解。Scipy的优化模块提供了丰富的功能,适用于各种优化问题。

Pandas120的博客 3047

Mysql技术内幕InnoDB存储引擎读书笔记

1、Mysql体系结构 1.1库和实例的定义 数据库是文件的集合 数据库实例是应用程序,用户操作(增删改查数据)数据库要通过数据库实例。 1.2mysql整体架构 1.连接池组件 2.管理服务和工具组件 3.Sql接口组件 4.查询分析器 5.优化器 6.缓存(cache)组件 7.插件式存储引擎 8.物理文件 通过上图可以看出mysql分为四层,分别为连接层、服务层、存储引擎层、存储层。 连接层:连接池组件 服务层:从左向右分别为:管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件

weixin_39650169的博客 468

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

Mysql技术内幕(一)--Mysql体系和InnoDB存储引擎(超详细)

Mysql技术内幕(一)--Mysql体系和存储引擎前言一.Mysql体系结构和存储引擎1.1 数据库和实例1.2 Mysql体系结构1.3 Mysql存储引擎1.3.1 InnoDB引擎存储策略和存储大小事务的ACIDMVCC和隔离级别Next-Key LocksInnoDB的4大特性1.3.2 MyISAM引擎(了解)MyISAM和InnoDB的区别二.InnoDB存储引擎 前言 其实我想写一篇跟Mysql有关的博客很久了,一方面是想自己做一个较为全面的知识总结,一方面,现在再看《Mysql技术内幕-I

Zong_0915的博客 4328

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

(SEED-Lab)Buffer Overflow Vulnerability Lab缓冲区溢出实验

(SEED-Lab)Buffer Overflow Vulnerability Lab 欢迎大家访问我的GitHub博客 https://lunan0320.cn 文章目录一、实验目的二、实验步骤与结果2.1 环境初始化2.2 Task1 运行shellcode2.3漏洞程序2.4 Task 22.5 Task 3: ASLR2.6 Task 4: Stack Guard2.7 Task 5:不可执行栈三、参考文献 一、实验目的 理解缓冲区溢出攻击的原理以及如何实施攻击 理解针对缓冲区溢出的防御措施

lunan的博客 8981

MySQL技术内幕 InnoDB存储引擎——第2章 InnoDB存储引擎(未完待续)

第2章 InnoDB存储引擎 2.1 InnoDB存储引擎概述 InnoDB存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发)。 特点: 行锁设计 支持MVCC 支持外键 提供一致性非锁定读 被设计用来最有效地利用以及使用内存和CPU 2.2 InnoDB存储引擎的版本 MySQL 5.1版本中支持两个版本的InnoDB,一个是静态编译的InnoDB版本(老版本的InnoDB);另一个是动态加载的InnoDB版本(InnoDB Plu

页页的博客 4983

AgentScope 2.0 扩展开发完全指南:从中间件到模型适配器的深度实践

本文系统讲解 AgentScope 2.0 框架的五大扩展机制,涵盖中间件系统的洋葱模型与钩子设计、ChatModelBase 基类与多供应商适配器开发、工作空间(本地/Docker/E2B)的抽象接口与生命周期管理、凭据工厂与 MCP 协议集成、以及工具协议与存储后端扩展。文中提供完整的架构图、代码示例与故障排查指南,帮助开发者快速掌握 AgentScope 的插件化扩展体系。

program哲学 295

MySQL技术内幕 InnoDB存储引擎 第2版 下载

MySQL技术内幕 InnoDB存储引擎 第2版 下载地址 https://pan.baidu.com/s/1EVpjr69hh0tDAD22eHx_1g 提取码:nf6l

u012480148的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MySQL技术内幕 InnoDB存储引擎(学习笔记总结)

InnoDB是事务安全的存储引擎。是OLTP应用中核心表首选存储引擎。特点:**行锁设计、MVCC、外键、一致性非锁定读。**被设计用来最有效使用内存和CPU。事实证明InnoDB是一个高性能、高可用、高可扩展性的存储引擎。MySQL数据的存储是根据表进行的,每个表都有与之对应的文件。无论采用何种存储引擎,MySQL都有一个以.frm为后缀名的文件,该文件记录了该表的表结构定义。

yxtudou的博客 1638

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MySQL技术内幕InnoDB存储引擎资源下载介绍

MySQL技术内幕InnoDB存储引擎资源下载介绍 去发现同类优质开源项目:https://gitcode.com/ 深入了解MySQL数据库系统的核心,掌握InnoDB存储引擎的奥秘,尽在《MySQL技术内幕InnoDB存储引擎》资源下载。 项目介绍 《MySQL技术内幕InnoDB存储引擎》是一本深入探讨MySQL数据库系统中至关重要的InnoDB存储引擎的宝贵资料。通过此资源下载,用户可以获...

gitblog_06752的博客 859

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【亲测免费】 MySQL技术内幕 InnoDB存储引擎 第2版 资源分享

MySQL技术内幕 InnoDB存储引擎 第2版 资源分享 【下载地址】MySQL技术内幕InnoDB存储引擎第2版资源分享指南 MySQL技术内幕 InnoDB存储引擎 第2版 资源分享本仓库提供了一份名为《MySQL技术内幕 InnoDB存储引擎》的PDF资源文件 ...

gitblog_06576的博客 665

MySQL技术内幕_innodb存储引擎

MySQL技术内幕_innodb存储引擎 -- 笔记

samveltor的博客 1433

深入探索MySQL:《MySQL技术内幕 InnoDB存储引擎 第2版》资源推荐

深入探索MySQL:《MySQL技术内幕 InnoDB存储引擎 第2版》资源推荐 【下载地址】MySQL技术内幕InnoDB存储引擎第2版下载分享 MySQL技术内幕 InnoDB存储引擎 第2版 下载本仓库提供《MySQL技术内幕 InnoDB存储引擎 第2版》的资源文件下载 ...

gitblog_06516的博客 538

MySQL技术内幕:InnoDB存储引擎

过去这些年,我一直在和各种不同的数据库打交道,见证了MySQL从一个小型的关系型数据库发展成为各大企业的核心数据库系统的过程,并且参与了一些大大 小小的项目的开发工作,成功地帮助开发人员构建了一些可靠、健壮的应用程序。在这个过程中积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了《MySQL技术内幕:InnoDB存储引擎》。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能都会遇到的一些问题,并给出了解决方案。

华章IT官方博客 1419

MySQL 技术内幕:InnoDB存储引擎

MySQL 技术内幕:InnoDB存储引擎 【下载地址】MySQL技术内幕InnoDB存储引擎 探索MySQL核心引擎InnoDB的奥秘,本书《MySQL 技术内幕:InnoDB存储引擎》为你揭开数据库内部机制的神秘面纱。从存储结构到事务锁,从缓存管理到性能调优,本书深入浅出地解析了InnoDB的每一个关键环节。无论你是...

gitblog_06785的博客 368

《MySQL技术内幕:InnoDB存储引擎》第2版笔记

第1章 MySQL体系结构和存储引擎1.1 定义数据库和实例 在MySQL数据库中,数据库文件可以是fm、MYD、MYI、ibd结尾的文件。 MySQL数据库由后台线程以及一个共享内存区组成。 MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程架构的)。 在上述例子中使用了mysq

陀思妥耶夫斯基和海德格尔伴我勇敢存在 5266

《MySQL技术内幕——InnoDB存储引擎》

MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:MYSQL数据库由一个后台线程以及一个共享内存区构成。 1.2 MySQL体系架构 连接者:不同语言的代码程序和mysql的交互(SQL交互) 1、连接池 管理、缓冲用户的连接,线程处理等需要缓存的需求 2、管理服务和工具组件 系统管理和控制工具,例如备份恢复、Mysql复制、集群等...

ByteX的博客 903

【免费下载】 MySQL技术内幕 InnoDB存储引擎 第2版 下载

MySQL技术内幕 InnoDB存储引擎 第2版 下载 【下载地址】MySQL技术内幕InnoDB存储引擎第2版下载分享 MySQL技术内幕 InnoDB存储引擎 第2版 下载本仓库提供《MySQL技术内幕 InnoDB存储引擎 第2版》的资源文件下载 ...

gitblog_06531的博客 578

MySQL技术内幕 - 第二章 InnoDB存储引擎

一、InnoDB 存储引擎概述 InnoDB 存储引擎最早由 Innobase Oy 公司旰发,被包括在 MySQL 数据库所有的二进制发行版本中,从 MySQL 5.5 版本开始是默认的表存储引擎(之前的版本 InnoDB 存储引擎仅在 Windows 下为默认的存储引擎)。该存储引擎是第一个完整支持 ACID 事务的 MySQL 存储引擎(BDB 是第一个支持事务的 MySQL 存储引擎,现在已经停止开发),其特点是行锁设计、支持 MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地利用以及使

SongYu的博客 1万+

MySQL技术内幕InnoDB存储引擎 (高清PDF下载)

MySQL技术内幕InnoDB存储引擎 (高清PDF下载) 转载于:https://www.cnblogs.com/gavinhughhu/archive/2011/03/29/1998356.html

weixin_30919429的博客 1万+
上一篇: C++虚继承
下一篇: 数据结构-跳表
classify233
博客等级 码龄10年 3粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值