[SIGMOD 2023] 事务型数据库性能异常基准测试

606次阅读
没有评论

[SIGMOD 2023] 事务型数据库性能异常基准测试

[SIGMOD 2023] 事务型数据库性能异常基准测试

关键词

database performance 

anomaly diagnosis

benchmark

dataset

导 读

事务型数据库性能异常基准测试

性能异常诊断是事务型数据库运维的重要议题。近年来,机器学习被广泛应用于异常检测与分类任务,取得了良好的效果。然而,机器学习需要大量数据用于训练,对于数据库性能异常,目前工业界与学术界并没有高质量的公开数据集,同时也缺乏有效的数据采集方法。

针对这一问题,我们提出了DBPA,一套事务型数据库性能异常基准测试。我们针对9种常见的性能异常,设计了符合现实场景的复现方案,并提出了增强数据多样性的方法,以提高机器学习模型的泛化能力。我们还提供了一些模板,便于用户扩展其他异常类型。针对复合异常,我们提出了一套生成算法,可将单一异常进行自由组合。此外,我们还提供了一个较大规模的数据集,可直接用于异常检测与诊断算法的效果评测。

本文由北京大学与中兴通讯合作发表于ACM SIGMOD 2023,相关代码与数据集已开源于GitHub。

论文链接:https://dl.acm.org/doi/abs/10.1145/3588926

开源代码https://github.com/hjhhsy120/DBPA

开源数据集https://github.com/hjhhsy120/DBPA_dataset

01

问 题 背 景

现代事务型数据库系统面临众多运维问题,例如工作负载突变导致查询延迟增大,数据增长导致不良索引与查询设计问题凸显,引发性能退化等。这些性能问题严重影响到数据库服务水平与用户体验,甚至可能造成经济损失。

近年来,机器学习方法被广泛应用于异常检测、分类等任务,在众多场景下取得了良好的效果。对于数据库性能异常,最常用于诊断的数据是数据库与操作系统的监控指标,属于表格型数据,非常适合用作机器学习模型的输入。

然而,机器学习需要大量数据用于训练。在工业界,通常难以从复杂的工作负载中识别出重要的性能退化,因此往往只能通过用户投诉来发现性能异常,检出率很低。而且,诊断日志通常只包含异常现象、根因、诊断过程,并不包含监控指标数据,因此即使在历史上发生过一定数量的性能异常,也无法构建数据集用于机器学习。在学术界,一些研究工作使用了小规模数据集来验证异常诊断算法的效果,但这些数据集规模不足,且缺乏多样性,不利于机器学习的泛化性能。

因此,构建一套事务型数据库性能异常基准测试,从而构建真实有效、具备多样性的数据集,对于将机器学习应用于数据库性能异常检测与诊断,具有重要意义

02

问 题 难 点

建高质量的性能异常数据集,需要适应真实场景的数据库运维要求,因而面临以下难点。

首先,目前缺乏确定性的性能异常复现方法。异常数据构造的一种常见方法是长时间运行压测,采集其中的性能异常数据。然而,这一方法需要对大量监控数据进行分析,不利于大规模数据集的构建。因此,我们应针对给定的异常类型,设计确定性的复现方案,构造符合实际场景的异常数据。

其次,对于同一异常类型,需要提高数据多样性。在生产环境中,同一异常类型可能发生于各种场景。以索引缺失为例,可能发生于不同的系统环境与负载、不同行数/列数/列宽的数据表、不同的查询并发度等。对于这些可变量,我们的数据集应包含不同配置,使得机器学习模型能够识别这些场景的共同点,从而能够泛化到更多场景。

最后,数据集构建方法还需要支持复合异常。复合异常在实际场景中是常见现象。然而,由于组合众多,我们无法复现所有复合异常类型。一个替代方法是用单一异常生成复合异常数据,然而复合异常下的监控指标并非单一异常的简单组合。因此,需要设计合适的算法来生成复合异常数据。

03

DBPA设计方案

针对前述问题,我们设计了DBPA(Benchmark for Transactional Database Performance Anomalies),一套事务型数据库性能异常基准测试。该基准测试包括一套性能异常复现框架与一个较大规模的数据集。

3-01

性能异常复现框架

[SIGMOD 2023] 事务型数据库性能异常基准测试

图1 性能异常复现框架

