天天通讯!SQL治理高阶实践:异常防御体系建设与应用挖掘
(相关资料图)
如上图所示,SQL治理的基本阶段主要包括开发(事前)、测试(事中)、生产运维(事后)三阶段。
在开发阶段,研发通常不受相应开发规范和SQL审核约束。从开发到测试或生产发布时,才会进行DDL和DML的审核。目前业内SQL治理,主要还是在SQL出问题之后进行相应的治理。
所以我们思考:能否在测试阶段提前发现有问题的SQL,提前预判性能并治理?如何在事中进行SQL的兜底和止损?
之所以要把治理能力前置到测试阶段,是因为越早发现有问题的SQL,对整体治理或改造的成本就越低,对生产的影响也越小。
2.事前发现1)SQLReviewSQLReview是在开发环境向测试环境或生产环境发布时,对语句进行基本审核。此部分的整体能力建设与当前业界主流的开源没有太大差别,只是我们的集成规范会更个性化或更丰富。
第一,根据DBA在日常中的反馈,完善相应规则并集成经验,如拦截特殊语法;
第二,集成三方规范。比如大数据包含某些特殊要求,要求每一张表必须有时间字段等特定字段、特定类型和特定索引,以供大数据抽取数据;
第三,广播变更消息,比如提供安全审计,变更大数据订阅结构变更;
第四,日志分析,分析热点表。DBA在日常运维时,需要一定数据统计来总结经验,梳理重点关注的业务,了解拦截最多的规则和问题最多的部门。
2)新增SQL检测新增SQL检测是指在SQL执行到生产环节之前,将它拦截。实现流程中最重要的一点是,通过数据库代理中间件记录全量测试及生产的全量SQL、然后统一进行消费处理,识别出生产环境新增的SQL。
例如通过指纹计算,对比测试环境下SQL的指纹是否出现在生产最后的指纹库里。若不存在的话,就把它认定为一个新增的SQL,再放到生产环境中进行特征判断,比如它的扫描行数是否太多,是否存在全表扫描,索引特征是否出现index merge、file sort等,也包含执行时长,特殊禁止语法等全方位的特征判断。
但这种实现存在两个问题:
一是据统计,生产环境峰值QPS每秒上百万。由于生产的真实流量比较大,改进后,我们不再转发全量SQL,而是根据SQL指纹进行采样避免流量太大,但即便如此,每天处理的SQL量仍接近5TB。
二是指纹计算。上述SQL通过DBA直观去看,指纹计算应该是一致的。但由于早期我们采用开源的基于正则的SQL指纹计算库存在的不足,无法识别SQL在细微上的差异,导致指纹计算准确度差影结果判断。
改进后的指纹算法则采用语法解析树的方式,将SQL的关键对象抽取出来做特征处理,比如取出查询字段后做排序后再计算指纹,对where条件同样做排序处理,防止sharding表由于表名字不同,造成的计算差异同样进行特殊处理。
3)统计分析我们统计了最近一个月的拦截量。在TP场景下,SQL问题大部分是索引问题,由上图可知,“索引不合理”和“缺少索引”的情况占比之和达到80%。因此能否通过技术手段进行自动合理索引创建就是解决问题的重点。
4)研发视角新增SQL质量报告通过上图视角,研发可以了解每个DBA或每个部门,在具体时间范围内新增哪些 SQL,发到生产的新增SQL是否高危SQL,并清晰地记录下来。
质量报告还包含其他重要信息,比如 SQL被认定为高风险的原因。如上图所示,质量报告提示可能存在全表扫描的情况,然后记录其首次出现的时长和时间,使用开源索引工具给出基本建议。
但初期的建设还不太完善,开源工具仅基于单条SQL提出建议,缺少评估意见合理性的全局视角,我们后续会整体改写这部分。
5)不带隐患上生产实现拦截功能需要与整个研发流程结合。
在CICD环节的准出阶段进行卡口集成,若出现高风险的慢查询或SQL没有处理的情况,会提示“不可上线”,避免隐患SQL上生产。
3.事中兜底无论防御做得多好,随着数据库容量、QPS的增长,一些SQL会不可避免地逐步恶化为慢SQL,因此要具备兜底能力。
第一,通过中间件进行主动或被动的SQL限流或熔断,比如DBA会主动介入对某个SQL限流或者熔断;
第二,自研数据库管控平台。平台集成数据库自愈系统,通过查杀模块,实时检测每一个数据库实例的健康状况,并根据特征进行相应的SQL查杀等。
我们整体构建在混合云上,包含阿里云、华为云,AWS,Azure。每一家云对于数据库的保护机制存在很大差别且是不可以跨云移植适用的,所以要打造自己统一的、通用的保护能力。
4.事后治理事后治理主要是慢查询治理。由于混合云上要兼容产品比较多通过云商接口,拉文件的原始分析方式实现比较麻烦,具备全量SQL的能力后实现就较为简洁,后续接入多家云或兼容MySQL协议的产品时,能更好实现慢查询分析、分析及安全审计等能力。
使用单一云较为简单,而在混合云上时,为了某一能力的统一化或标准化,就不得不把管控系统设计得很复杂。
5.后续计划前文提到,我们统计80%的SQL问题是索引问题。如上图统计,生产环境中单列索引占比77%,复合索引只占了13%,同时复合查询条件占比91%。由此可以看出,用23%的复合索引服务91%的复合查询显然是不够的,意味着可能是存在很多SQL执行计划不佳的情况。
过去的开源建设是针对单个索引、单个SQL的最佳推荐,但具备了全量SQL采集分析能力后,可以做全局性最佳索引的推荐。在数据统计维度,可以基于代价进行评估给出整张表综合索引的建议,进而自动创建和维护索引。
二、深度观测:全量SQL分析与挖掘1.为什么要做全量SQL分析?1)应用场景:问题分析定位全量SQL的应用场景比较多。如上图所示,例如数据库CPU很高或抖了一下是哪些SQL导致的,这些SQL的具体执行情况,包括时间响应、返回行数、扫描行数等。
2)SQL挖掘:深度治理基于全量SQL分析表、索引是否已废弃,不同db的热点表、热点SQL,单条SQL RT是否稳定,甚至可以分析表的活跃数据情况等治理场景。
3)兼容混合云产品、统一问题排查由于混合云产品的差异性与企业统一管理的矛盾,给问题分析或日常应用带来很大困扰,因此产品设计时要格外考虑多云兼容性。
有时候,单一云确实提升了某一能力,但混合云下,服务整体功能的设计更加复杂。
2.全量SQL分析实现全量SQL分析实现的基本流程:SQL请求DAL之后,DAL将SQL转发到Kafka里面,然后再根据业务场景需要进行消费处理。
比如分析某一个字段是否有在用,只需要通过指纹去重,抓取这一段时间内所有这个表的SQL请求,并进行参数解析,就能轻易分析出所需要的字段。
还比如热点表、热点SQL、SQL波动,经过先前处理后,可直接通过原数据查询。
通过对一段时间内的SQL查询返回数据记录,分析出活跃数据量占比,来指导研发合理的规定设置。
上图是做采样的一个样例,它的维度很丰富,我们可以基于SQL的采样,进行大量统计分析的工作。
通过top SQL可以分析某个时间段内SQL执行占比情况,进而推测数据库性能开销情况,对深入问题分析有比较大的帮助作用。
上图是第二个应用场景,通过波动SQL,查询不稳定集群。预处理每条SQL时,我们记录了SQL RT 的p50跟p95时长,把每一个集群下每一条SQL的p95跟p50去做差,然后聚合、排序。波动越大,聚合的差值越大,就大致能推测这个集群是不稳定的。
从上图左下方的图表可知,它的CPU经常具有毛刺。但日常中DBA很难根据经验照顾到每一个集群,所以需要拉取这些数据进行分析或日常治理。
再如DBA发现某个DB TOP 1的SQL执行的次数几乎是TOP 2的10倍,分析这个SQL发现它是一个司机登录场景。由于活跃的司机体量是有限的,司机登录动作达到每秒几万,这显然是不合理的。
与研发沟通后,我们找到了原因:这是典型的业务设计问题,也是一个基础编码问题。
三、容量预测:数据库仿真流量测压1.数据库容量评估基于云上技术的红利,从存储计算一体化的架构演进为存储计算分离的架构,具备了快速容量弹性的能力。未来目标是做到ServerLess化,但目前仍需要一些时间和数据进行验证。
虽然实现了存算分离实现快速扩缩容,但是容量评估仍旧是根据DBA经验来判断的,缺乏一些相应的数据支撑。
2.数据库容量压测1)BenchMark由于BenchMark压测与真实环境的SQL表现差距巨大,因此不能用于容量评估。
近年来流行的SQLReplay等流量回放工具,核心就是利用抓包的方式将SQL记录下来然后机械能回放。它主要的问题是:一方面抓包容易缺漏,另一方面是SQL维度信息缺失难以支持还原真实场景。
2)全链路压测现在比较流行的方式是全链路压测。它存在的问题是,在真实的业务场景下,APP ID之间的调用关系极其复杂。理论上使用全链路压测的方式可以进行压测评估,但实际应用中数据上下游调用可能会造失真的问题,会存在压不到、压得过多或过少的情况。
同时,也存在数据热点问题。全链路压测有时会模拟一定的用户、司机数据,通常这个量不会特别大,几百条、上千条就已经算是比较多的。由于数据库有cache,很多查询不回表,所以无法反映真实的数据库的实际负载情况。
3)仿真流量压测在具备了全量SQL后,我们提出了仿真流量压测。它的大概流程是:高峰期内,SQL将流量录制下来保存至Kafka低峰期内,进行相应的消息处理后进行仿真回放。
主要问题:
压测幂:比如压测1000次理论上这1000次在任意时间点执行SQL的内容、数量以及并发度都要求保持一致,这是非常困难的;
流量缩放:如果是1:1的回放,理论上是可以还原的。但研发可能对放量百分比产生疑问,比如流量增加120%,数据库能否撑得住?这种时候只能通过经验预估容量。成倍放大是容易的,但成比例放大就很麻烦。
主要缺点:
使用真实生产环境进行回访,不能执行DML导致失真;不能保证100%的仿真度,只能无限接近。3.数据库容量评估应用实际进行压缩时,我们划出一条以CPU为主的基准线,安全的上限值是45%。超过45%之后,无论数据库是否能承受都需要进行扩容。基于这个基线进行压测,CPU压到45%时当前QPS即是容量的上限水位,这就有利于研发和DBA后续直观地看到容量情况。
目前这一块内容并未完全落地,整体处于开发阶段,我们在理论上还原了SQL执行顺序与并发情况。整体并发模型还需要做深入的打磨跟优化。
4.为什么要围绕SQL死磕?根据真实生产的统计,我们将近70%的数据库实际规格都低于8C。
使用这种小规格的服务器,数据库的弹性能力是非常差的,SQL稍有问题都可能击穿数据库。由于使用的是混合云,无法将数据库稳定性保障交给云商统一解决,因此我们只能在现有能力下,构建兼容多云的统一管理能力。
数据库最大的两个挑战:高并发+大容量。虽然目前货拉拉还没有面临大容量与高并发的场景,但已初显端倪,不到3年,我们数据库QPS流量增长了近10倍。
在可预见的未来,如果我们的订单再增加1倍,流量可能会增加10倍,现存的SQL问题到时将会更加突出,这也是DBA围绕SQL进行能力建设的原因之一。
5.后续规划目前平台初步具备了DAS功能的雏形,距离比较完善的产品形态还要继续进行打磨。
标签:
上一篇:6月5日山东舜天液氨报价上调
下一篇:最后一页
- 知识课堂 校园欺凌是什么
- 权威百科知识 双氧水是啥东西
- 生活知识 长颈鹿是什么动物
- 知识导航 涤纶是什么
- 经验分享 嵌入式什么意思
- 百科 梦醒时分粤语版叫什么
- 打破性别“玻璃天花板” 95岁女院士是“她力量”最佳代言
- 中国记者节|今天,一起揭秘他们的独门“武功秘籍”
- 内蒙古通辽遭遇特大暴雪:学校停课 机场关闭
- 河北辛集市暂停举办体育活动 关闭景区文娱场所
- 红色文物·党史故事 “推出胜利”的小推车
- 侵华日军南京大屠杀遇难同胞纪念馆闭馆
- 甘肃:已治愈出院18例 闭环健康管理助回归家庭
- 核酸采样:一位“点长”的50小时冲刺
- 跑道结冰 哈尔滨机场关闭至9日12时
- 辽宁大连迎今冬首场降雪 机场临时关闭跑道地铁3号线停运
- 北京地铁全面开启车内加热装置
- 黑河市多举措保障疫情期间残疾人等特殊群体生活稳定
- 北京丰台海淀两处管控区域解封 社区工作者收到“暖心礼物”
- 百年兰州牛肉面的“隔离与亲近”
- 暴雪侵袭黑龙江 9地市最大雪深17厘米
- 吉林四平一旅游项目违占耕地两千多亩 投资达10亿元
- 湖南双峰27名非法滞留缅北人员被惩戒:小孩回原籍入学
- 江西新增本土“1+6” 上饶增一中风险地区
- 江西上饶一地调整为中风险地区 实行封闭管理措施
- 西宁市主城区首轮全员核酸采集样本144.8万份 结果均为阴性
- 快递旺季遭遇雨雪天气 国家邮政局呼吁理解快递小哥
- 高压、孤独,胆大、心细:手执焊枪的水下“蛙人”
- 掏粪掏了36年,他还在琢磨“新门道”
- 内蒙古:二连浩特市新增1例本土确诊病例 额济纳旗累计治愈出院本土确诊病例76例
- 坚守在海拔4300多米的“天路保健医生”
- 38年后,他终于知道了家在哪儿……
- 受降雪影响 辽宁鞍山一农贸市场发生坍塌
- 中国舞蹈家协会顶尖教师巡回课堂(重庆站)举办
- 边城战“疫”:夜晚七点的暂停键
- 风雪高原战“疫”长卷 寒潮下的西宁疫情防控观察
- 拟音师:“雕刻”声音的人【三百六十行】
- “双减”之后 中小学教师资格考试为何依然火爆
- 大数据助力贫困生成长
- “大漠明珠”驶上发展快车道 塔里木盆地做足生态大文章
- 职校生可报考事业单位 搬走职业教育的一块绊脚石
- 打算“双十一”买买买的姐妹 看完这篇再“剁手”
- 完美“飞天”仰仗全宇宙最酷飞船试驾员
- 冠状病毒中损伤血管的蛋白首次确定
- 新电池结构让飞行汽车成为可能 相关技术将亮相北京冬奥
- H5N8病毒肆虐全球,我国家禽为何“独善其身”
- 重庆奉节一民警因公殉职 年仅28岁
- 哈尔滨市新增本土新冠肺炎确诊病例1例
- 成都本地累计在管密接2757人、次密9097人
- 成都累计报告确诊病例23例 出现1传13特殊案例
-
呼和浩特一学校宿管员扇打学生致双耳鼓膜穿孔 分管校长被免
中新网呼和浩特11月9日电 (记者 张林虎)9日,针对“宿管员扇打学生致其双耳鼓膜穿孔”一事,呼和...
-
郑州通报8例确诊病例和无症状感染者活动轨迹
中新网11月9日电 据郑州市委宣传部官方微信消息,11月8日0至24时,郑州市新增阳性感染者3例,均为...
-
新疆阿克苏果农:我们的生活像苹果一样甜
中新社新疆阿克苏11月9日电 题:新疆阿克苏果农:我们的生活像苹果一样甜 作者 苟继鹏 “我...
-
河北辛集开展大规模消毒消杀工作
今天(9日)上午,河北省辛集市召开疫情防控新闻发布会。会上,辛集市科学技术局局长辛彦卜介绍,新冠...
-
河北辛集新增本土确诊11例 已转运定点医院诊治
今天(9日)上午,河北省辛集市召开疫情防控新闻发布会,辛集市副市长刘士民介绍,2021年11月8日0时至...
-
石家庄深泽县第五轮全员核酸检测结果全部为阴性
11月9日,石家庄市召开第12场新冠肺炎疫情防控工作新闻发布会。发布会上,石家庄市深泽县县长郝英鹏...
-
海口市1例治愈后的境外输入病例复阳 已转至定点医院隔离医学观察
中新网海口11月8日电 (记者 张茜翼)海口市新型冠状病毒感染肺炎疫情防控工作指挥部8日通报称,11...
-
四川新增本土确诊病例4例
中新网11月8日电 据四川省卫健委网站消息,11月7日0-24时,四川新增新型冠状病毒肺炎确诊病例5例(...
-
黑龙江省新增新冠肺炎本土确诊病例6例
中新网哈尔滨11月8日电 (程岩 记者 史轶夫)黑龙江省卫健委8日发布消息,7日0-24时,黑龙江省黑河...
-
河南新增本土确诊病例18例 其中郑州市16例周口市2例
中新网11月8日电 据河南省卫健委官方微博消息,11月7日0—24时,河南省新增本土确诊病例18例(郑州...
-
河北新增确诊病例8例 新增无症状感染者1例
中新网11月8日电 据河北省卫健委网站消息,2021年11月7日0—24时,河北省新增新型冠状病毒肺炎确诊...
-
寒潮持续发威!南方气温纷纷触底 强降雪中心转移至东北
中国天气网讯 今天(11月8日),寒潮继续南下,持续发威,南方大部最高气温将纷纷触底。强降雪中心将...
-
雪后寒!今日北京晴天回归北风劲吹 最高气温5℃上下
中国天气网讯 今天(11月8日)北京晴天回归,但在风寒效应下,“冷”仍然是天气的主题。气温方面,今...
-
黑龙江新增本土确诊病例6例 均在黑河市爱辉区
中新网11月8日电 据黑龙江省卫健委网站消息,2021年11月7日0-24时,黑龙江省新增新冠肺炎本土确诊...
-
寒潮继续影响华东华南等地 东北地区等地有强降雪
中新网11月8日电 据中央气象台网站消息,受寒潮影响,预计11月8日08时至9日08时,黄淮东部、江淮东...
-
辽宁新增本土确诊病例20例 新增本土无症状感染者12例
中新网11月8日电 据辽宁省卫健委网站消息,11月7日0时至24时,辽宁省新增20例本土新冠肺炎确诊病例...
-
寒潮影响“加码”:吉林力保电力供应 停课停运范围加大
中新网长春11月9日电 (记者 郭佳 张瑶)连日来,一轮寒潮引发的强降雪席卷中国北方。位于东北地区...
-
常州连续一周无新增病例 10日全市各类学校将错峰复学
中新网常州11月9日电 (记者 唐娟)11月9日,常州疫情防控指挥部学校防控组对外发布,自11月10起,...
-
哈尔滨机场开放恢复运行 计划航班45架次
中新网哈尔滨11月9日电 (仇建 记者 史轶夫)9日12时22分,随着哈尔滨经阜阳飞往三亚的FU6685航班...
-
山西警方抓获6名“摸金校尉” 缴获“虎枕”等大量文物
中新网长治11月9日电 (记者 李庭耀)记者9日从山西省长治市公安局上党分局获悉,上党警方侦破系列...
-
西藏基层第一书记话产业发展推进乡村振兴
中新网日喀则11月9日电(记者 赵朗)近日,由西藏自治区网信办主办的第一书记话小康活动先后走进山南...
-
内蒙古通辽:强降雪致8个旗县区受灾
中新网通辽11月9日电 (记者 张林虎)9日,记者从内蒙古自治区通辽市应急管理局获悉,自11月5日起,...
-
成都金堂:医护人取消婚礼坚守岗位 手捧花被送到了战“疫”一线
中新网成都11月9日电 (邹立杨)连日来,华西医院金堂县第一人民医院实验医学科的主检验师易维佳都在...
-
江西铅山新一轮核酸检测结果均为阴性
(抗击新冠肺炎)江西铅山新一轮核酸检测结果均为阴性 中新网南昌11月9日电 (记者 吴鹏泉)江西省...
-
辽宁大连幼儿园和中小学学生即日起暂缓入校
中新网11月9日电 据辽宁省大连市人民政府新闻办公室官方微博消息,大连市新冠肺炎疫情防控总指挥部...
-
那年今日 | 一张漫画涨知识之11月8日
-
北京新增1例本土确诊病例
中新网11月8日电 据北京卫健委官方微博消息,11月7日0时至24时,北京新增1例本土确诊病例,无新增...
-
河北石家庄深泽县7日新增1例无症状感染者 为8岁男童
中新网11月8日电 据石家庄卫健委官方微信消息,石家庄深泽县应对新冠肺炎疫情工作领导小组办公室8...
-
高速封闭、机场关闭、学校停课 辽宁多部门发应急预案应对极端天气
中新网沈阳11月8日电 (李晛 王景巍)7日在寒潮影响下,东北地区局地降大雪。辽宁省气象部门当日连...
-
云南新增本土确诊病例3例 新增本土无症状感染者3例
中新网11月8日电 据云南省卫健委网站消息,11月7日0—24时,云南省新增确诊病例9例,其中境外输入...
-
努力让每个人都有出彩机会
努力让每个人都有出彩机会 “孩子明年要参加中考,成绩一直提不上去,送他读职高,也是一种选择...
-
参与和见证中国水电发展
参与和见证中国水电发展 余吉安的童年是在马来西亚加里曼丹岛的沙捞越州古晋市度过的。家门口的...
-
中国航天:为实现中国梦提供战略支撑
中国航天:为实现中国梦提供战略支撑(科技名家笔谈) 今年是中国共产党成立100周年,也是中国航...
-
8日起 江西铅山县开展新一轮全员核酸检测
记者从江西省铅山县疫情防控指挥部了解到,按照疫情防控要求,为了充分保障公众的健康安全,现定于1...
-
适当“早教”可以,“早早教”大可不必
一家之言 适当“早教”可以,“早早教”大可不必 以前国庆节是放假了,可家家都有娃,放假补...
X 关闭
X 关闭