摘要:
表:集合 记录:文档 mongodb的记录以bson形式存储 存储引擎:WiredTiger 简单crud db.orders.find( { _id: { $lt: 1000 }, status: { $in: ["active"] }, amount: { $gt: 10, $lt: 250 } 阅读全文
摘要:
事务协调者(PM) , 事务参与者(TM) 两阶段提交分为 1. 准备(prepare) pm发消息询问所有TM是否都准备好: 各个tm做本地事务的预操作(如写日志),不提交 回复pm 1. yes:准备好了 2. no: 没准备好 2.提交(commit) tm: 根据yes或者no,发消息通知所 阅读全文
摘要:
补充下mq作用: 降低系统耦合,异步, 削峰限流 , key.serializer和value.serializer 序列化器 producer consumer broker : kafka实例 topic partition:类似队列 ,且消息有序 partition可以处于不同broker,以 阅读全文
摘要:
表级别锁 1.表锁 lock tables xx read. 线程只能读 lock tables xx write 其他线程无法读写 2.MDL锁(元数据锁 MDL 是为了对表执行 CRUD 操作时,防止其他线程对这个表结构做了变更 ,反之亦然 注意 MDL 是在事务提交后才会释放, 因此长事务可能 阅读全文
摘要:
大事务或资源密集操作:强制走主库 master写binlog,提交事务 ; slave 的 io线程监听master 的 dump log线程, 接收binlog,回放binlog 实现MySQL主从复制需要进行的配置 MySQL 主从复制的简单步骤如下: 在主服务器上创建复制用户:创建一个用户 s 阅读全文
摘要:
MySQL 的 InnoDB 存储引擎使用 两阶段提交 来协调 redo log 和 binlog 的写入顺序,确保事务的一致性。具体过程如下: 准备阶段(Prepare Phase): InnoDB 将事务修改写入 redo log,但此时 redo log 处于 prepare 状态,表示事务的 阅读全文
摘要:
使用read_view(创建事务时候生成) 和 undo_log undo_log 记录了 某个记录的历史版本 包括 trx (最后一次执行修改的事务), pointer 隐藏字段 比如现在某个事务查看一条记录 ,用该记录的trx 对比read_view ,如果read_view对 trx 不可见 阅读全文
摘要:
如何处理 bigkey? 1. 监控 +手动清理:Redis 4.0+ 可以使用 UNLINK 命令来异步删除一个或多个指定的 key。 2.渐进式删除 Api如 list strim set srem hash hdel 3..分割 bigkey:将一个 bigkey 分割为多个小 key 比如一 阅读全文
摘要:
Lua 脚本在 Redis 中能够保证操作不会被其他指令插入或打扰,主要通过以下机制实现: 1. Redis单线程模型 2. 脚本执行锁定 当执行 Lua 脚本时,Redis 会自动锁定所有在脚本中访问的键。这个过程可以分为几个步骤: 获取锁:在脚本执行前,Redis 会检查脚本中访问的键。如果有键 阅读全文