《6-唯品会-唯品会在测试阶段做sql性能分析的实践及落地-梁伟项.pdf》由会员分享,可在线阅读,更多相关《6-唯品会-唯品会在测试阶段做sql性能分析的实践及落地-梁伟项.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、SQL性能自动化测试实践 梁 伟 项 唯品会 目录 n 背景介绍 n方案整体介绍 n SQL采集模块 nSQL解析及参数替换模块 nSQL性能分析模块 n运营策略 n效果及待优化 唯品会 n背景介绍 唯品会 一条慢SQL引发的惨案 现象:2019年4月25日,商品系统某核心应用新版本上线后不到半小时出现熔断 影响:20分钟内商家管理后台无法正常使用 原因分析:慢查询导致获取DB链接失败,服务熔断 涉事SQL:select global_sku_id, xxx. from global_sku_index where del_flag=0 and barcode = 190436050899;
2、表global_sku_index当时的索引情况: 修复方案:给barcode字段添加单独索引 测试同学的解释:SQL对应的接口中有owner参数,我以为开发一定会传owner+barcode来查, 谁想到这个版本没传owner参数 唯品会 测试痛点 那你还是请那你还是请 个猴子来个猴子来 吧!吧! 这么明显的慢这么明显的慢sql你你 测试时候都没发测试时候都没发 现现?让让猴子测都能猴子测都能 发现!发现! u线上慢SQL问题特点 影响大,且容易引起系统雪崩 线下测试难发现 u线下测试难发现的原因 部分测试人员没有意识去关注 测试时间成本高,比如每次从代码提交记录中找出所有 新增和修改的sq
3、l语句就得花不少时间 在测试环境做SQL性能分析的结果参考意义不大 部分测试人员没有足够的专业能力做SQL性能分析 唯品会 n整体方案介绍 唯品会 概要介绍 本案通过向测试环境被测应用注入代码的方式收集SQL后,利用线上数据做参数替换,最后把SQL 提交到线上的SQL性能分析引擎分析,得到具有较高参考意义的分析结果和优化建议。 作用范围:mysql + java + mybatis系列,主要针对线下测试环境新增或者修改SQL语句。 序号方案特点 1应用接入简单,被测应用及测试人员无感知 2通过sql特征提取算法,去重效果良好,可有效防止SQL重复 分析 3全自动化采集和分析,风险自动邮件通知对应开发、测试负 责人 4分析结果有较高参考意义 序号分析报告内容 1当前执行计划中反馈什么风险,如做了全表扫描,使用了临时表 等 2是否存在更优的索引方式,如建议新建或者修改某个索引,或者 强行走某个