随笔 - 530
文章 - 0
评论 - 3
阅读 -
10098
09 2024 档案
undolog redolog binlog 记录
摘要:binlog记录了所有修改,没有查询相关 对一条记录进行操作(cud),就记录回滚需要的信息: 比如插入一条记录时,记录下主键,方便回滚时删除 redolog : 保证了持久性,⚠️内存不可靠 更新记录时,先修改内存,然后记录redolog; 后续找时机同步到磁盘 事务提交时,将 redo log
阅读全文
mongodb 记录
摘要:表:集合 记录:文档 mongodb的记录以bson形式存储 存储引擎:WiredTiger 简单crud db.orders.find( { _id: { $lt: 1000 }, status: { $in: ["active"] }, amount: { $gt: 10, $lt: 250 }
阅读全文
两阶段提交 , TCC 记录
摘要:事务协调者(PM) , 事务参与者(TM) 两阶段提交分为 1. 准备(prepare) pm发消息询问所有TM是否都准备好: 各个tm做本地事务的预操作(如写日志),不提交 回复pm 1. yes:准备好了 2. no: 没准备好 2.提交(commit) tm: 根据yes或者no,发消息通知所
阅读全文
Kafka 记录
摘要:补充下mq作用: 解耦合,异步, 削峰限流 key.serializer和value.serializer 序列化器 producer consumer broker : kafka实例,运行在一个机器上 主题(topic) : 分区:类似队列 ,且消息有序 一个broker上会有不同的分区 一个分
阅读全文
mysql 锁 记录
摘要:表级别锁 1.表锁 lock tables xx read. 线程只能读 lock tables xx write 其他线程无法读写 2.MDL锁(元数据锁 MDL 是为了对表执行 CRUD 操作时,防止其他线程对这个表结构做了变更 ,反之亦然 注意 MDL 是在事务提交后才会释放, 因此长事务可能
阅读全文
主从复制 记录
摘要:大事务或资源密集操作:强制走主库 master写binlog,提交事务 ; slave 开一个 io线程 读取master binlog, 存储到 中继日志 relay log ,然后读取日志同步数据 实现MySQL主从复制需要进行的配置 MySQL 主从复制的简单步骤如下: 在主服务器上创建复制用
阅读全文
两阶段提交中的 redo log 和 binlog 关系
摘要:MySQL 的 InnoDB 存储引擎使用 两阶段提交 来协调 redo log 和 binlog 的写入顺序,确保事务的一致性。具体过程如下: 准备阶段(Prepare Phase): InnoDB 将事务修改写入 redo log,但此时 redo log 处于 prepare 状态,表示事务的
阅读全文
mvcc 实现的一些记录
摘要:使用read_view(创建事务时候生成) 和 undo_log undo_log 记录了 某个记录的历史版本 包括 trx (最后一次执行修改的事务), pointer 隐藏字段 比如现在某个事务查看一条记录 ,用该记录的trx 对比read_view ,如果read_view对 trx 不可见
阅读全文
redis key
摘要:如何处理 bigkey? 1. 监控 +手动清理:Redis 4.0+ 可以使用 UNLINK 命令来异步删除一个或多个指定的 key。 2.渐进式删除 Api如 list strim set srem hash hdel 3..分割 bigkey:将一个 bigkey 分割为多个小 key 比如一
阅读全文
Lua 脚本在 Redis 中能够保证操作不会被其他指令插入或打扰 ??
摘要:Lua 脚本在 Redis 中能够保证操作不会被其他指令插入或打扰,主要通过以下机制实现: 1. Redis单线程模型 2. 脚本执行锁定 当执行 Lua 脚本时,Redis 会自动锁定所有在脚本中访问的键。这个过程可以分为几个步骤: 获取锁:在脚本执行前,Redis 会检查脚本中访问的键。如果有键
阅读全文
操作系统 记录
摘要:内核态和用户态 用户态模式下只能执行部分指令,不能访问硬件资源 进程和线程: 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 协程:一种用户态的轻量级线程,其调度完全由用户程序控制。有独立的栈,但和其他协程共享堆内存。 协程之间切换开销很小,无需内核态的上下文切换,适合高并发 为
阅读全文
redis lru ,lfu
摘要:LRU 和 LFU 的区别 LRU 淘汰最近访问的数据中,时间最久远的 LFU 关注的是访问的频率,淘汰的是访问次数最少的数据。
阅读全文
缓存穿透,缓存击穿,缓存雪崩
摘要:缓存穿透:db 和 Redis 都没有需要的 key 1. 缓存空值 2.布隆过滤器 缓存雪崩:大量缓存失效 1. 互斥锁,并设置过期时间 2.redis集群,读写分离架构 缓存击穿:热点key失效 热点数据设置长 TTL
阅读全文