该框架分为服务端与客户端。服务端为数据库所在位置,包含性能指标采集工具Dool与资源异常注入工具stress-ng。其中,Dool从数据库与操作系统采集监控数据并存储。客户端为控制脚本所在位置,包含复现控制脚本、数据库操作脚本与OLTPBench。复现控制脚本为shell脚本,负责调用数据库操作脚本向数据库注入异常查询,同时控制OLTPBench注入正常工作负载作为背景环境,并记录执行日志。该控制脚本运行完毕后,可根据客户端执行日志的时间戳,从服务端的监控数据中截取时间片段,进而构造数据集。此外,我们还提供Codegen工具,可将XML配置文件转为复现控制脚本,从而便于用户设计性能异常参数、扩展新异常类型。

我们主要使用的数据库系统为PostgreSQL,但我们的复现方式对其他基于硬盘的关系型数据库系统同样适用。在论文实验中,我们对MySQL数据库的复现效果进行了评测,结果表明其在MySQL上同样有效。

3-02

性能异常类型与复现方式

[SIGMOD 2023] 事务型数据库性能异常基准测试

图2 性能异常类型

我们根据现有研究工作与中兴通讯的实践经验,选取了3大类共9种性能异常,设计了确定性复现方法与判断基准。在复现异常时,需要对配置上下界的参数进行验证,判断是否正确触发异常。

第1大类为数据库环境异常,包括共享缓冲区参数过小、数据库之外因素引发I/O饱和。共享缓冲区参数过小是典型的不良参数导致异常;I/O饱和则是典型的资源异常。

第2大类为负载量异常,包括高并发插入导致文件扩展缓慢、高并发提交导致等待事件、负载过大导致资源瓶颈。其异常根因各不相同,因此复现方式与判断基准有所差异。例如,高并发插入在多次插入后提交,以查询延迟增大为判断标准,而高并发提交则每次插入都进行提交,以等待事件为判断标准,二者均需要检查对方的判断条件,以确保数据的正确性。

第3大类为查询触发异常,包括索引缺失、索引过多、表膨胀、锁等待。除锁等待仅对已有数据表加锁之外,均通过注入查询来构造异常。以索引缺失为例,我们先构建无索引的大表,再注入该表上的查询,这样的查询会使得监控数据呈现一定的模式,从而作为异常诊断的依据。

我们为所有异常设计了XML配置文件,用户如需扩展新异常类型,只需参考同一大类的其他异常,修改配置文件并生成控制脚本。

3-03

数据集构建

我们参考数据库性能异常诊断相关研究工作,选取数据库与操作系统监控指标,作为机器学习模型输入。其中,数据库监控指标通过查询相关视图获取,包括缓冲区使用情况、数据库大小及其增量、连接状态、事务数、锁状态、主要配置参数等。操作系统指标包括I/O、CPU、内存、网络资源指标,以及中断、锁、进程、套接字等其他统计指标。

为增强机器学习模型的泛化能力,我们通过设计多种配置参数,提高数据的多样性。首先,我们采用4种系统环境:32/64核CPU、128GB/256GB内存的4种组合。其次,我们使用4种背景工作负载:TPC-C, TATP, Voter, Smallbank。最后,我们为每种异常设计了具体的配置参数,例如对于新建的数据表,我们考虑不同的行数、列数、列宽、索引数等。

据此,我们构造了一个较大规模的单一异常数据集。其中,每条数据样本包含12个时间戳,时长为1分钟,仅缓冲区过小例外,时长为10分钟。

[SIGMOD 2023] 事务型数据库性能异常基准测试

图3 单一异常数据集规模

3-04

复合异常

在生产环境中,经常出现多个异常同时发生的情形。由于组合过多,我们无法一一复现所有复合异常。因此,我们提供部分复合异常数据,以及用单一异常生成复合异常数据的算法。

数据集方面,我们先对同一大类的3种异常两两组合,再对不同大类的3种异常两两组合,最后补充3个组合以覆盖其余所有异常。

[SIGMOD 2023] 事务型数据库性能异常基准测试

图4 复合异常数据集规模

生成算法方面,我们采用机器学习模型,以2条异常数据与1条正常数据作为输入,生成1条复合异常数据。实验表明,同一大类的异常复合使用随机森林效果较好,不同大类则使用LightGBM效果较好。由于为所有监控指标配置模型的计算代价较大,对于那些在正常与异常数据之间没有显著差异的指标,我们直接用2条异常数据的均值作为其复合。

04

实 验

4-01

有效性验证

为验证DBPA数据集足以支持诊断任务,我们对每种异常随机选取1条数据,考察其关键指标在正常、异常状态下的差异。其中,关键指标的确定方式为,使用one-vs-rest二分类的XGBoost对每一类异常进行判别,考察各指标在XGBoost中的Gini系数,选取TOP-3。

