1.首先从hash表开始 hash表检索速度很快,时间复杂度为O(1),但是不能进行范围查询,而数据库的调用往往需要用到范围查询2.为了解决范围查询,用到了二叉排序树 二叉排序树解决了范围查询问题,但是存在极端情况,就是二叉排序树只有左子树,而且左子树呈现链状,这种情况下,查询效率就非常低了,并且数据库中的主键例如id等大部分情况下也是呈顺序排列3.为了解决极端情况,提出了红黑树和AVL(自平衡二
转载
2024-02-02 08:04:45
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阅读
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事务的一个总结,在了解这些之前我们先对mysql在执行的过程中 有一个整体的认识,如下图如上图所示,MySQL服务器逻辑架构从上往下可以分为三层:(1)第一层:处理客户端连接、授权认证等。(2)第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。(3)第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储
转载
2024-04-24 22:25:48
46阅读
[面试] MySQL事务ACID的底层实现原理//面试问道ACID 不能只答ACID是什么..要带到底层原理.背后的原理就是MVCC
1.原子性 (Atomicity) :事务是- 一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
//底层的实现原理是UndoLog
InnoDB提供了两种事务的日志:1.redoLog 2.undolog 其中undo log就是实现
转载
2023-08-02 20:15:40
84阅读
概念数据库具有事务特征,事务具有ACID特征,分别是原子性、一致性、隔离性、持久性。 那么ACID的实现原理又是具有什么实现的,就拿mysql来说明。原理mysql具有redo log 和undo log,这二种文件都是事务相关的问题。 每次开启一个事务,则mysql的innodb引擎就会生成一张undo log文件,该文件主要记录这个事务ID所产生的一些更新、删除、插入操作。当事务1执行upda
理解mysql 底层原理mysql 关系数据库的一种,开源免费,支持百万级的存储性能、性能稳定、社区活跃 鉴于 本人半路出家,对于一些原理的东西都不怎么了解,正好 无所事事的情况下,翻博客,吸取知识,然后 再总结出自己的一套理论。mysql 常用存储引擎innodb InnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。 In
转载
2023-08-08 07:03:52
62阅读
存储引擎很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身。那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储我们丢进去的数据的?其实存储引擎也很简单,我认为就是一种存储解决方案,实现了新增数据、更新数据和建立索引等等功能。有哪些已有的存储引擎可以让我们选择呢?InnoDB、MyISAM、Memory、CSV、Archive、Blackhole、Merge、Feder
转载
2023-08-23 19:51:40
58阅读
网络连接层, 对客户端的连接处理、安全认证、授权等,每个客户端连接都会在服务端拥有一个线程,每个连接发起的查询都会在对应的单独线程中执行。服务器上维护一个线程池,避免为每个连接创建和销毁线程。当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过SSL证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。这一层并不是MySQL所特有的技术。
转载
2023-07-13 06:39:34
9阅读
1 简介 MVCC(Multi-Version Concurrency Control)多版本并发控制,是用来在数据库中控制并发的方法,实现对数据库的并发访问用的。在MySQL中,MVCC只在读取已提交(Read Committed)和可重复读(Repeatable Read)两个事务级别下有效。其
转载
2021-02-19 10:54:00
455阅读
2评论
常见的数据库存储引擎有MyISAM和InnoDB(这里指的是数据表级别的存储引擎)。 由于一个库中有不同的表,而不同的表可能对应着不同的存储引擎。这里纠正一个错误的概念:可能有很多人认为,如果一个数据库使用的InnoDB存储引擎,那么这个数据库中所有的表都是InnoDB的 ,其实并不是这样的。我们在设计表的时候有个选项,选项里面是可以选择存储引擎的,里面有很多不同种类的存储引擎,也就是说一个库里面
转载
2024-06-05 20:17:21
207阅读
一、MySQL内部组件结构1、Server层1.1、连接器当有客户端要向mysql发起通信必须先跟Server端建立通信连接,而建立连接的工作由连接器完成的首先连到数据库,这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接mysql -h 127.0.0.1 -u root -p 123456 -P 3306在完成 TCP 握手后,连接器就会开始进行认证用户名和密码,认
转载
2023-08-20 21:20:42
187阅读
# MySQL 删除底层原理
MySQL 是一个流行的关系型数据库管理系统,广泛应用于各种 Web 应用中。其中,数据的删除操作是非常常见的一种操作。在了解 MySQL 的删除底层原理之前,首先要了解 MySQL 使用的存储引擎,特别是 InnoDB 存储引擎,因为它是 MySQL 默认的存储引擎,支持事务处理和行级锁定。
## 1. 删除操作的概述
在 MySQL 中,删除操作主要是通过
delete删除数据原理在InndoDB存储引擎中,delete删除操作是把需要删除的数据或者页标记为已删除,后面如果有需要,直接复用即可。这些被标记为已经删除的数据,看起来就像空洞一样。所以看起来虽然delete了,但是表文件大小并不会改变。如果想删除这些空洞,达到收缩表空间的目的,可以使用alter table t engine=InnoDB来重建表,内部流程如下:新建一个表结构相同的表b把数
转载
2023-09-22 14:44:21
0阅读
Mysql的结构示意图如图所示: +++++++++++++++++++++++++++++++++++++++++++、 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 下面是关于上述部件的介绍: 1. connectors 与其他编程语言中的sql 语句进行交互,如php、java等。Management Serveic
转载
2024-06-24 22:27:29
27阅读
InnoDB一个支持事务安全的存储引擎,同时也是mysql的默认存储引擎。本文主要从数据结构的角度,详细介绍InnoDB行记录格式和数据页的实现原理,从底层看清InnoDB存储引擎。InnoDB简介大家都知道mysql中数据是存储在物理磁盘上的,而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢,如果每次操作都对磁盘进行频繁读写的话,那么性能一定非常差。为了上述问题,InnoDB将数据划
转载
2023-12-15 10:58:43
13阅读
大家好,今天继续我们Inndob文件系统的学习,首先我们要知道Innodb属于整个MYSQL体系中处于最底层的存储层(client->server->storage),然后嘞,要对innodb整体的体系结构有一个全局的概念,如下图: 下面我们对上图的模块简单介绍一波,让大家对innodb有一个更清晰的认识。1、 Handler API:这个模块主要是用来
转载
2023-11-20 22:05:31
80阅读
mysql索引是帮助mysql高效获取的排好序的数据结构 数据结构 二叉树(左小右大) 缺点:如果是递增或者递减的数据,就会成一个链状,失去了索引的功能 红黑树 二叉树的升级版,如果是递增或递减的数据就会做一下优化 缺点:治标不治本,树高还是很高 i/o 还是多 Hash表 在mysql中每一个索引都对应着hash表中的一个hash值
转载
2024-07-21 22:27:02
19阅读