原文:https://www.intel.com/content/www/us/en/develop/documentation/vtune-cookbook/top/methodologies/top-down-microarchitecture-analysis-method.html
现代CPU一般都采用了流水线、硬件线程、乱序执行、指令级并行等技术来高效利用CPU内的各种资源。但有很多软件和算法在实现上并不能很好地利用好CPU,比如非常常见的链表会带来间接地址访问,影响硬件预取的效果,导致读数据的时候流水线...
Hekaton内存引擎
Hekaton: SQL Server’s Memory-Optimized OLTP Engine(SIGMOD13')
Hekaton是SQL Server的一个纯内存数据引擎,用户可以声明一张表存放在Hekaton上,这张表完全支持原SQL Server所有操作,包括T-SQL。同时如果T-SQL只涉及Hekaton表,T-SQL还可以进一步编译执行,性能更高。
为什么要重新设计Hekaton引擎?
单纯优化现有的SQL Server还能不能有10-100倍吞吐提升?
说到底吞吐提升的三条路:提升sca...
分布式事务性能的FIT取舍
《FIT: A Distributed Database Performance Tradeoff》 Bulletin of the IEEE Computer Society Technical Committee on Data Engineering 2015
这篇文章不长,内容也不多,介绍了一个分布式数据库性能的tradeoff原则叫FIT。其实也不叫原则,就是一个模糊的设计直觉。
FIT的意思是分布式数据库的Fairness, Isolation, Throughput必须要取舍,最多三选二。
可能CAP三选二在业界影响...
以史为鉴:数据模型变迁史
这两天看了篇数据模型的论文,What Goes Around Comes Around。这篇论文是2005年Stonebraker和Hellerstein两位泰斗写的,讲的是数据库的数据模型35年的变迁历史,另外论文还总结了一些经验。
这是一个非常有趣的话题,能够让我们更多地去从市场和产品角度看问题,尤其是考虑到不断迭代的甚至是越来越快地迭代的数据库技术。
数据模型Data Model的9个历史阶段:
Hierarchical(IMS): 1960年代末到197...
Haketon的高性能并发控制算法
High-Performance Concurrency Control Mechanisms for Main-Memory Databases (VLDB12')
这篇文章是微软Hekaton上的in-memory storage engine的高性能控制算法。
MV Storage Engine
关于事务可串行化的一个洞察和论述
如果事务的读和写逻辑上发生在同一时刻,则事务就是可串行化的。SI隔离级别并不满足这个情况,SI的读实际上是发生在事务开启时(事务开启时取快照,快照一旦确定了,即使读请求是...
代码整洁之道 读书笔记
Chapter 1 整洁代码
Lebanc's Law: later equals never.
Chapter 2 有意义的命名
Chapter 3 函数
每个函数一个抽象层级
Chapter 4 注释
Chapter 5 格式
Chapter 6 对象和数据结构
Chapter 7 错误处理
Chapter 8 边界
Chapter 9 单元测试
Chapter 10 类
Chapter 11 系统
Chapter 12 迭进
Chapter 13 ...
10 Patterns for Controlling the Cloud in AWS
来源:AWS re: invent 2018
有些地方不大明白 🙁
Pattern 1: checksum all of the things
Pattern 2: Cryptgraphic Authentication
Encrypt and authenticate everything.
Control Planes are powerful and security critical systems.
Be able to revoke and rotate every credentials. But also watch out for certificate expiries.[??]
Prevent human access to production credentials.
Never allow a...
InnoDB源码解析-事务系统
InnoDB事务系统负责InnoDB层事务管理,快照管理,MVCC等。
事务对象
InnoDB层事务对象为 struct trx_t 类型。
12345678910111213141516
// 部分字段struct trx_t { trx_id_t id; // 事务开启序 trx_id_t no; // 事务提交序 trx_state_t state; // 事务状态  ...
InnoDB源码解析-日志系统
MySQL 5.7中 Log Sys锁冲突比较大,MySQL 8.0对InnoDB Log Sys进行了重构。
我们先描述下5.7的 Log Sys看看锁冲突,然后再介绍8.0的方案以及部分代码实现细节。
mtr
mtr 表示 mini-transaction,表示操作的一个最小原子单元,比数据库事务概念要更小。比如一个事务可能插入两行数据,但每插入一行都可能触发B-Tree的叶子分裂,页面的分裂操作涉及多个页面,这些页面的修改必须保持原子(不能发生分裂的第...
Rethink the Scan in MVCC Databases
这是SIGMOD'21 上的论文《Rethink the Scan in MVCC Databases》,论文针对像HTAP等场景下可能出现大量versioned data中执行scan慢的问题提出了一种比较有效的方案。
Scan性能问题
首先,论文看到了这种场景下scan慢的一个重要原因:
Scan的时候,每一个key都要分别从自己的多个版本里面做一次线性查找,找到当前读快照可见的版本。
这个过程中假如有一种ridgy pointer,用于从key A的可见...