DB
文章平均质量分 56
fananchong2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
看 MySQL InnoDB 和 BoltDB 的事务实现
单写(串行写):写时拷贝当前 B+ 树,构建新 B+ 树,最后原子切 meta 页。MySQL 事务不会锁表,不同行记录的写操作,可以并发(某些不行,注意间隙锁)它的 MVCC 为 N 个版本,粒度是按行可以有多个版本。多读:一致性非锁定读,不同事务隔离级别读取不同行版本数据。它的 MVCC 为 2 个版本,当前版本和正在写的版本。MySQL InnoDB 支持多读多写方式的并发级别。BoltDB 支持多读单写方式的并发级别。多写:不同行的写,可以并发。多读:可以并发读当前版本。原创 2025-03-25 14:54:32 · 293 阅读 · 0 评论 -
看 MySQL InnoDB 和 BoltDB 如何写磁盘
DB 产品,会 WAL 后再写磁盘;WAL 日志又称 redo 日志,用于失败时的恢复操作。BoltDB 的实现构思巧妙,相当于新建 1 棵 B+ 树,原子切换 meta 页。看下 MySQL InnoDB 存储引擎、 BoltDB 是如何解决该问题。需要写的页数 1 页到 N 页不等(数据少,就在 meta 页)BoltDB 当前 meta 页指向磁盘 B+ 树。因为实际磁盘页未被写坏,因此总能 redo 正确。该页使用 redo 日志文件也无法恢复正确了。原创 2025-03-11 18:33:24 · 362 阅读 · 0 评论 -
MySQL InnoDB 事务隔离级别和锁
READ COMMITTED(读取已提交)和REPEATABLE READ(可重复读)的读,会根据 MVCC 机制,读历史版本数据(不同的是版本的定义不同)根据锁的粗粒度,还有意向锁(InnoDB事务并发决策用的,可以不用关注)根据事务隔离级别不同,可能为行锁,或升级为间隙锁。非唯一索引的 SQL 语句,均可以升级为间隙锁。原创 2025-03-20 21:29:23 · 522 阅读 · 0 评论
分享