b树/b+树、时间轮、跳表、LSM-Tree

b树、b+树:关系型数据库核心存储结构

1、为什么磁盘数据存储结构用B+树、而不用红黑树

磁盘每次读取不是读一个节点、是返回一页数据。

红黑树每次遍历一个节点排除一半数据。

B树通常映射相邻的磁盘页数据。4K

mysql索引一个节点隐射16k故而映射4倍,故可以存储更多信息。

红黑树相对平衡,平衡黑节点故搜索时间复杂度不稳定。而B+树绝对平衡搜索稳定,数据都在叶子节点方便范围查询,遍历。

B+树高度更低,层次越到磁盘io次数就越多。如何降低:减少次数,化为顺序IO。

时间轮:海量定时任务检测

多线程环境下定时器设计

定时器:

1、以时间序来组织 按照过期时间排序数据结构。

如使用:红黑树 nginx、workfllow

最小堆 libuv、go :当前时间与最小过期节点比较

2、以执行序来组织

两个结构:

a、指针数组

b、时间指针

一个规则:

时间指针按照最小时间精度移动

1s size = 16 一秒移动一次,添加过期时间移动到哪,就把链表数据都取出来执行。

由于时间精度和最大时间范围

多层级时间轮:支持更大时间范围

比如:钟表秒针精确存储,分针时针稀疏存储

每个小时,都会有时针层级的任务映射到分针层级...

多线程 加锁 并发度

红黑树 时间复杂度logN时间越长,等待时间越长。

1、时间轮O(1)时间短

2、加锁粒度

跳表:高并发有序存储 redis

概率型数据结构logN 二分查找 每次比较排除一半节点

多层级有序链表

相关推荐
给大佬递杯卡布奇诺30 分钟前
FFmpeg 基本数据结构 AVPacket分析
数据结构·c++·ffmpeg·音视频
南方的狮子先生36 分钟前
【数据结构】从线性表到排序算法详解
开发语言·数据结构·c++·算法·排序算法·1024程序员节
极客智造1 小时前
编程世界的内在逻辑:深入探索数据结构、算法复杂度与抽象数据类型
数据结构·算法·数学建模
ゞ 正在缓冲99%…2 小时前
leetcode375.猜数字大小II
数据结构·算法·leetcode·动态规划
水蓝烟雨4 小时前
0430. 扁平化多级双向链表
数据结构·链表
阿巴~阿巴~4 小时前
Linux线程与进程的栈管理、页表机制及线程封装
数据结构·线程·进程·线程封装·页表机制·栈管理
立志成为大牛的小牛4 小时前
数据结构——三十一、最小生成树(王道408)
数据结构·学习·程序人生·考研·算法
JMzz5 小时前
Rust 中的数据结构选择与性能影响:从算法复杂度到硬件特性 [特殊字符]
开发语言·数据结构·后端·算法·性能优化·rust
星空露珠7 小时前
数独生成题目lua脚本
数据结构·数据库·算法·游戏·lua
给大佬递杯卡布奇诺7 小时前
FFmpeg 基本数据结构 URLContext分析
数据结构·c++·ffmpeg·音视频