《码破苍穹の八股文修炼手册》
文章平均质量分 87
码破苍穹の八股文通关日记
码破苍穹ovo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL----日志
当客户端有多条数据更新语句需要执行,首先看缓冲池(buffer pool)中有无对应的数据,若没有则通过后台线程从磁盘中读取原数据到缓冲池,接下来执行数据更新语句更新缓冲池中的数据,此时磁盘中的数据还没有与缓冲池中的数据做同步,磁盘中对应的数据页就成为了脏页,当一条数据修改语句执行后会在undo log中记录一条相反的语句,当事务需要回滚时就读取undo log中的命令进行数据恢复,且事务提交或回滚后undo log并不会立马删除,还可用于MVCC。用于数据备份与主从复制。原创 2025-06-17 08:46:30 · 2068 阅读 · 0 评论 -
MySQL----索引
帮助存储引擎快速获取数据的一种数据结构,形象的说就是索引是数据的目录。核心目标:减少磁盘I/O次数 → 提升查询性能。原创 2025-06-16 14:10:27 · 2319 阅读 · 0 评论 -
MySQL----事务
事务A先查询某条不存在的记录没查到(快照读),此时事务B向数据库中插入了该条不存在的数据并提交,那么此时如果事务A还是执行正常的快照读的话仍然是不会出现幻读问题的,但如果事务A在未查到数据的情况下直接更新事务B刚刚插入的数据(当前读),那么该条被插入记录的隐藏字段DB_TRX_ID就会变成事务A的id,该行记录就对事务A的快照读也可见了。假设有事务A与事务B同时进行,事务A先查询符合条件的数据,此时事务B又插入了数量不等的符合事务A查询条件的数据,此时事务A再次查询凭空多出了符合条件的数据,即为幻读。原创 2025-06-10 10:46:19 · 2920 阅读 · 0 评论 -
Redis----缓存设计、旁路缓存优化
线程A进行数据更新的流程,线程A首先将进行数据库数据更新的操作,与此同时线程B查询缓存(此时缓存还没有被线程A删除),但由于某中原因缓存提前失效,线程B查询到了数据库未来得及更新的旧数据并进行重建缓存的操作,但恰好在此期间线程A更新数据库完毕并删除了缓存,线程B在线程A删除了缓存后才进行缓存重建的操作,此时多种小概率事件叠加在一起导致了数据的长期不一致,此种情况发生概率较低.可以为缓存添加有效时间,一段时间后缓存失效,自动纠错.: 将删除缓存要操作的数据添加到消息队列中,由消费者操作数据;原创 2025-06-07 21:14:34 · 4583 阅读 · 0 评论 -
Redis----内存回收
Redis主从模式,从节点不会主动改变自身保存的数据,即使是key过期了也不会主动清除,而是依靠主节点当key过期时在AOF文件中追加一条del语句,发送给从节点执行。设置了过期时间的key会在Expires中再储存一份,判断其是否过期,只需要查询 Expires中对应key的过期时间与当前时间进行对比。volatile-ttl: 淘汰设置了ttl的key,优先淘汰剩余时间更短的key。volatile-ttl: 淘汰设置了ttl的key,优先淘汰剩余时间更短的key。原创 2025-06-05 19:33:49 · 3390 阅读 · 0 评论 -
Redis----集群
什么是脑裂: 在Redis一主多从的主从架构中,因为某些原因主节点的网络出现问题, 与所有从节点以及哨兵失去连接,但唯独与客户端的连接保持正常,仍然在处理客户端的请求,由于失联主节点是无法与从节点进行数据同步的;:若主从节点之间的连接由于网络故障导致连接断开,再次连接时就会进行增量同步,依据offset截取未同步的命令,缓冲区是环形的,若写满会覆盖掉原有的数据,当再次连接时若从节点还未同步的命令被新的数据覆盖(依据两者的offset判断),则有数据无法通过增量同步的方式同步,需要重新进行全量同步.原创 2025-06-04 19:16:06 · 4635 阅读 · 0 评论 -
Redis----线程模型与持久化
基于内存操作:Redis速度快的直接原因是因为其是基于内存的,绝大多操作都是在内存中之直接进行的,速度极快,可以用一个线程处理众多客户端请求而不会出现性能瓶颈,而且还可以避免并发问题,不存在线程切换带来的额外性能消耗。底层数据结构优化:Redis还对底层数据结构做了许多优化 比如String有三种编码方式在不同的情况下采用不同的编码方式减少内存空间申请次数,避免出现内存碎片,如渐进式rehash在扩容时不会阻塞。原创 2025-06-02 23:10:13 · 3881 阅读 · 0 评论 -
Redis----五种常见数据类型
EMBSTR,当SDS存储的内存空间小于等于44字节(此时RedisObject刚好不大于64 字节) 采用EMBSTR编码方式,该编码方式会直接申请一块连续的内存空间存储,RedisObject与SDS 因为Redis底层申请内存时都是申请2的n次方的大小,此时占用的内存空间不大于64字节,可以轻易申请到一片连续的内存空间减少内存申请次数,且不易产生内存碎片,减少花在申请内存上的额外性能开销。Hash与ZSet非常类似,Hash只有键值存储的需求,无排序需求,底层采用Dict或ZipList实现即可。原创 2025-05-31 00:07:15 · 3688 阅读 · 0 评论 -
Redis----数据结构
一款基于内存的非关系型数据库,对数据的读写操作都是在内存中完成的,具有高性能 高并发的特点,可以用来作为缓存降低mysql数据库的压力,还可以用来做分布式锁 以及轻量级消息队列等。原创 2025-05-28 11:42:56 · 5032 阅读 · 0 评论
分享