数据库
文章平均质量分 70
一个处女座-代码洁癖的程序猿
梦在翱翔 心在路上 不忘初心 砥砺前行
展开
-
Mysql 以字符分割一行变多行(substring_index函数)
上述方式各有千秋,下面总结优缺点。原创 2023-10-19 10:39:27 · 2927 阅读 · 0 评论 -
MAC数据库客户端Dbeaver安装使用介绍
MAC数据库客户端Dbeaver安装使用介绍原创 2022-07-07 16:43:50 · 8845 阅读 · 4 评论 -
一文详述Mysql left join、 right join、 inner join、 join使用及其区别
一文详述Mysql left join、 right join、 inner join、 join使用及其区别原创 2022-04-22 10:23:14 · 1156 阅读 · 0 评论 -
面试之Mysql索引总结
mysql 索引创建(主键索引、普通索引、唯一索引、联合索引)B+树 索引树 最左匹配原则 explain 回表原创 2022-03-18 14:21:14 · 898 阅读 · 0 评论 -
一篇文章搞懂mysql数据库底层数据存储逻及保存数据过程
数据库底层存储结构 完整数据变更处理流程 表空间 .idb .frm原创 2022-03-15 16:20:41 · 1811 阅读 · 0 评论 -
Mybatis批量插入sql语句 + 返回id
我们在保存数据操作时,可能会遇到批量插入的操作,有3中方法来操作该保存:一、Mybatis插入数据,返回id在sql语句上添加下面代码useGeneratedKeys="true" keyProperty="id"例如:<insert id="insert" useGeneratedKeys="true" keyProperty="id"> IN...原创 2019-07-17 16:11:23 · 2182 阅读 · 0 评论 -
Redis-字符串源码原理
1、Redis的字符串结构被设计成一个[SDS]结构,字符串实际内容是被存放在一个数组中,如下表 struct SDS<T> { T capacity; // 数组容量 T len; // 数组实际长度 byte flags; // 特殊标识位,不理睬它 byte[] content; // 数组内容 } 当...原创 2019-01-15 09:19:36 · 519 阅读 · 0 评论 -
Redis-HyperLogLog内部实现原理源码解析
1、HyperLogLog算法时一种非常巧妙的近似统计大量去重元素数量的算法,它内部维护了16384个桶来记录各自桶的元素数量,当一个元素过来,它会散列到其中一个桶。当元素到来时,通过 hash 算法将这个元素分派到其中的一个小集合存储,同样的元素总是会散列到同样的小集合。这样总的计数就是所有小集合大小的总和。使用这种方式精确计数除了可以增加元素外,还可以减少元素。一个HyperLogLo...原创 2019-01-17 10:30:50 · 6619 阅读 · 0 评论 -
Redis-字典遍历内部实现原理源码
1、遍历Redis1)Redis对象树的主干是一个字典,如果对象很多,那么这个树会很大,当我们执行keys命令时,首先它会遍历整棵树,查找出满足条件的key,其次会判断遍历出的key对应的对象是否过期,如果过期则从主干中删除掉 void keysCommand(client *c) { dictIterator *di; // 迭代器 dictEn...原创 2019-01-17 10:23:21 · 463 阅读 · 0 评论 -
Redis-懒惰删除内部实现
异步线程在Redis内部有个特别的名称,叫作BIO(background IO),意思是后台运行的io线程,不过内存回收本身不是io操作,只是cpu计算消耗比较大。1、Redis的内部对象共享机制会阻碍异步线程的改造,原因是懒惰删除是要测底删除某个对象,不能藕断丝连,如果底层数据的共享的,就不能做到彻底删除了效果。所以为了支持懒惰删除,只能将对象共享机制彻底抛弃。2、异步删...原创 2019-01-17 10:15:42 · 1454 阅读 · 0 评论 -
Redis-LFU与LRU内部实现原理源码分析
1、LRU模式有效控制内存的大小,将冷数据从内存中淘汰出去,在Redis里引入一个新的淘汰形式LFU 1)LFU全称是Least Frequently Used 表示按最近的访问频率进行淘汰,更加准确的判断一个key别访问的热度2、Redis对象的热度Redis中所有对象结构头中都有一个24bit字段,这个字段用来记录...原创 2019-01-17 10:11:15 · 1969 阅读 · 1 评论 -
Redis-基树数源码原理分析
1、Rax是Redis内部比较特殊的一种数据结构,它是有序字典树,按照key进行排序,支持快速定位、插入、删除操作。它与zset排序不同,zset是按照score排序,而Rax是按照key进行排序。 集中数据结构的特点如下图所示 咱们可以将英语字典开成一棵radix tree,key是每个单词,value是对应的解释;也可以应用到时间...原创 2019-01-17 10:05:48 · 243 阅读 · 0 评论 -
Redis-紧凑列表源码原理分析
1、Redis 5.0 增加了新的数据结构listpack,它是对ziplist结构的改进,优点是在存储空间上更加节省以及在结构上比ziplist更精简1)结构体 struct listpack<T> { int32 total_bytes; // 占用的总字节数 int16 size; // 元素个数 T[] entrie...原创 2019-01-17 10:03:50 · 439 阅读 · 0 评论 -
Redis-跳跃列表原理源码分析
1、Redis 的 zset 是一个复合结构,结构特点:1)需要通过hash 结构来存储 value 和 score 的对应关系2)要支持按照 score 来排序3)还要按照指定 score 的范围来获取 value 列表的4)要实现上诉的功能的结构,作者想到了跳跃列表5)zset的结构:通过一个hash字典加跳跃列表skiplist 2、跳跃列表结构1)基本结...原创 2019-01-17 10:02:39 · 447 阅读 · 0 评论 -
Redis-快速列表原理源码分析
1、早期版本存储list集合,采用ziplist和linkedlist,但由于链表的附加空间高,prev和next就要占去16个字节,而且每个节点的内存都要单独分配,会加剧内存的碎片化,所以后面的版本对结构进行了改造,使用快速列表(quicklist)1)实例 > rpush codehole go java python (integer) 3 > de...原创 2019-01-17 10:01:18 · 235 阅读 · 2 评论 -
Redis-压缩列表源码原理解析
1、Redis为了节约内存空间,zset和hash在对象比较少的时候,采用压缩列表(ziplist)来存储,可以用过debug object key 来查看结构1)ziplist的结构体 struct ziplist<T> { int32 zlbytes; // 整个压缩列表占用字节数 int32 zltail_offset; // 最后一...原创 2019-01-17 10:00:03 · 371 阅读 · 0 评论