Known unknowns

MySQL学习实践(二) -- MySQL事务

MySQL学习实践,本篇学习梳理MySQL事务。 1. 背景 本篇梳理学习MySQL事务。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 事务特性 ACID: 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成 一致性(Consistency):事务操作前和操作后...

MySQL学习实践(一) -- 整体架构和基本操作的流程

MySQL学习实践,本篇介绍整体架构和基本操作的流程。 1. 背景 MySQL没太系统深入地学习梳理,前面梳理学习了一下基于LSM-Tree的leveldb,此篇开始,深入学习下基于B树/B+树的MySQL。 学习过程中正好结合场景,对相关联的Linux存储、CPU、内存管理、进程管理等模块知识查漏补缺。 说明: 学习代码基于mysql-server的 5.7.44 tag,...

Linux存储IO栈梳理(四) -- 通用块层

学习Linux内核存储栈中的通用块层(block layer)。 1. 背景 Linux存储IO栈梳理(二) – Linux内核存储栈流程和接口 中简单带过了一下通用块层,并在 Linux存储IO栈梳理(三) – eBPF和ftrace跟踪IO写流程 中追踪IO写流程时追踪到对应的io调度处理相关堆栈,本篇来具体看下通用块层的对应流程。 另外,想起来之前看过的极客时间课程,回头看了下存...

MIT6.824学习笔记(二) -- RPC和线程

MIT6.824(2020)学习笔记,Lecture 2 - RPC和线程。 1. 背景 MIT6.824(2020)学习,本篇继续学习:Lecture 2 - RPC和线程。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. Why Go 课程选择Go来完成实验,并做了一些和其他语言(主要是C++)的对比,...

MIT6.824学习笔记(一) -- 课程介绍 及 MapReduce

MIT6.824(2020)学习笔记,此为第一篇。 1. 背景 有几个点促使自己近期行动起来: TODO列表里,有一项是把Go和Rust捡起来能熟练使用,之前学过用过但是实践少,久一点不用就生疏了; 梳理学习LevelDB时,就把 goleveldb 和 leveldb-rs 放到TODO里了,准备通过工业级项目提升Go和Rust水平。但精力有限,死磕在LevelDB上太久的...

Linux存储IO栈梳理(三) -- eBPF和ftrace跟踪IO写流程

跟踪Linux存储IO写流程。 1. 背景 Linux存储IO栈梳理(二) – Linux内核存储栈流程和接口 中,我们跟踪了读取的IO调用栈,本篇跟踪下写入操作时的IO调用栈。 环境说明:同上一篇一样,本地CentOS8.5环境只追踪到中断调用栈,先起ECS进行实验了:Alibaba Cloud Linux 3.2104 LTS 64位(内核版本:5.10.134-16.1.al8....

Linux存储IO栈梳理(二) -- Linux内核存储栈流程和接口

梳理学习Linux内核存储栈相关流程和接口。 1. 背景 LevelDB的学习梳理暂告一段落(还有不少东西没完结),继续看Linux存储IO栈。 上一篇:Linux存储IO栈梳理(一) – 存储栈全貌图 中,看了一下总体存储协议栈,本篇看下VFS和文件系统相关的内核代码逻辑。 主要参考下面文章,并结合内核代码梳理学习: read 文件一个字节实际会发生多大的磁盘IO? 7...

LevelDB学习笔记(七) -- 布隆过滤器

LevelDB学习笔记,本篇学习其布隆过滤器实现。 1. 背景 继续学习梳理LevelDB中具体的流程,本篇来看下布隆过滤器实现。 之前学习记录中虽然有涉及但未展开: LevelDB学习笔记(二) – 读写操作流程里面的读写流程,没有展开说明 LevelDB学习笔记(五) – sstable实现里提到filter block是基于布隆过滤器实现的。 主要参考如下文章并映证Leve...