一、简介

论文题目:Query-based Workload Forecasting for Self-Driving Database Management Systems

发表在2018SIGMOD,来自cmu的数据库组(这个组真的很厉害)

这篇论文主要讲数据库workload预测的问题。因为要实现数据库self-driving(如选择合适的时机在合适的列上自动创建索引),应该根据将要到来的查询对数据库进行优化,而不是根据过去一段时间的查询状态来优化。所以预测将来一段时间的workload十分重要。

二、主要内容

工作流程:

核心流程包括三部分,预处理、聚类和预测。

(一)预处理

1、首先,将原始sql语句抽象成模板,即把sql中的值替换为占位符号,具体替换的位置是:

(1)The values in WHERE clause predicates.

(2)The SET fields in UPDATE statements.

(3)The VALUES fields in INSERT statements. For batched INSERTs, QB5000 also tracks the number of tuples.

对以上结果再做额外处理,如空格、括号等。处理完后,形成一个通用的查询模板。

2、统计一个时间间隔内的各个模板对应的sql个数,然后把小的间隔合并成大的间隔,以节省空间。(还会保留一部分的原始sql,用于之后的优化评估。保留哪些语句采用的是reservoir sampling的方法)

3、继续合并:将语义相同的模板合并成在一起。本文使用启发式的方法近似的比较语义相同:访问相同的表,使用相同的谓语,返回相同的映射(该方法在获得比较好性能的同时还不丢失准确性)。

下面表是预处理完后,模板的个数:

语句数目减少最大的一步,但是依然还是很多,所以需要继续减少数量。

(二)聚类

1、聚类特征

有三类特征可以从模板中提取出来用于聚类分析:(1) physical, (2) logical, and (3) arrival rate history.

其中,前两个是别人使用的方法,本文使用第三种方法。

(1)physical:主要是资源消耗和DBMS执行查询时的各种运行指标。这种方法优点:可以为单个查询提供细粒度和准确的信息。缺点:与参数、硬件和其他 查询有关,只要有一个发生改变,那么之前收集的数据无效,需重建模型。

(2)logical:query的解析树、执行计划、query中用到的column等。优点:不依赖于数据库参数配置和workload特点。缺点:从logical feature获取到的信息有限,所以聚类可能不是很准确。

(3)arrival rate history:历史到达率。如:现在有过去24小时的记录,以每一小时为间隔统计每个模板的到达率,那么每个模板都会有连续的24个到达率,把它作为这个模板的特征向量,共24维。

聚类是要把有相同到达率模式的模板聚在一起形成一个簇,这个簇的到达率是簇内所有模板到达率的算术平均,在之后进行预测时只使用聚类中心,不再使用原始模板,这样可以大大降低计算量。如下图所示:

其中,在聚类时使用的距离度量方式是cosine similarity(余弦相似度,取值在[-1, 1]之间,绝对值越大相关性越强),而不是欧式距离这类度量方式。(使用预先相似度可以更好的反应趋势吧,而不仅仅是大小关系)

2、聚类方法

本文使用的是DBSCAN聚类方法(该方法可以参考这里:传送门),不是原始的DBSCAN,而是根据当前需求做了下修改:原始DBSCAN在对一个点划分到某个簇的时候会计算当前点到簇中任意一个核心的距离并取其中最小的距离,但本文在划分时是基于当前点到聚类中心的距离。(作者也试过k-means聚类,但是当workload有很多小的簇,或者每个簇有不同的大小、密度时,会出现问题)

使用一个阈值ρ (0 ≤ ρ ≤ 1)来判断是否属于同一类,只有大于阈值时才是同一个类。

具体步骤:

(1)从还未划分的模板中拿出一个,跟已有簇的聚类中心计算相似度,如果大于阈值,则划分到该类中;然后用算术平均更新聚类中心;如果和所有的聚类中心的相似度都小于阈值,那么新建一个聚类。

(2)聚类中心发生改变后(加入、删除类中的模板会使聚类中心变化,新的到达率也会使其改变),检查簇中的所有点是否还满足阈值条件,如果不满足则去掉该模板,将这个模板用(1)中的方法重新归类。

(3)合并聚类中心:如果两个簇的聚类中心的相似度大于阈值,则合并这两个簇。

参考图如下:

除了周期性的执行以上3步,系统还会检测新的workload,如果未见过的模板超过一定数量,则会触发以上3步来适应workload变化。

3、聚类剪枝

虽然聚类后数目大量减少,但还存在一些小的类,它们包含的查询只占很少的比例,只会增加模型的噪声。在实际试验中只使用了最大的5个簇来建模,其中这5个簇包含了95%的查询。

(三)预测

1、模型

这部分是根据历史到达率,预测将来一段时间的查询到达率。文中对6种模型做了比较:

(上面的LR指的是Linear Regression)

从3个方面进行了比较:

Linear:输入输出之间是否有线性关系。

Memory:模型是否能够综合输入与它从历史数据中保存下的信息来预测未来。

Kernel:是否使用核函数,使用核函数即支持非线性分析。

