![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 90
南国_之恋
每一个坚持c++的人都有一个淫荡的梦想,希望自己像硅谷天才工程师一样牛逼
展开
-
InnoDB 一棵 B+ 树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一转载 2021-03-18 10:33:28 · 138 阅读 · 0 评论 -
mysql执行过程以及顺序
前言:mysql在我们的开发中基本每天都要面对的,作为开发中的数据的来源,mysql承担者存储数据和读写数据的职责。因为学习和了解mysql是至关重要的,那么当我们在客户端发起一个sql到出现详细的查询数据,这其中究竟经历了什么样的过程?mysql服务端是如何处理请求的,又是如何执行sql语句的?本篇博客将来探讨这个问题:本篇博客的目录一:mysql执行过程二:mysql执行过程中的状态三:mysql执行的顺序四:总结一:mysql执行过程mysql整体的执行过程如下图所示:.转载 2021-03-12 19:32:26 · 131 阅读 · 0 评论 -
mysql索引之哈希索引
哈希算法哈希算法时间复杂度为O(1),且不只存在于索引中,每个数据库应用中都存在该数据结构。哈希表哈希表也为散列表,又直接寻址改进而来。在哈希的方式下,一个元素k处于h(k)中,即利用哈希函数h,根据关键字k计算出槽的位置。函数h将关键字域映射到哈希表T[0...m-1]的槽位上。上图中哈希函数h有可能将两个不同的关键字映射到相同的位置,这叫做碰撞,在数据库中一般采用链接法来解决。在链接法中,将散列到同一槽位的元素放在一个链表中,如下图所示:Inn...转载 2021-01-29 18:26:54 · 321 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyIS转载 2021-01-28 19:15:06 · 74 阅读 · 0 评论 -
Mysql数据结构
文章目录 数据页 数据库中的存储结构 数据页的结构 从数据页结构的角度看B+树 结构-决定特性 磁盘IO 数据库缓冲池 缓冲池的一些命令查看 数据页加载的三种方式 结构-决定特性 数据页数据库中的存储结构记录是按照行来存储的,但是数据库的读取并不以行为单位,在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数.转载 2021-01-28 18:47:39 · 627 阅读 · 0 评论 -
mysql索引数据结构
什么是索引?索引就是排好序的数据结构,可以帮助我们快速的查找到数据推荐一个网站,可以演示各种数据结构:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html---------------------------------------------------------------图解几种数据结构:二叉树:如果数据是单边增长的情况 那么出现的就是和链表一样的数据结构了,树高度大红黑树:在二叉树的基础上多了树..转载 2021-01-28 18:10:02 · 61 阅读 · 0 评论 -
悲观锁与乐观锁的实现(详情图解)
一、前言在了解悲观锁和乐观锁之前,我们先了解一下什么是锁,为什么要用到锁?技术来源于生活,锁不仅在程序中存在,在现实中我们也随处可见,例如我们上下班打卡的指纹锁,保险柜上的密码锁,以及我们我们登录的用户名和密码也是一种锁,生活中用到锁可以保护我们人身安全(指纹锁)、财产安全(保险柜密码锁)、信息安全(用户名密码锁),让我们更放心的去使用和生活,因为有锁,我们不用去担心个人的财产和信息泄露。而程序中的锁,则是用来保证我们数据安全的机制和手段,例如当我们有多个线程去访问修改共享变量的时候,我们可以给修转载 2020-06-19 11:36:01 · 167 阅读 · 0 评论 -
一文了解InnoDB存储引擎
从Mysql5.5版本开始,InnoDB是默认的表存储引擎。其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读、同时被设计用来最有效的利用以及使用内存和CPU。本文主要内容:InnoDB体系架构 CheckPoint技术 InnoDB关键特性一、InnoDB体系架构下图简单描述了InnoDB存储引擎的体系结构:InnoDB存储引擎有多个内存块,这些内存块组成了一个大的内存池。后台线程主要负责刷新内存池中的数据、将已修改的数据刷新到磁盘等等。接下来我们分别介绍后台线程.转载 2020-05-15 15:38:14 · 144 阅读 · 0 评论 -
Mysql索引原理
参考出处陈Chuan大佬系列,简书过500赞的博客https://www.jianshu.com/p/d7665192aaaf一文看懂 聚簇索引、非聚簇索引 和InnoDB和Myisam的区别https://blog.csdn.net/lisuyibmd/article/details/53004848Mysql B+树的插入删除,看这一篇就够了,有图有真想https://blog.csdn.net/sunshine_lyn/article/details/82747596概论ima转载 2020-05-15 14:48:53 · 114 阅读 · 0 评论 -
MySQL索引凭什么能让查询效率提高这么多?原理是什么?
MySQL的索引本质上是一种数据结构让我们先来了解一下计算机的数据加载。磁盘IO和预读:先说一下磁盘IO,磁盘读取数据靠的是机械运动,每一次读取数据需要寻道、寻点、拷贝到内存三步操作。寻道时间是磁臂移动到指定磁道所需要的时间,一般在5ms以下;寻点是从磁道中找到数据存在的那个点,平均时间是半圈时间,如果是一个7200转/min的磁盘,寻点时间平均是600000/7200/2=4.17ms;拷贝到内存的时间很快,和前面两个时间比起来可以忽略不计,所以一次IO的时间平均是在9ms左右。听起来很快,转载 2020-05-15 11:23:08 · 535 阅读 · 0 评论