1.首先从hash表开始 hash表检索速度很快,时间复杂度为O(1),但是不能进行范围查询,而数据库调用往往需要用到范围查询2.为了解决范围查询,用到了二叉排序树 二叉排序树解决了范围查询问题,但是存在极端情况,就是二叉排序树只有左子树,而且左子树呈现链状,这种情况下,查询效率就非常低了,并且数据库中主键例如id等大部分情况下也是呈顺序排列3.为了解决极端情况,提出了红黑树和AVL(自平衡二
转载 2024-02-02 08:04:45
27阅读
这是学习笔记第 1893 篇文章 我们先来看一下InnoDB体系结构图。这个图分为三个部分,上面的是缓存层,中间是线程层,下面是系统文件层。在每个层里面又会不断细分,在MySQL里面存储单位是页,大小是16k。缓存层是大量缓存结构,里面大量数据都是作为缓存,可以提高访问查取效率。系统层是相应数据字典,数据文件和日志文件,其中binlog是MySQL&nbsp
# 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值
Mysql结构示意图如图所示: +++++++++++++++++++++++++++++++++++++++++++、 上面的图就是mysql内部架构,可以清楚看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成。 下面是关于上述部件介绍: 1. connectors 与其他编程语言中sql 语句进行交互,如php、java等。Management Serveic
老生常谈数据库引擎到底是Who?MySQL数据采用各种不同技术存储在文件(或者内存)中。每一种技术都使用不同存储机制、索引技巧、锁定水平并且最终提供广泛不同功能和能力。通过选择不同技术,我们能够获得额外速度或者功能,从而改善喝提高应用整体功能。当我们理解了引擎这个概念,就会知道提供各种不同引擎给你选择,然后用你选出来引擎去处理sql语句MYSQL常用四个数据库引擎:(1)
  让我再深撸一次mysql吧,这次主要以应对面试来说说mysql,大概几个方向,索引结构,查询引擎,索引优化,explain详解和trace工具使用。索引:我们先来看一下mysqlB+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算法来优化嵌套执行。驱动表(主表)和被驱动表(从表)驱动表就是主表,被驱动表就
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[技
原创 7月前
14阅读
[面试] 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,这二种文件都是事务相关问题。 每次开启一个事务,则mysqlinnodb引擎就会生成一张undo log文件,该文件主要记录这个事务ID所产生一些更新、删除、插入操作。当事务1执行upda
 mysql底层是B+树,为什么不用红黑树或者二叉树或者hash?  二叉树:不能作为递增列表索引结构,比如表主键ID,7条递增数据,查找第6条,需要6次I/O  红黑树:底层是二叉树,就是平衡二叉树,会比二叉树查找次数减少一半,7条递增数据,查找第6条,需要三次I/O。但是如果数据太大,树高太深了,树深度和数据量成正比。100万条数据,会有50万层,查询
大体来说,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 底层内部 “解刨”
Duration 持久性:基于Redolog innoDb引擎层特有 记录内容:数据页改变 空间大小:追加写; 作用:灾难恢复; 实现方式:WAL(提交日志时候,先写重做日志,再修改对应页,避免丢失); 原理: 有更新记录,先写到redolog-buffer(内存里面),当一定情况(例如内存不够、其他事务提交、当前事物提交 )落盘到磁盘中(顺序IO),落到redolog 里面,InnoDB
目录一:B + 树二:索引原理:1: 操作系统概念:2:innodb中页概念:3:mysql数据是在页中如何存储呢?4:如果这个页存储数据满了怎么办?5:如果这个页又有很多呢?则页和页之间又是个长链表,此时可能又很慢了。
原创 2022-01-19 14:20:37
160阅读
  • 1
  • 2
  • 3
  • 4
  • 5