通常,线性模型能够有效的避免过拟合,并且对计算资源和训练数据要求较低,在预测较近的未来时间时表现较好。具有记忆性的模型可以挖掘数据的动态行为信息,但是增加了训练的复杂性与模型对数据的依赖。

本文采用ENSEMBLE方法,将多个模型进行合并做平均预测。

(1)使用线性模型预测近期,使用LSTM预测较长时间的结果。结合方式(ENSEMBLE)是将LR和LSTM的结果取平均。

(2)ENSEMBLE无法预测尖刺现象,如每一年只出现一次的峰值。使用KR核回归的方式可以预测这种现象。

将以上两种方式混合(HYBRID):当KR预测结果超过ENSEMBE一定倍数时(即预测到了尖刺),使用KR的结果,否则使用EMSEMBLE的结果。

2、Horizons和Intervals

Horizons:是模型能够预测多远

Intervals:模型预测多长时间间隔内的查询。如预测一分钟或一个小时内的查询数目。

三、实验

数据集,三个:

Admissions : An admissions website for a university’s graduate program. Students submit their application materials to programs in different departments. Faculties review the applications after the deadline and give their decisions.
BusTracker : A mobile phone application for live-tracking of the public transit bus system. It ingests bus location information at regular intervals from the transit system, and then helps users find nearby bus stops and get route information.
MOOC : A web application that offers on-line courses to people who want to learn or teach [3]. Instructors can upload their course materials, and students can check out the course content and submit their course assignments.

数据特点:

(一)聚类分析

1、聚类个数的选择

计算每个聚类查询总量占总查询总量的比例,发现最大的5个聚类查询比例占总数的95%以上,如下图所示:

2、top 5聚类的变化频率

比较相邻两天观察top5聚类是否发生变化,以及有几个聚类变了,如下图所示:

对于Admissions和BusTracker,90%以上的天数是只有小于等于1个模板发生变化。相比之下,MOOC有更多的模板发生变化,因为随业务更新会不断有新的查询出现。

(二)模型预测

1、不同模型对比

使用过去三周的查询到达率作为训练数据,预测长度是1小时。

评估:MSE

使用了6种单模型:LR, KR, ARMA, FNN, RNN, PSRNN,外加集成模型(LR+RNN),混合模型(LR+RNN+KR),实验对比图如下:

结果对比:

(1)短期预测,LR效果更好一些。因为短期内的到达率和过去最近的到达率线性关系比较强,所以线性模型足够了,复杂的模型反而会过拟合。而长期预测,像RNN这样的复杂模型效果更好一点,当预测时间大于等于1天时,RNN要比LR效果好。

(2)ARMA很不稳定,有10%的结果取得最好表现,但也有38%的结果取得最差表现。原因是它对超参数比较敏感,而超参数的设置和数据集相关。

(3)一般情况下,FNN比RNN要差。因为FNN无法像RNN那样利用历史状态,也不没法保证像LR那样不过拟合。

(4)KR有19%的结果表现最好,但也有24%的结果表现最差。它对从未见过的输入表现较差。

(5)PSRNN表现比RNN差,该模型试图对初始化做优化,并从该优化的基础上提升效果,但是在训练集受限的场景下,该模型的效果不稳定,并且计算时间较长。

(6)集成模型有61%的结果表现最好,并且没有表现最差的结果,集成模型方差较低,更稳定。

2、HYBRID预测BusTracker

分别对1小时和1周进行预测,结果如下图:

可以看出,对1小时的预测更准一些。

3、对尖刺的预测

使用Admissions数据集,将训练数据到达率间隔设为1小时,预测2017-11-15到2017-12-31的到达率,结果如下图所示:

只有KR能够预测尖刺现象。

4、不同粒度的预测评估

细粒度可以预测的更准,但是模型训练时间增长。

(三)与自动索引选择结合测性能

文中没有介绍自动索引具体算法,但是这个算法会基于查询到达率选择在某些列上创建索引。

在两个数据集上做了实验,Admissions(MySQL)和BusTracker(PostgreSQL)。

保留原workload的主键和外键,删除所有二级索引。

比较三种方法:

1、AUTO:使用本文方法基于实时预测的到达率创建索引,一共进行了16个创建周期,创建了20个索引。

2、STATIC:基于全部查询历史,使用自动索引算法在开始时创建20个索引。

3、AUTO-LOGICAL:也是基于实时预测创建索引,不同之处在于特征不是使用到达率,而是使用逻辑特征(见聚类部分)

结果如图所示:

在刚开始的时候,AUTO方法比STATIC方法要差,因为刚开始时没有二级索引。到最后阶段,AUTO方法在吞吐量上提升28%,延迟上收益23%

AUTO-LOGICAL方法与AUTO相比也要差一些,文中提到两个原因:The first is that the SQL queries are insufficient for determining whether two templates will have similar impacts on the system. The second reason is that templates within the same logical feature cluster may have multiple arrival rate patterns (including anomalies like one-time queries); this makes it more difficult for the Forecaster to identify these patterns and predict the trends according to the cluster centers.

---------------------------------------

