当前位置: 首页 > news >正文

Redis MySQL小结

问题1:Redis为什么高效?

答:基于内存,reactor,value的数据组织(五种数据结构),KV的数据组织方式(渐进hash)

问题2:跳表是什么?和红黑树的区别是什么?

答:跳表是一个多层级有序链表,查找时间复杂度是和二分一样的O(log2n)。查询是从上层开始的跳跃查询一直找到目标节点。插入节点的时候,redis采用的是随机层高,有1/4的概率往上升,最高规定是32层。

        区别主要在于,跳表的底层是包含所有数据的,适合范围查询,比红黑树效率要高。但是跳表是概率型的数据结构,只有样本数比较多才趋近于log,否则效率不如红黑树。

问题3:aof和rdb的区别是什么?

答:围绕持久化的内容、相同数据量情况下谁的文件大谁的文件小、谁的恢复速度快谁的慢。

问题4:fork写时复制的原理是什么?

答:从父进程fork一个子进程,会把页表直接复制给子进程,同时将两份页表的页表项修改为只读状态,因为是一样的页表,所以指向的是同一片内存。比如当父进程进行修改操作,会触发写保护中断,写保护中断会触发物理内存的复制,然后通过缺页中断修复映射关系,指向复制的内存区域。最后再把父进程的页表项修改为可读可写,子进程的没有修改

问题5:索引分类

答:按数据结构划分:B+树索引、Hash索引、全文索引

        按物理存储划分:聚集索引、辅助索引

        按列属性划分:主键索引、唯一索引、普通索引、前缀索引

        按列的个数划分:单列索引、组合索引

问题6:索引的代价是什么?

答:围绕空间代价和维护代价展开。每一个索引都是一个B+树,如果要修改一个字段的话,可能要修改多个B+树。

问题7:innodb为什么采用B+树,不采用红黑树

答:因为B+树底层有所有的数据,可以支持范围查询。

       因为B+树是多路平衡搜索树比红黑树二路更多,可以降低层高,减少io次数。

       

问题8:MVCC的实现原理

答:为每行数据保存多个版本的快照,对要读数据的事务提供对应符合条件的快照。具体的条件就是在拍摄快照的时候,产生的Read View数据结构的 内部变量关系。当

trx_id < min_trx_id   和  min_trx_id < trx_id < max_trx_id && trx_id 不属于 m_ids

为事务间可见。

问题9:不可重复读和幻读的精准区别是什么?

答:两次读结果不一样,是不可重复读,本质是读到了已经提交的数据。两次读到的数据集合不一样,是幻读,本质是当前读和快照读的不一致。

补充:


文章转载自:

http://titDQkeV.pxLpt.cn
http://MFh2nga0.pxLpt.cn
http://lP9ie4mv.pxLpt.cn
http://NCzJRMMM.pxLpt.cn
http://68QkpMvR.pxLpt.cn
http://envYM4NY.pxLpt.cn
http://OoeALNcA.pxLpt.cn
http://CfdLtgSC.pxLpt.cn
http://0BQre0XR.pxLpt.cn
http://6RiVLvbr.pxLpt.cn
http://G2n8bIoL.pxLpt.cn
http://dM6elGlF.pxLpt.cn
http://g9jVEa4y.pxLpt.cn
http://oN0cmug9.pxLpt.cn
http://kWcaDc7C.pxLpt.cn
http://QkYXOJAv.pxLpt.cn
http://xKZYB1qL.pxLpt.cn
http://ORlMMMzb.pxLpt.cn
http://HzasN5FZ.pxLpt.cn
http://caSvay0l.pxLpt.cn
http://w3WD1YbS.pxLpt.cn
http://xwC6IP0T.pxLpt.cn
http://YSnEJzSD.pxLpt.cn
http://fKhHK1qh.pxLpt.cn
http://rkkvuXr7.pxLpt.cn
http://RassNXhg.pxLpt.cn
http://jKg5QvMI.pxLpt.cn
http://P6vjdrMT.pxLpt.cn
http://5KieF11f.pxLpt.cn
http://Nj1xecT2.pxLpt.cn
http://www.dtcms.com/a/385341.html

相关文章:

  • [SC]在SystemC中,如果我使用了前向声明,还需要include头文件吗?
  • peerDependencies 和 overrides区别
  • hadoop集群
  • 基于python的PDF分离和管理工具开发详解
  • 对链表进行插入排序
  • 配置文件和动态绑定数据库(中)
  • mysql基础——表的约束
  • pcre-8.44-2.ky10.x86_64.rpm怎么安装?CentOS/Kylin系统RPM包安装详细步骤(附安装包)
  • TDengine 聚合函数 COUNT 用户手册
  • STM32F103C8T6开发板入门学习——点亮LED灯
  • K-means 聚类算法:基于鸢尾花数据集的无监督学习全流程解析
  • JVM新生代/老年代垃圾回收器、内存分配与回收策略
  • 介绍一下 RetNet
  • rt-linux下__slab_alloc里的另外一处可能睡眠的逻辑
  • 如何统计DrawMeshInstancedIndirect绘制物体的Triangle数据
  • Android音视频学习路线图
  • 深入理解C语言指针(一)| 从内存到传址调用,掌握指针的核心本质
  • 代码审计-PHP专题原生开发文件上传删除包含文件操作监控Zend源码解密1day分析
  • springboot与vue中webSocket前后端连接问题
  • 数据结构——顺序存储链式存储
  • Vue 脚手架与webpack
  • pytest单元测试框架
  • CentOS7.9绿色安装mysql5.7.44
  • Cell Biology Learning Track(I)膜结构
  • 医院用的桌面管控软件有哪些?适用于医院的桌面管控软件推荐
  • 异步编程三剑客:回调、闭包与Promise组合实战
  • MySQL 主从同步(复制)实战
  • redis面试点记录
  • mysql和postgresql如何选择
  • 电磁兼容性(EMC)法规