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

点击右上角即可分享
微信分享提示