只看论文感觉有些细节还是不清晰,所以还是需要看下代码的,源码地址:https://github.com/malin1993ml/QueryBot5000

论文学习——基于查询的workload预测(CMU)相关推荐

  1. 关系查询处理 查询优化 论文_论文导读基于查询负载的分布式RDF图分割和分配...

    Adaptive Distributed RDF Graph Fragmentation and Allocation based on Query Workload PengPeng, Lei Zo ...

  2. 论文学习——基于循环神经网络的电信行业容量数据预测方法

    文章目录 0 封面 1 标题 title 2 摘要 abstract 3 关键字 keywords 4 总结 conclusion 5 引言 introduction 6 介绍 LSTM 6.1 LS ...

  3. 论文学习——基于混合GA优化LSTM的中小流域流量预测研究

    文章目录 1 摘要 2 结语(conclusion) 3 引言 4 基于LSTM的流量预测模型 4.1 LSTM神经网络浅介绍 4.2 数据选择与处理 5 SVM + BP + LSTM 三种单预测模 ...

  4. 论文学习|基于少镜头学习的毛果杨群体叶片性状分析

    关于原文 Few-Shot Learning Enables Population-Scale Analysis of Leaf Traits in Populus trichocarpa 基于少镜头 ...

  5. 论文学习——基于集成LSTM-AE的时间序列异常检测方法

    文章目录 0 封面 1 标题 2 摘要 3 结语 4 引言 4.1 一个问题 4.1 新方向 5 实验设计 写在前面:<华中科技大学学报(自然科学版)>:主办单位:华中科技大学:中文核心: ...

  6. 论文学习——基于优化DTW算法的水文要素时间序列数据相似性分析

    文章目录 1 摘要 2 结论 3 引言 4 水文时间序列数据相似性度量的相关研究 4.0 前人工作 4.1 提出问题 4.2 DTW动态时间弯曲距离算法 5 基于DTW的水文要素时间序列数据相似性度量 ...

  7. 基于Informer的股价预测(量化交易综述)

    摘要 股票市场是金融市场中不可或缺的组成部分.准确预测股票趋势对于投资者和市场参与者具有重要意义,因为它们可以指导投资决策.优化投资组合以及降低金融风险.而且可以提升国家国际地位以及金融风险控制能力, ...

  8. 大作业论文之基于迁移学习的图像预测研究

    基于迁移学习的图像预测研究 摘  要:深度学习技术发展迅速,在图像处理领域取得了显著成果.[2]但是由于部分图像样本少,标注困难,使得深度学习的效果远未达到预期.迁移学习是机器学习中一种新的学习范式, ...

  9. 顶会论文:基于神经网络StarNet的行人轨迹交互预测算法

    1.背景 民以食为天,如何提升超大规模配送网络的整体配送效率,改善数亿消费者在"吃"方面的体验,是一项极具挑战的技术难题.面向未来,美团正在积极研发无人配送机器人,建立无人配送开放 ...

最新文章

  1. 第二章、IP协议详解
  2. Oracle 10.2.0.4和10.2.0.5 中 OEM bug 8350262
  3. Android的一个关于Activity和UI的小程序
  4. mysql 硬负载_为啥单机MySQL又遭遇瓶颈?MySQL主从复制替你解决单机问题
  5. pwntools解题脚本模板
  6. 【JLOI2013】地形生成
  7. Django项目功能执行逻辑流程图之用户页面信息展示和添加
  8. layer 同步调用_YYText源码解读-YYText同步/异步渲染流程(一)—UIView与CALayer
  9. phpstorm 2019.1 mac
  10. android 串口一直打开_STM32之串口DMA接收不定长数据
  11. 解决远程桌面无法复制黏贴
  12. 流行趋势:大背景图片在网页设计的20个精彩应用
  13. java xsi type_java – JAXB – 如何根据XML值设置XML元素的xsi:type?
  14. 360杀毒软件安装在windows2003系统的解决方法
  15. RouterOS 通过NTH/PCC设置多线负载均衡及带宽叠加
  16. 恶意软件隐身术:把可执行文件隐藏在注册表里
  17. arcgis统计矢量面内栅格数据像元值个数
  18. 12306候补购票功能怎么用?抢票软件依旧能抢到票
  19. 计算MD5值有几种方式
  20. 一套用了 70 年的计算机架构 —— 冯·诺依曼架构

热门文章

  1. 一加Ace怎么样?旗舰机水准的性能王牌
  2. 2d图形引擎 linux设备,2D图形加速引擎(GE2D)
  3. js trim() 去掉字符串首尾空格
  4. C++挖掘程序本质(第二章C++面向对象-上)李明杰-M了个J 配套教材
  5. 《C++复习---模板初阶》
  6. java queryinterface_Java,多态,静态类型和“QueryInterface”模式
  7. 搭建一个简单的MVC框架
  8. 离开你,才知道如此的痛
  9. mysql随机生成中文姓名_Golang 随机生成中国人姓名
  10. JavaScript/ES6 从this开始理解apply() call() bind()、 class 、箭头函数