随笔分类 -  数据库

包括redis以及mysql等
摘要:MVCC,即多版本并发控制(Multi-Version Concurrency Control)指的是,通过版本链维护一个数据的多个版本,使得读写操作没有冲突,可保证不同事务读写、写读操作并发执行,提高系统性能。 实际上,innodb中“读已提交”和“可重复读”这两种隔离级别的事务在查询数据时访问版 阅读全文
posted @ 2021-01-15 20:07 数小钱钱的种花兔 阅读(644) 评论(0) 推荐(0)
摘要:我们都知道,innodb中的索引结构使用的是B+树。B+树是一种B树的变形树,而B树又是来源于平衡二叉树。相较于平衡二叉树,B树更适合磁盘场景下文件索引系统。那为什么B树更适合磁盘场景,B+树又在B树基础上做了什么优化?抱着这些问题,本博客将深入分析B树和B+树来龙去脉,其中会涉及到二叉排序树和平衡 阅读全文
posted @ 2021-01-11 19:16 数小钱钱的种花兔 阅读(1394) 评论(0) 推荐(1)
摘要:本博客将顺着自顶向下的思路梳理一下Redis的数据结构体系,从数据库到对象体系,再到底层数据结构。我将基于我的一个项目的代码来进行介绍:daredis。该项目中,使用Java实现了Redis中所有的数据结构,思想与Redis大致类似,各种变量的命名与Redis源码基本一致,只是将结构体换成了类来实现 阅读全文
posted @ 2020-12-31 17:22 数小钱钱的种花兔 阅读(316) 评论(0) 推荐(1)
摘要:Redis的网络模型是基于I/O多路复用程序来实现的。源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析Redis的I/O模块的源码。 epoll系统调用方法 Redis网络事件处理模块的代码 阅读全文
posted @ 2020-07-25 15:51 数小钱钱的种花兔 阅读(907) 评论(0) 推荐(0)
摘要:最近开始看Redis设计原理,碰到一个从未遇见的数据结构:跳跃表(skiplist)。于是花时间学习了跳表的原理,并用java对其实现。 介绍 跳跃表 是一种有序数据结构,它通过每个结点中维持多个指向其它结点的指针,从而达到快速访问结点的目的。 我们平时熟知的链表,查找效率为O(N)。跳表在链表的基 阅读全文
posted @ 2020-05-06 21:10 数小钱钱的种花兔 阅读(3117) 评论(0) 推荐(0)