
MySQL技术内幕InnoDB存储引擎
文章平均质量分 86
吃着火锅x唱着歌
这个作者很懒,什么都没留下…
展开
-
MySQL技术neimu InnoDB存储引擎 学习笔记 第十章 InnoDB存储引擎源代码的编译和调试
可在MySQL官网下载源代码,下载的文件解压后结构如下:所有存储引擎的源码放在storage的文件夹下:InnoDB引擎的源代码文件夹的结构:其中一些源代码的作用:1.btr:B+树的实现。2.buf:缓冲池的实现,包括LRU算法、Flush刷新算法等。3.dict:InnoDB引擎内存数据字典的实现。4.dyn:InnoDB引擎动态数组的实现。5.fil:InnoDB引擎中文件数据结构以及对于文件的一些操作。6.fsp:可理解为file space,即对InnoDB引擎物理文件的管原创 2021-03-05 17:48:34 · 271 阅读 · 0 评论 -
MySQL技术neimu InnoDB存储引擎 学习笔记 第九章 性能调优
数据库的应用分两类,OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理)。OLAP一般用在数据仓库(一种关系数据库模式,其中保存了来自一个或者多个源数据库的历史数据和元数据)或数据集市(是数据仓库的一个访问层,用于从数据仓库抽取相关的数据给用户)中,一般需要复杂的SQL语句来进行查询;OLTP多用在日常事务处理应用中,数据库容量相对于OLAP较小。InnoDB引擎一般用于OLTP的数据库应用原创 2021-03-05 17:05:58 · 245 阅读 · 2 评论 -
MySQL技术内幕 InnoDB存储引擎 学习笔记 第八章 备份与恢复
备份方法:1.热备:在数据库运行中直接备份,对正在运行的数据库没有任何影响,这种方式在MySQL官方手册中称为Online Backup。2.冷备:在数据库停止的情况下备份,这种备份最简单,一般只需拷贝相关的数据库物理文件即可,这种方式在MySQL官方手册中称为Offline Backup。3.温备:在数据库运行时进行备份,但对当前数据库操作有影响,如加一个全局读锁保证备份数据的一致性。按备份后的文件内容,可将备份分为:1.逻辑备份:指备份后的文件内容可读,通常是文本文件,内容一般是SQL语句,或原创 2021-02-27 15:53:58 · 398 阅读 · 1 评论 -
MySQL技术neimu InnoDB存储引擎 学习笔记 第七章 事务
事务可确保把数据库从一种一致状态转换为另一种一致状态,在数据库提交时,可确保要么所有修改都被保存了,要么所有修改都不被保存。InnoDB引擎事务完全符合ACID特性:1.原子性(atomicity),指整个事务是不可分割的工作单位。2.一致性(consistency),指事务前后数据库的完整性约束没有被破坏。3.隔离性(isolation),指一个事务的影响在该事务提交前对其他事务都不可见,通过锁来实现。4.持久性(durability),事务提交后,结果是永久性的,即使发生了宕机,数据库数据也能原创 2021-02-17 16:14:22 · 228 阅读 · 0 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第六章 锁
锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。InnoDB引擎会对表数据上锁以提供数据的完整性和一致性,除此之外,还会对数据库内部其他多个地方使用锁,从而保证对多种不同资源提供并发访问,如增删改LRU列表中的元素。不同数据库和引擎使用的锁机制的实现可能完全不同。对MyISAM来说,其锁是表锁,并发读没有问题,但并发插入性能较差,如果插入是在底部的情况,MyISAM还是可以有一定并发操作。对于SQL server,在2005版之前都是页锁,相对于MyISAM的表锁性能有所原创 2021-02-12 15:54:21 · 421 阅读 · 2 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第五章 索引与算法
如果索引太多,应用的性能会受到影响(每次插入都要更新索引并保存在磁盘上,增加了磁盘IO),如果索引太少,对查询性能又会产生影响,要找到一个平衡点。InnoDB支持B+树索引和哈希索引。InnoDB的哈希索引是自适应的,InnoDB会根据表的使用情况为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引。B+树构造类似二叉树,根据键值对快速找到数据,是目前关系型数据库系统中最常用、最有效的索引,B+树中的B不代表二叉,而是代表平衡,因为B+树是从最早的平衡二叉树演化而来,但B+树不是二叉树。B+树索引并原创 2021-02-06 16:39:45 · 213 阅读 · 1 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第四章 表
InnoDB引擎表中,每张表都有一个主键,如果创建时没有显式定义主键,则:1.首先看表中是否有非空的唯一索引,如果有,则该列为主键。2.否则自动创建一个6字节大小的指针作为主键。InnoDB所有数据都逻辑地放在一个表空间中,表空间又由段、区、页(块)组成。...原创 2021-01-31 23:12:38 · 306 阅读 · 0 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第三章 文件
构成MySQL数据库和InnoDB引擎表的文件:1.参数文件:告诉MySQL实例启动时在哪找到数据库文件,且指定某些初始化参数(定义了某种内存结构的大小等设置)。原创 2021-01-14 12:01:20 · 196 阅读 · 0 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第二章 InnoDB存储引擎
InnoDB由Innobase Oy公司开发,是第一个支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现已停止开发),具有行锁设计,支持MVCC,提供Oracle风格的一致性非锁定读,支持外键,被设计用来最有效地利用内存和CPU。Oracle是多进程架构(Windows下除外),核心后台进程有多个,分别负责数据库写、日志写、检查点进程等,InnoDB是多线程架构,它的master thread几乎实现了所有Oracle核心进程的功能。InnoDB默认有七个线程,四个IO原创 2021-01-08 18:05:12 · 265 阅读 · 1 评论 -
MySQL技术内幕InnoDB存储引擎 学习笔记 第一章 MySQL体系结构和存储引擎
MySQL几乎能在所有操作系统上运行,尽管各种系统在底层(如线程)实现方面各有不同,但MySQL几乎能保证在各平台上物理体系结构的一致性。术语:1.数据库:物理操作系统文件或其他形式文件类型的集合。MySQL数据库文件可以是以frm、myd、myi、ibd结尾的文件。使用NDB时,数据库的文件可能不是操作系统上的文件,而是存放于内存中的文件。2.数据库实例:由数据库后台进程/线程以及共享内存区组成,共享内存区可被运行的后台进程/线程共享。数据库实力是真正用来操作数据库文件的。MySQL中实例和数据库原创 2021-01-02 13:36:45 · 203 阅读 · 0 评论