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 分析加锁过程,死锁的分析

阅读全文

MySQL的恢复

redo log的格式(逻辑+物理混合格式)、Mini-Transaction、redo log写入过程,写入page cache,log_sys结构、redo log的文件格式,如何刷新到磁盘上的,checkpoint过程,恢复过程; undo log的格式(逻辑格式)、undo log的组织、回滚段、系统表空间的5号page,多个回滚段、rollback的过程;以及源码中的redo log定义、undo log定义

阅读全文

MySQL的缓存

Buffer Pool、Doublewrite Buffer、Redo相关的Log Buffer,自适应Hash索引、change buffer、以及InnoDB相关的参数汇总

阅读全文

MySQL查询分析

一些经典的RBO优化,包括子查询优化;一些CBO优化,统计信息收集,CBO的统计计算方式,常数成本调节;JOIN优化,并详细介绍了EXPLAIN的各个字段含义,其中select_type、type、Extra这几个字段比较重要,另外还有JSON个事的执行计划,optimizer trace

阅读全文

用工具分析MySQL存储文件

innodb_ruby是专门分析InnoDB的工具,通过这个工具能获取到系统表空间、普通表空间的统计信息,段信息、区信息,以及4个核心的SYS表;;以及索引信息统计,page信息汇总,page信息dump,还可以用图表的方式展示

阅读全文

MySQL文件存储结构

InnoDB架构包含内存、磁盘两种结构;基于磁盘的结构中包括:系统表空间、普通表空间、通用表空间、双写缓冲区、Undo表空间、redo日志;临时表空间;这里最重要的当属系统表空间 和 普通表空间;普通表空间分为段、区、页、行这些概念,256个区一组,第0组包含FSP_HDR、XDES、INODE,存储数据的地方是INDEX;系统表空间则多了Data Dictionary Header部分

阅读全文