![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 79
介绍数据库相关知识。
Ruo_Xiao
己所不欲,勿施于人。
展开
-
MySQL / 可重复读到底是怎么实现的?图解 ReadView 机制
一、回顾一下 undo log 回滚日志在讲可重复读的底层原理之前,我们有必要看一下之前画的图,重新回顾一下 undo log 回滚日志。当 MySQL 执行写操作之前,会把即将被修改的数据记录到 undo log 日志里面。只有这样,事务要回滚的时候,即使 Buffer Pool 中的数据被修改了,依然可以从 undo log 日志中,读取到原插入、修改、删除之前的值,最终把值重新变回去,这就是回滚操作。二、undo log 版本链undo log 版本链是基于 undo log转载 2021-03-25 14:16:11 · 3425 阅读 · 0 评论 -
MySQL / 自带的四个数据库介绍
终端登录 mysql 数据库,显示全部数据库(或者直接用客户端工具展示),如下:四个系统自带库为:information_schema、mysql、performance_schema、sys 。1、information_schemainformation_schema 提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”。)换句换说,information_schema 是一个转载 2021-03-24 15:23:10 · 7951 阅读 · 0 评论 -
MySQL / 索引模型
一、索引的作用提高数据查询效率。二、常见索引模型哈希表、有序数组、搜索树。三、哈希表思路:把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。哈希冲突的处理办法:链表、红黑树。哈希表适用场景:只有等值查询的场景。四、有序数组思路:按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(log(N))。有序数组查询效率高,更新效率低有序数组的适用场景:静态存储引擎。五、二叉搜索树每个节点的左儿子小于父节点原创 2021-03-24 14:39:01 · 164 阅读 · 0 评论 -
MySQL / B + 树算法在 mysql 中能存多少行数据?
在面试的时候,如果问到了 B + 树这个东西,或者问到了 MySQL 索引的底层实现,也希望大家能够进一步的发挥,和面试官探讨一下,为什么 B+ 树一般都是 3 层左右,为什么 3 层的 B + 树可以存放 2 千万的数据,这个到底是怎么计算的,计算的过程大家是要好好消化理解的!面试的时候,你能答到这一点,绝对是一个加分项!一、InnoDB 一棵 B + 树可以存放多少行数据?InnoDB 一棵 B + 树可以存放多少行数据?这个问题的简单回答是:约 2 千万。为什么是这么多呢?因为这是可以算出转载 2021-03-23 21:02:37 · 269 阅读 · 0 评论 -
MySQL / 各种锁
一、相关名词表级锁:锁定整个表。 页级锁:锁定一页。 行级锁:锁定一行。 共享锁:S 锁,MyISAM 叫做读锁。 排他锁:X 锁,MyISAM 叫做写锁。 悲观锁:抽象性,不真实存在这个锁。 乐观锁:抽象性,不真实存在这个锁。二、InnoDB 与 MyISAMMysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB 。查看当前存储引擎:show variables like '%storage_engine%';MyISAM 操作数据都是使用的表锁,转载 2021-03-23 11:26:31 · 97 阅读 · 0 评论 -
数据库 / 事务的 ACID
一、什么是事务?在数据库系统里而言,事务是代表一个或者一系列操作的最小逻辑单元,所有在这个逻辑单元内的操作要么全部成功,要么就全部失败,不存在任何中间状态,一旦事务失败那么所有的更改都会被撤消,一旦事务成功所有的操作结果都会被保存。二、为什么要有事务?如果无法直观的从概念上理解事务的话,那我们可以尝试从它解决问题的出发点来了解它。事务机制存在的目的就是无论我们的操作过程中是成功、失败、异常、或是受到干扰的情况下,事务都能保证我们数据最终的一致性。为了让大家重视和理解事务的作用,所以我们必须看转载 2021-02-18 12:30:45 · 85 阅读 · 0 评论 -
数据库 / 悲观锁和乐观锁
一、什么是悲观锁,什么是乐观锁 锁(Lock) 在介绍悲观锁和乐观锁之前,让我们看一下锁。锁,在我们生活中随处可见,我们的门上有锁,我们存钱的保险柜上有锁,是用来保护我们财产安全的。程序中也有锁,当多个线程修改共享变量时,我们可以给修改操作上锁(syncronized)。当多个用户修改表中同一数据时,我们可以给该行数据上锁(行锁)。因此,锁其实是在并发下控制多个操作的顺序执行,以此来保证数据安全的变动。 并且,锁是一种保证数据安全的机制和手段,而并不是特定于某项技术的。悲观锁和乐观锁亦是如此。本篇转载 2021-02-18 12:13:18 · 780 阅读 · 0 评论 -
MySQL / 基本架构介绍
目录一、基本架构图二、连接器三、查询缓存四、分析器五、优化器六、执行器一、基本架构图二、连接器1、与 Client 进行三次握手建立连接。指令如下:mysql -h (ip) -P (port) -u (username) -p若账号密码错误,则报如下错误:Access denied for user连接若不存在交互,时间超过 wait_...原创 2019-11-19 07:12:39 · 110 阅读 · 0 评论 -
数据结构与算法 / B- Tree 和 B+ Tree
一、M 阶 B - Tree(B Tree)特点根节点的 key 数量,1 <= sum <= m-1 。 非根节点 key 数量,m/2 <= sum <= m-1。 所有节点中的 key 都按照从小到大排列。每个 key 的左子树中所有 key 都小于它,其右子树中所有的 key 都大于它。 所有的叶子节点都位于同一层。 所有节点都存有子节点的指针、索引...原创 2019-11-10 19:50:11 · 210 阅读 · 0 评论 -
MySQL / 为什么需要主键?主键为什么最好是单调递增的?
无特殊需求下Innodb建议使用与业务无关的自增ID作为主键。 InnoDB引擎使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上,这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放。因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开...转载 2019-11-11 06:37:18 · 2782 阅读 · 0 评论