An Empirical Evaluation of In-Memory Multi-Version Concurrency Control (VLDB17')
这篇工作梳理了MVCC的四个要点:
并发控制协议
多版本存储
垃圾回收
索引管理
还介绍了MVCC的多种变体原理,实现了这些变体,然后在OLTP workload上测试评估各个变体的效果。
MVCC基础
MVCC介绍
MVCC是一种并发控制算法,一个数据库对象可能会被并发操作,算法维护同一个对象的多个版本来提高并...
Deep Class
最近看了个有趣的talk:"A Philosophy of Software Design" by John Ousterhout。
如果要选一个概念,贯穿整个计算机系统,应该选哪个呢?
John Ousterhout问过Donald Knuth,Knuth给的答案是layers of abstraction。
John Ousterhout自己觉得是problem decomposition,要注意隔离复杂度。
Helping compiler help you : Ispike, BOLT
《BOLT: A Practical Binary Optimizer for Data Centers and Beyond》 CGO 2019
《Ispike: A Post-link Optimizer for the IntelR ItaniumR Architectur》 CGO 2004
Helping compiler help you
现在数据中心跑的程序二进制文件普遍都比较大而且代码逻辑比较复杂,因此编译过程的优化在很多情况下能够显著提升性能。编译优化是一种 helping compiler help you的方式。
编译优化常见的几种优化技术...
InnoDB源码解析-基础数据结构
互斥锁 ib_mutex_t
typedef FutexMutex ib_mutex_t;
UT_MUTEX_TYPE(TTASFutexMutex, GenericPolicy, FutexMutex); 这个宏定义展开是
typedef PolicyMutex<TTASFutexMutex<GenericPolicy>> FutexMutex;
PolicyMutex是个mutex框架,具体实现依赖模板参数MutexImpl。
1234567891011121314151617
templat...
数据库系统组件
读了Architecture of a Database System这篇经典论文,挑了些不太熟悉的内容做了笔记。
论文内容基本上谈不上是在讲架构吧,基本上就是罗列了下有哪些组件,而且内容基本上针对原来传统数据库的。
主要包括几个组件:
Client Communication Manager
Process Manager
Relational Query Processor
Transaction Storage Manager
Shared Components and Utilities
Client Session Manager
两层...
InnoDB源码解析-存储管理层次
InnoDB的存储层次
总的数据粒度:Row - Page - Extent - Segment - Tablespace。
数据格式
Row
行内容主要就是各列的值,外加一些flag信息。
Page
Page(页面)是固定大小的物理存储块。Page有多种用途,既可以存放一组行记录,也可以存放存储管理元数据。
具体地,page类型相关的源码:
...
WordPress公式范例
没想到wordpress的latex插件支持的这么好。
写了几个例子,右键"Show Math As" "Tex Commands"可以看原始文本。
Quorum System的故障概率和负载
最近读到一个有趣的话题:Quorum System的故障概率和负载。
首先是一些概念:
节点集合 V=\{v_1, v_2, .., v_n\}
Quorum Q\subseteq V
Quorum System \mathcal{S} \subseteq 2^V,且Q_1 \cap Q2 \neq \emptyset, \forall Q1,Q2 \in\mathcal{S}
故障概率Failure Probability: 假设每个节点故障概率为p,Quorum System \mathcal{S}的故障概率记为F_p( \mathcal{S})等于每个Quorum都至少有一个节点发...
蓝眼睛谜题
陶哲轩的博客上的一个puzzle。
地址在这里:https://terrytao.wordpress.com/2008/02/05/the-blue-eyed-islanders-puzzle/ 。你可以直接跳过去读原文。
这是发生在一个在虚构的岛上的故事,不过因为这里面的逻辑本身就非常微妙,所以故事描述的时候会稍显啰嗦,我直接摘下来:
There is an island upon which a tribe resides. The tribe consists of 1000 people, with various eye colours. Yet, their ...
偏序/DAG的一个例子
序问题可以说是分布式系统中天字第一号问题,因为它来自分布式系统最基础的那个系统模型假设 - 异步网络,而且影响了分布式系统算法设计等等很多方面。分布式系统的序问题阐述起来非常庞大,这里只是简单描述下跟偏序/DAG的一个例子 - 区块链公链的DAG。
前面已经写过一点关于偏序的东西,读者可以参见Anna KVS中的Lattice是什么?里面介绍的一些内容。
首先从比特币网络开始,比特币...