珠海单位网站建设,云南省住房城乡建设厅网站,游戏开发定制,研发管理系统软件mysql 三、 Mysql3.1 基础3.1.1 mysql执行流程-组成架构3.2 索引3.2.1 索引底层的数据结构与算法分类在创建表时,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引B+树结构3.2.2 为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构3.2.2.1. 从磁盘角度出发3.2.2.2. 数据… mysql 三、 Mysql3.1 基础3.1.1 mysql执行流程-组成架构 3.2 索引3.2.1 索引底层的数据结构与算法分类在创建表时,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引B+树结构 3.2.2 为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构3.2.2.1. 从磁盘角度出发3.2.2.2. 数据结构`数组和二分查找``二分查找树``自平衡二叉树(AVL )``b树``B+树` 3.2.2.3 Innodb 里的 B+ 树结构 3.2.3 什么时候适用索引索引缺点什么时候适用索引 3.2.4 什么时候不需要创建索引3.2.5 优化索引方法3.2.6 索引失效的场景 3.3 事务3.4锁篇3.4.1 有哪些锁全局锁表级锁 3.5 日志概念undo logBuffer Poolredo logbinlog为什么需要两阶段提交 3.6 内存 三、 Mysql
3.1 基础
3.1.1 mysql执行流程-组成架构 Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、预处理器、优化器、执行器等存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM、Memory 等多个存储引擎,不同的存储引擎共用一个 Server 层。现在最常用的存储引擎是 InnoDB执行一条 SQL 查询语句,期间发生了什么?
连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;执行 SQL:执行 SQL 共有三个阶段:预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;3.2 索引
3.2.1 索引底层的数据结构与算法
分类
按「数据结构」分类:B+tree索引、Hash索引、Full-text索引。按「物理存储」分类:聚簇索引(主键索引)、二级索引(辅助索引)。按「字段特性」分类:主键索引、唯一索引、普通索引、前缀索引。按「字段个数」分类:单列索引、联合索引。在创建表时,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引
如果有主键,默认会使用主键作为聚簇索引的索引键(key);如果没有主键,就选择第一个不包含 NULL 值的唯一列作为聚簇索引的索引键(key);在上面两个都没有的情况下,InnoDB 将自动生成一个隐式自增 id 列作为聚簇索引的索引键(key); 创建的主键索引和二级索引默认使用的是 B+Tree 索引B+树结构 如下面表格 那么B+树是如何存储的? B+树结构:B+Tree 是一种多叉树,叶子节点才存放数据,非叶子节点只存放索引,而且每个节点里的数据是按主键顺序存放的。每一层父节点的索引值都会出现在下层子节点的索引值中,因此在叶子节点中,包括了所有的索引值信息,并且每一个叶子节点都有两个指针,分别指向下一个叶子节点和上一个叶子节点,形成一个双向链表 通过主键查询的过程 select * from product where id= 5; 这条语句使用了主键索引查询 id 号为 5 的商品。查询过程是这样的,B+Tree 会自顶向下逐层进行查找: 将 5 与根节点的索引数据 (1,10,20) 比较,5 在 1 和 10 之间,所以根据 B+Tree的搜索逻辑,找到第二层的索引数据 (1,4,7)在第二层的索引数据 (1,4,7)中进行查找,因为 5 在 4 和 7 之间,所以找到第三层的索引数据(4,5,6);在叶子节点的索引数据(4,5,6)中进行查找,然后我们找到了索引值为 5 的行数据。 数据库的索引和数据都是存储在硬盘的,我们可以把读取一个节点当作一次磁盘