![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql技术内幕
主要介绍mysql的底层实现原理
我是方小磊
这个作者很懒,什么都没留下…
展开
-
MySql技术内幕:MySql的四种隔离级别——详解
MySql的四种隔离级别1.事务的ACID特征原子性:原子性指整个数据库事务是不可分割的工作单位。只有事务中的所有数据库操作都执行成功,才算整个事务成功。事务中任何一个SQL语句执行失败,已经执行成功的SQL语句也要撤销,事务进行回滚。如果是读操作的话一旦发生错误要不然就进行重试,要不然就返回错误代码如果是插入或更新操作,一旦发生错误就要进行事务回滚,回到事务开始的状态一致性:一致性指事务将数据库从一种状态转变为下一种一致状态。在事务开始之前和开始之后,数据库的完整性约束没有被坏。原创 2020-06-06 11:34:22 · 146 阅读 · 0 评论 -
MySql技术内幕:MySql的三种行锁算法(解决幻读)——详解
文章目录一. MySql的三种行锁算法1. 概述2. Record Lock3.Next-Key Lock4. Next-Key Lock降级Record Lock5.Next-Key Lock实例说明6.总结一. MySql的三种行锁算法1. 概述mysql中InnoDB存储引擎支持三种行锁的算法:Record Lock:单个记录上的锁Gap Lock: 间隙锁,锁定一个范围,但不包含记录本身Next-Key Lock:Record Lock + Gap Lock,锁定一个范围,并且锁定原创 2020-06-05 11:27:04 · 731 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎之锁机制——详解
文章目录MySQL中InnoDB存储引擎之锁机制一.InnoDB存储引擎中的锁1.1 两种标准的行级锁1.2 意向锁MySQL中InnoDB存储引擎之锁机制由于InnoDB存储引擎是MySQL的默认存储引擎,所以这里仅仅讲述的是InnoDB存储引擎的锁机制一.InnoDB存储引擎中的锁innodb存储引擎中实现了两种标准的行级锁(共享锁和排它锁),另外还支持一种名为意向锁的锁1.1 两种标准的行级锁共享锁(S Lock):允许事务读取一行数据排它锁(X Lock):允许事务删除或更新原创 2020-05-22 10:45:24 · 230 阅读 · 0 评论 -
MySQL技术内幕:MySQL全文检索底层原理——详解
全文检索一.概述1.1 全文检索的概念全文检索就是将存储于数据库中的整本书或整篇文章中的任意内容信息查找出来的技术。它可以根据需要获得全文中有关文章,节,段,句,词等信息,也可以进行统计和分析。、MySQL中InnoDB存储引擎之前是不支持全文检索的,要使用全文检索的话只能使用MySIAM存储引擎,但是在1.2.x版本开始就支持全文检索了1.2 问题的引入MySql中的InnoDB存储引擎中对于表索引的管理是采用B+树结构的,所以我们可以通过索引字段的前缀进行查找。例如:select原创 2020-05-18 11:11:51 · 2937 阅读 · 2 评论 -
MySQL技术内幕:InnoDB存储引擎之Checkpoint机制——详解
Checkpoint机制最近在学习MySQL的底层,内容来自于Mysql技术内幕书籍和自己的理解,所以写了一个关于MySQL技术内幕专栏,有兴趣可以看看1.CheckPoint出现的原因之前的博客有讲到当执行DML操作时,如UPDATE,Delete改变了页中的记录,此时的页还没有刷新回磁盘,只是在缓冲池中被修改了。这样的页称为脏页。CheckPoint所做的事情无非就是将缓冲池的脏页刷新回磁盘,但是他的触发机制和脏页的选择以及版本的记录都是很复杂的,这也是为了解决以下的问题。1.1.1 原因原创 2020-05-16 15:33:20 · 447 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎之Master Thread底层实现——详解
InnoDB存储引擎之Master Thread工作方式内容来自于MySQL技术内幕书籍对InnoDB存储引擎不清楚的朋友可以看看我的:MySQL技术内幕专栏在之前的博客中有说到InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中实现的,现在我们来讲解一下Master Thread的工作方式1. 1.0.x版本之前的Master Thread1.1 Master Thread概述Master Thread拥有最高的线程级别。其内部由多个循环(loop)组成:原创 2020-05-14 11:28:05 · 296 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎之缓冲池技术(内存管理)——详解
InnoDB存储引擎之缓冲池原理对于InnoDB存储引擎体系架构不清楚的朋友可以看看这篇博客:MySQL—InnoDB存储引擎体系架构——详解1.缓冲池概述InnoDB存储引擎是基于磁盘存储的,将其中的记录按照页的方式进行管理,因此可以将其看做基于磁盘的数据库系统。但是在数据库系统中,由于CPU速度与磁盘速度之间的鸿沟,基于磁盘的数据库系统通常使用缓冲池技术来提高整体性能(因为与CPU IO和与磁盘 IO的速度差距非常大)缓冲池简单来说就是一块内存,通过访问缓冲池来进一步访问磁盘,弥补磁盘速度较原创 2020-05-13 10:45:58 · 548 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎关键特性之自适应哈希索引——详解
InnoDB存储引擎特性之自适应哈希索引1.为什么要出现自适应哈希索引?哈希是一种非常快的查找方法,一般情况下查找的时间复杂度是O(1)而MySql数据库中的索引B+树的一般高度为3~4层,所以如果用索引B+树查找的话一般要进行3-4次的查找由于某些应用中可能会频繁的进行某一类的SQL操作,这些SQL操作甚至会访问相同的索引页,所以为了更快的对这些热点页进行查询,InnoDB存储引擎会为这些热点页建立哈希索引2.哈希查找为什么是O(1)?哈希表是一种线性表,也就是我们常说的数组,也就是说存原创 2020-05-12 11:06:58 · 549 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎关键特性之两次写——详解
InnoDB存储引擎特性之两次写InnoDB存储引擎第一大特性是插入缓冲,有兴趣的可以看看我的这篇博客:InnoDB存储引擎特性之插入缓冲——详解对于InnoDB存储引擎体系架构不太清楚的朋友可以看看这篇博客:MySQL—InnoDB存储引擎体系架构——详解1.为什么要有两次写如果说插入缓冲(Insert Buffer)给InnoDB带来的是性能上的提升,那么两次写(doublewrite)带给InnoDB的就是数据页的可靠性当发生数据库宕机时,可能InnoDB存储引擎正在写入到原创 2020-05-11 10:55:21 · 339 阅读 · 0 评论 -
MySQL技术内幕:InnoDB存储引擎关键特性之插入缓冲——详解
InnoDB存储引擎特性——插入缓冲一.Insert Buffer在探讨插入缓冲特性之前,我们必须先弄懂InnoDB聚集索引和非聚集索引的插入过程,因为插入缓冲就是针对于非聚集索引的插入效率而诞生的如果对于 聚集索引和非聚集索引的概念还不是很清楚的朋友可以看看我的这篇博客:Mysql技术内幕:聚集索引,非聚集索引的底层实现1.1 聚集索引和非聚集索引的插入1.1.1聚集索引的插入在InnoDB存储引擎中,主键是行的唯一标识符,通常应用程序中行记录插入的顺序就是按照主键递增的顺序进行插入的原创 2020-05-10 14:09:35 · 391 阅读 · 1 评论 -
MySQL技术内幕:MySQL—InnoDB存储引擎体系架构——详解
InnoDB存储引擎体系架构1.存储引擎1.1概念首先明确一个概念,存储引擎是基于表的,不是基于数据库的其次存储引擎指的是表的底层物理结构的实现,也就是表在底层是如何存储的,不同的存储引擎存储表的物理结构不同MySQL数据库最大的特点就是插件式的表存储引擎,即支持多种存储引擎,目前默认的存储引擎是InnoDB,但是其还支持:MyISAM,NDB,Memory,Archive,Federated,Maria等存储引擎,不同的存储引擎有着自己管理表和存储表的方式下图为Mysql数据库的体系结构图,原创 2020-05-08 21:08:02 · 785 阅读 · 0 评论 -
数据库面试题:聚集索引,非聚集索引的底层实现
一.B(B-)树与B+树的简介在了解Mysql数据库索引的实现之前,就必须知道B树与B+树的相关知识,否则根本无法进行学习1.1 B(B-)树首先明确一个概念:B树就是B-树如果想要详细学习B树或者B-树,那么就看这篇博客:B树详解这里仅仅对B树做一个简单的介绍1)B树是平衡树,类似于二叉排序树,所以左子节点的数据一定小于父节点,右子节点的数据一定大于父节点2)但是B树每一个节...原创 2020-05-08 14:51:10 · 1311 阅读 · 1 评论