MonetDB/X100: Hyper-Pipelining Query Execution

2005年的一篇论文,通过分析MySQL、MonetDB发现这两种没有达到硬件上的预期效果,MySQL是因为经典的火山模型导致编译器没法利用循环流水线,出现大量CPU等待;而MonetDB避免了上述情况但使用了物化,又导致大量的内存带宽拷贝;这篇论文结合了这两者的特点,选择了向量化的执行方式,并配合了合适的cache size,使得执行效率大幅度提升

阅读全文

Access Path Selection in Main-Memory Optimized Data Systems Should I Scan or Should I Probe

CMU Query Execution & Processing课程的一篇论文,现代分析系统中scan越来越重要,但二级索引依然有用,通过对比硬件参数、数据布局、压缩、并发等综合情况考虑之下,来选择:scan执行 或者index执行;通过性能评估发现,调节scan或者index并不是一个固定的值,而是根据不同的参数以及硬件情况,会动态变化的

阅读全文

Photon A Fast Query Engine for Lakehouse Systems

Databricks 2022年在SIGMOD上发表的论文(最佳工业论文奖),由于I/O方面有很多优化措施,而JVM的对向量化支持较差,之后用C++实现了向量化的执行引擎Photon,来实现进一步的性能提升;首先是从最底层scan开始替换,因为中间替换的代价较高,之后不断往上,直到某个算子Photon不能适配,则由列存转换为Spark的行存,退回到Spark执行,总体看性能可以提升好几倍

阅读全文

MySQL的并发

MVCC的基本概念,读已提交、可重复读隔离级别下的ReadView,MVCC的purage;锁的基本类型,X/S/IX/IS锁;record lock、gap lock、next-key lock、insert intention lock、隐式锁;各种隔离级别下的加锁过程,SHOW ENGINE INNODB STATUS 分析加锁过程,死锁的分析

阅读全文