MarkLau's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

论文笔记:MonetDB/X100: Hyper-Pipelining Query Execution

“MonetDB/X100: Hyper-Pipelining Query Execution” 是一篇在 2005 年 CIDR 会议上发表的颇具影响力的论文,如今在 Google 上的引用量已超过860次。这篇论文主要展示了现代超标量 CPU 的运行机制,并对当时市场上主流的数据库系统在超标量 CPU 上的运行表现进行了深入的分析与实证测试。测试结果表明,市面上的主流数据库系统均未能
2023-07-22
论文笔记 > 数据库 > 查询执行
#论文笔记 #数据库 #查询执行

论文笔记:Apache Calcite: A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources

论文原文链接 Calcite 介绍随着近些年越来越多数据处理系统的出现,出现了两个重要的问题: 不同系统的开发者都遇到了类似的问题,例如需要为系统提供 SQL 的支持,以及进行查询优化。每个系统都造了自己的轮子,浪费了大量的开发精力。 某些开发者会同时使用多个数据处理系统,例如同时使用 Flink、Elasticsearch、Druid 等。我们需要构建一个系统,可以同时访问多个数据源的查询进行
2023-07-14
论文笔记 > 数据库 > 优化器
#论文笔记 #数据库 #查询优化器

论文笔记:The MemSQL Query Optimizer: A modern optimizer for real-time analytics in a distributed database

最近暑期实习的工作是和 MySQL 的查询优化器相关。过去我在 IoTDB 所做的工作主要和存储引擎相关,对于查询的了解仅限于火山模型,对查询优化的了解仅限于知道有 RBO 和 CBO。对于暑期工作的内容,我基本上需要从头开始学。我学习查询优化主要方式包括论文阅读、网络上的公开课和讲座(CMU 15-721 以及 CMU Database Group 关于 Query Optimizer 的系列讲
2023-07-08
论文笔记 > 数据库 > 优化器
#论文笔记 #数据库 #查询优化器

ShellScript 的一些实用使用方法

本文章将持续更新,记录一些在开发过程中实用的 Shell 脚本。
2023-04-26
Shell
#Shell #Linux
Java 基准测试工具:JMH

Java 基准测试工具:JMH

在日常开发中,我们经常需要对一段代码进行性能测试,以验证我们的优化手段是否有效。通常我们的做法可能是public void someFunction() { long startTime = System.nanoTime();// do some execution long timeCost = System.nanoTime() - startTime;
2023-04-24
Java
#Java

LevelDB 源代码阅读(五):SSTable

在 LSM 结构的数据库中,SSTable 指的是数据落盘之后形成的文件。在 LevelDB 中,SSTable 是以 .sst 文件的形式存在的。本文将介绍 LevelDB 中 SSTable 的写过程和读过程。 SSTable 的总体结构 图中所示为 SSTable 文件的整体结构。文件的前部分为数据部分(DataBlock),文件的结尾部分为数据的索引。在索引部分,又分为了 Filter
2021-07-22
数据库 > 源代码阅读 > LevelDB

LevelDB 源代码阅读(四):MemTable

在 LevelDB 源代码阅读(一):写流程 中,我们在介绍写入时最终讲到写入的数据被编码成 internalKey 然后被插入到 SkipList 中。在本文中,我们将结合 LevelDB 的源代码,详细介绍 MemTable 的结构。 MemTable 基本结构代码中有关于 MemTable 的定义和实现在 memtable.{h/cc} 中,我们先从 MemTable 的定义开始了
2021-07-15
数据库 > 源代码阅读 > LevelDB

跳表:平衡树的概率替代方案

LevelDB 和一众 NoSQL 数据库都使用 LSM 树作为其存储模型,其中 MemTable 是非常重要的一个数据结构。在 LevelDB 的实现中,MemTable 是通过一种名为跳表(SkipList)来存储数据的。跳表最早由 William Pugh 在论文《SkipList: A Probabilistic Alternative to Balanaced Tree》 中提出,本文是
2021-07-13
论文笔记

LevelDB 源代码阅读(三):预写日志

在前面两篇文章中,我们介绍了 LevelDB 的写流程和读流程。原本准备这篇文章介绍 LevelDB 的 MemTable 结构,但是在 LevelDB Handbook 的内容编排中,MemTable 被放在了预写日志之后介绍。于是我也决定按照 Handbook 的顺序,先介绍预写日志,再介绍 MemTable 的结构。 WAL:预写日志WAL 的英文全称为 Write-Ahead Log ,翻
2021-07-11
数据库 > 源代码阅读 > LevelDB

LevelDB 源代码阅读(二):读流程

在 LevelDB 源代码阅读(一):写流程 中我们介绍了 LevelDB 的 LSM 树结构以及数据写入 LevelDB 的流程。本文我们将介绍从 LevelDB 中读取数据的流程。 快照(Snapshot)在介绍 LevelDB 的读流程之前,首先介绍一下快照(Snapshot)的概念。所谓快照,其实就是代表了数据库在某一个时刻的状态,LevelDB 中数据读取就是通过 Snapshot 机制
2021-07-10
数据库 > 源代码阅读 > LevelDB
12

搜索

Hexo Fluid
总访问量 次 总访客数 人