1.首先从hash表开始 hash表检索速度很快,时间复杂度为O(1),但是不能进行范围查询,而数据库的调用往往需要用到范围查询2.为了解决范围查询,用到了二叉排序树 二叉排序树解决了范围查询问题,但是存在极端情况,就是二叉排序树只有左子树,而且左子树呈现链状,这种情况下,查询效率就非常低了,并且数据库中的主键例如id等大部分情况下也是呈顺序排列3.为了解决极端情况,提出了红黑树和AVL(自平衡二
转载
2024-02-02 08:04:45
27阅读
这是学习笔记的第 1893 篇文章 我们先来看一下InnoDB的体系结构图。这个图分为三个部分,上面的是缓存层,中间是线程层,下面是系统文件层。在每个层里面又会不断的细分,在MySQL里面存储的单位是页,大小是16k。缓存层是大量的缓存结构,里面大量的数据都是作为缓存,可以提高访问的查取效率。系统层是相应的数据字典,数据文件和日志文件,其中binlog是MySQL 
# MySQL中IN语句的底层原理
MySQL数据库是当今最流行的关系型数据库管理系统之一。在构建SQL查询时,`IN`语句是一种常用的条件表达方式。它允许我们方便地检查某个值是否在一个列表中,例如:
```sql
SELECT * FROM users WHERE id IN (1, 2, 3);
```
## IN语句的工作原理
`IN`语句的底层实现其实是通过将列表中的值转换为一个内
原创
2024-08-27 06:24:43
228阅读
mysql索引是帮助mysql高效获取的排好序的数据结构 数据结构 二叉树(左小右大) 缺点:如果是递增或者递减的数据,就会成一个链状,失去了索引的功能 红黑树 二叉树的升级版,如果是递增或递减的数据就会做一下优化 缺点:治标不治本,树高还是很高 i/o 还是多 Hash表 在mysql中每一个索引都对应着hash表中的一个hash值
转载
2024-07-21 22:27:02
19阅读
Mysql的结构示意图如图所示: +++++++++++++++++++++++++++++++++++++++++++、 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 下面是关于上述部件的介绍: 1. connectors 与其他编程语言中的sql 语句进行交互,如php、java等。Management Serveic
转载
2024-06-24 22:27:29
27阅读
老生常谈的数据库引擎到底是Who?MySQL中的数据采用各种不同的技术存储在文件(或者内存)中。每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,我们能够获得额外的速度或者功能,从而改善喝提高应用的整体功能。当我们理解了引擎这个概念,就会知道提供各种不同引擎给你选择,然后用你选出来的引擎去处理sql语句MYSQL常用的四个数据库引擎:(1)
转载
2023-09-30 09:23:03
65阅读
让我再深撸一次mysql吧,这次主要以应对面试来说说mysql,大概几个方向,索引结构,查询引擎,索引优化,explain的详解和trace工具的使用。索引:我们先来看一下mysql的B+tree,本文几乎都在围绕这个图来说的。mysql的底层是使用B+tree来存储数据的,和B+tree有一点点不同的是叶子节点是双向链表的结构,并不是图内的单向指针的。且null值放置在叶子节点的最前面。这个
转载
2024-02-03 00:10:22
98阅读
JOIN 语句原理join方式连接多个表,本质就是各个表之间数据的循环匹配。MySQL5.5版本之前,MySQL只支持一种表间关联方式,就是嵌套循环(Nested Loop Join)。如果关联表的数据量很大,则 join 关联的执行时间会非常长。在 MySQL5.5以后的版本中,MySQL 通过引入BNLJ算法来优化嵌套执行。驱动表(主表)和被驱动表(从表)驱动表就是主表,被驱动表就
转载
2023-07-15 21:57:11
135阅读
1、概念1.1 数据库事务:简单的说事务就是一组原子性的SQL语句。可以将这组语句理解成一个工作单元,要么全部执行要么都不执行。默认MySQL中自动提交时开启的(start transaction)事务的ACID特性如下:原子性:事务中的所有操作要么全部提交成功,要么全部失败回滚。场景:UPDATE cs_user SET age = 18 , gender = '女' WHERE id = 4。
转载
2023-09-13 16:52:49
122阅读
在深入了解 MySQL 的底层原理之前,我们首先要明确它在数据库管理系统中的重要性。MySQL 是一种流行的关系数据库管理系统,广泛应用于各种场景,特别是网站和企业管理软件。为了更好地理解 MySQL 的运作机制,我们需要从多个方面进行剖析,包括技术原理、架构解析、源码分析、性能优化,以及应用场景。
```mermaid
flowchart TD
A[MySQL底层原理] --> B[技
[面试] MySQL事务ACID的底层实现原理//面试问道ACID 不能只答ACID是什么..要带到底层原理.背后的原理就是MVCC
1.原子性 (Atomicity) :事务是- 一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
//底层的实现原理是UndoLog
InnoDB提供了两种事务的日志:1.redoLog 2.undolog 其中undo log就是实现
转载
2023-08-02 20:15:40
84阅读
此篇文章算是对mysql事务的一个总结,在了解这些之前我们先对mysql在执行的过程中 有一个整体的认识,如下图如上图所示,MySQL服务器逻辑架构从上往下可以分为三层:(1)第一层:处理客户端连接、授权认证等。(2)第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。(3)第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储
转载
2024-04-24 22:25:48
46阅读
概念数据库具有事务特征,事务具有ACID特征,分别是原子性、一致性、隔离性、持久性。 那么ACID的实现原理又是具有什么实现的,就拿mysql来说明。原理mysql具有redo log 和undo log,这二种文件都是事务相关的问题。 每次开启一个事务,则mysql的innodb引擎就会生成一张undo log文件,该文件主要记录这个事务ID所产生的一些更新、删除、插入操作。当事务1执行upda
mysql底层用的是B+树,为什么不用红黑树或者二叉树或者hash? 二叉树:不能作为递增列表的索引结构,比如表的主键ID,7条递增数据,查找第6条,需要6次I/O 红黑树:底层是二叉树,就是平衡二叉树,会比二叉树查找次数减少一半,7条递增数据,查找第6条,需要三次I/O。但是如果数据太大,树的高太深了,树的深度和数据量成正比。100万条数据,会有50万层,查询
转载
2023-08-04 19:02:00
57阅读
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层:是一个可插拔的设计,也就是我们可以随意选择具体的存储引擎。server端通过API与存储引擎进行通信
转载
2023-07-31 20:38:09
141阅读
目录一:B + 树二:索引的原理:1: 操作系统的页的概念:2:innodb中页的概念:3:mysql数据是在页中如何存储的呢?4:如果这个页存储的数据满了怎么办?5:如果这个页又有很多呢?则页和页之间又是个长链表,此时可能又很慢了。6: 为什么指针是双向的?二:InnoDB中联合索引生成的过程1:建立联合索引的一种思路:2:真正的联合索引的建立规则:3:最左前缀原则:一:B + 树1: 叶子结点是有指针的。2:叶子结点是有所有元素的,非叶子结点和叶子结点元素有冗余。3:叶子结点可以存储多个元素
原创
2021-07-30 14:17:24
661阅读
可重复读MVCC实现机制
原创
2022-08-26 14:01:44
103阅读
1.ACID在MySQL里的底层怎么实现?“ ACID 事务底层内部实现原理”,还是那句俗语 “一日之计在于晨” ,因此分享给大家的是 「mysql 模块」- ACID 内部实现原理。想必在 mysql 中,事务大家一定不陌生,但是我估计了解最多的是它 ACID 的表名特性含义吧。事务,我们想要达到什么结果呢?无非不就是 可靠性 与 并发 处理。今天就让我来为大家进行 ACID 底层内部 “解刨”
转载
2024-09-28 20:48:02
25阅读
Duration 持久性:基于Redolog innoDb引擎层特有 记录内容:数据页的改变 空间大小:追加写; 作用:灾难恢复; 实现方式:WAL(提交日志的时候,先写重做日志,再修改对应的页,避免丢失); 原理: 有更新的记录,先写到redolog-buffer(内存里面),当一定情况(例如内存不够、其他事务提交、当前事物提交 )落盘到磁盘中(顺序IO),落到redolog 里面,InnoDB
转载
2024-02-03 23:34:13
36阅读
目录一:B + 树二:索引的原理:1: 操作系统的页的概念:2:innodb中页的概念:3:mysql数据是在页中如何存储的呢?4:如果这个页存储的数据满了怎么办?5:如果这个页又有很多呢?则页和页之间又是个长链表,此时可能又很慢了。
原创
2022-01-19 14:20:37
160阅读