实验表明,各类异常的TOP-3指标均与正常情形有差异,不同异常的TOP-3指标存在差异,且这些差异均可根据经验进行解释。例如,I/O饱和是由数据库外因素导致,因此网络与事务指标下降,CPU等待增加;而负载过高同样以I/O为主要瓶颈,却是数据库内因素导致,因此文件系统、内存、数据库增量指标均上升。

[SIGMOD 2023] 事务型数据库性能异常基准测试

图5 各类异常的关键指标(灰底为异常)

4-02

异常诊断效果

为验证DBPA数据集在现有异常诊断算法上的效果,我们选取常见的机器学习模型(逻辑回归、MLP、决策树、随机森林、XGBoost、LightGBM)与传统方法(AutoMonitor、KNN)进行评测。实验表明,基于学习的方法总体优于传统方法,且基于树集成模型的算法效果较好。可见,DBPA解决机器学习的训练数据问题,有助于数据库性能异常诊断效果的提升。

[SIGMOD 2023] 事务型数据库性能异常基准测试

图6 异常诊断准确率

此外,我们还对数据多样性、复合异常生成算法、MySQL环境复现的有效性等方面进行了验证,对异常检测、复合异常诊断等方面进行了评测,相关实验结果请参见原论文。

总     结

在本研究中,我们提出了DBPA事务型数据库性能异常基准测试,包括一套性能异常复现框架与一个较大规模的数据集。用户可部署DBPA框架以采集性能异常数据,训练机器学习模型用于诊断任务;也可使用DBPA数据集评测各类算法,包括异常检测、异常诊断、环境迁移等。DBPA有助于解决机器学习在数据库性能异常领域缺乏训练数据的问题,从而提高现代事务性数据库系统的诊断效果。

详细了解本工作,请访问下方链接地址:

论文链接:https://dl.acm.org/doi/abs/10.1145/3588926

开源代码https://github.com/hjhhsy120/DBPA

开源数据集https://github.com/hjhhsy120/DBPA_dataset


References

[1] Dong Young Yoon, Ning Niu, and Barzan Mozafari. 2016. DBSherlock: A Performance Diagnostic Tool for Transactional Databases. In SIGMOD. ACM, 1599–1614.

[2] Minghua Ma, Zheng Yin, Shenglin Zhang, Sheng Wang, Christopher Zheng, Xinhao Jiang, Hanwen Hu, Cheng Luo, Yilin Li, Nengjun Qiu, Feifei Li, Changcheng Chen, and Dan Pei. 2020. Diagnosing Root Causes of Intermittent Slow Queries in Large-Scale Cloud Databases. Proc. VLDB Endow. 13, 8 (2020), 1176–1189.

[3] Lianyuan Jin and Guoliang Li. 2021. AI-based Database Performance Diagnosis. Journal of Software 32, 3 (2021), 845–858.

[4] Djellel Eddine Difallah, Andrew Pavlo, Carlo Curino, and Philippe Cudré-Mauroux. 2013. OLTP-Bench: An Extensible Testbed for Benchmarking Relational Databases. Proc. VLDB Endow. 7, 4 (2013), 277–288.

[5] Lin Ma, William Zhang, Jie Jiao, Wuwen Wang, Matthew Butrovich, Wan Shen Lim, Prashanth Menon, and Andrew Pavlo. 2021. MB2: Decomposed Behavior Modeling for Self-Driving Database Management Systems. In SIGMOD. ACM, 1248–1261.

END

欢迎关注本公众号,帮助您更好地了解北京大学数据与智能实验室(PKU-DAIR),第一时间了解PKU-DAIR实验室的最新成果!


实验室简介

北京大学数据与智能实验室(Data And Intelligence Research Lab at Peking Univeristy,PKU-DAIR实验室)由北京大学计算机学院崔斌教授领导,长期从事数据库系统、大数据管理与分析、人工智能等领域的前沿研究,在理论和技术创新以及系统研发上取得多项成果,已在国际顶级学术会议和期刊发表学术论文100余篇,发布多个开源项目。课题组同学曾数十次获得包括CCF优博、北大优博、微软学者、苹果奖学金、谷歌奖学金等荣誉。PKU-DAIR实验室持续与工业界展开卓有成效的合作,与腾讯、阿里巴巴、苹果、微软、百度、快手、中兴通讯等多家知名企业开展项目合作和前沿探索,解决实际问题,进行科研成果的转化落地。

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy