第6章:锁

本章是mysql技术内幕这本书的读书笔记。可以点击超链接查看所有的读书笔记。

1. Innodb存储引擎中的锁

1.1 数据库锁分类(latch和lock)

latch:轻量级锁,要求锁定时间非常短。如果持续时间长,则应用的性能会非常差。在InnoDB存储引擎中,latch可以分为mutex(互斥量)和rwlock(读写锁)

lock: 锁的对象是事务。用来锁定的是数据库中的表、页、行对象。

关于两者的比较可以参考下图:

第5章:索引和算法

本章是mysql技术内幕这本书的读书笔记。可以点击超链接查看所有的读书笔记。

1. B+树与索引

B+树就是指一个多路平衡树,只不过记录都存放在叶子节点,其他节点都是索引节点。

1.1 B+树插入

扇出的值是固定的。在数据库里面B+树索引的层数一般都比较低,位2-4层,这样经过2-4次IO就可以取到数据。

推荐看下书上p188-p199的例子,演示了B+树上插入操作的进行过程。B+树插入操作分情况主要依据叶子节点和索引节点是否插满了数据。

对于插入操作注意以下知识点:

优先进行树的旋转避免插入时的页拆分。在某个叶子节点满,但是其兄弟节点没有满的情况下......

第4章:表

本章是mysql技术内幕这本书的读书笔记。可以点击超链接查看所有读书笔记。

1. 章节介绍

本章主要讨论InnoDB存储引擎表的逻辑存储以及实现。重点分析表的物理存储特征,即数据在表中是如何组织和存放的。表示关于特定实体的数据集合,也是关系型数据模型的核心。

2. 索引组织表

在InnoDB存储引擎中,表都是根据主键顺序组织存放的。没显示定义主键,InnoDB存储引擎也会按照如下方式选择或者创建主键:

用非空唯一索引的列作为主键

自动创建一个6字节大小的指针

查看表的单列主键值可以使用以下语句(关键是使用_rowid)

select _rowid fr......

第3章:文件

本章是mysql技术内幕这本书的读书笔记。可以点击超链接查看所有读书笔记。

1. 文件概览

MySQL数据库和InnoDB存储引擎表的各种类型文件如下:

文件名称

说明

参数文件

告诉MySQL:哪里找数据库文件、指定初始化参数

日志文件

记录日志,包括错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件

socket文件

当用UNIX域套接字方式进行连接时需要的文件

pid文件

MySQL实例的进程ID文件

mysql表结构文件

存放mysql表结构定义文件

存储引擎文件

各个存储引擎都有自己的存储引擎文件。存储引擎文件真正存储了记录......

第2章:InnoDB存储引擎

本章是mysql技术内幕这本书的读书笔记。可以点击超链接查看所有读书笔记。

1. InnoDB体系结构

1. 基本介绍

基本结构如下图:

书上的图实在太简单了,因此我找了一副网上的图。其实绝大部分系统的体系结构归根结底都是对内存、线程的设计。

2. 后台线程

2.1 master thread(核心线程)

核心后台线程,负责将缓冲池中的数据异步刷新到......