一条SQL更新语句是如何执行的?
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又是怎样的呢? 如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写: upda…
一条SQL查询语句是如何执行的?
MySQL数据库作为优秀的关系型开源数据库,受到所有人的青睐,我们日常工作中,和其打交道的次数十分频繁,那么你知道我们在写sql的时候,MySQL内部是如何执行的吗?接下来我们就一起探讨一下吧。 MySQL 基本架构 以这条sql语句为例: select * from T where ID=10; …
git undo操作
撤销已经推送到远程的变更 场景 你已经执行git push,把你的修改推送到远程的仓库,现在你意识到之前推送的commit中有一个有些错误,想要撤销该commit。 方案 git revert <SHA> 原理 git revert 会创建一个新的commit,它和指定SHA对应的com…
offset的优化探索
前言 首先明确 limit 和 offset 的使用方式: limit y 表示: 读取 y 条记录 limit x, y 表示: 跳过 x 条记录,读取 y 条记录 limit y offset x 表示: 跳过 x 条记录,读取 y 条记录 准备 SELECT COUNT(*) as coun …
Byte和bit的区别
bit:位 (小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中,每个0或1就是一个位(bit) 位是数据存储(计算机中信息)的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据 Byte:字节(大写B) 8bit…
数据结构之堆
定义 堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆就基于完全二叉树的结构(完全二叉树就是除了最底层,其它层都必须填满,最后一层可以从左到右填满);平时生活中,我们有时会说一堆人,一堆某某东西,其实数据结构里的堆也和生活中的类似…
数据结构之链表
定义 链表就是线性表的链式存储方式。链表的内存是不连续的,前一个元素存储地址的下一个地址中存储的不一定是下一个元素。链表通过一个指向下一个元素地址的引用将链表中的元素串起来。 分类 链表分为单向链表(Singly linked lis)、双向链表(Doubly linked list)、循环链。 单…
数据结构之数组
定义 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 优点 随机访问性强,查找速度快,时间复杂度是O(1)。 缺点 从头部删除、从头部插入的效率低,时间复杂度是O(n),因为需要相应的向前搬移和向后搬移 空间利用率不高 内存空间要求高,必须要有足够的连续的内存空间 …
树之红黑树
概括 红黑树也是一种自平衡的二叉查找树,是一种高效的查找树。它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡。 具体性质如下: 每个节点颜色不是黑色,就是红色 根节点是黑色的…
树之B*树
是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针。 B*树 定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2); B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中…