三、DBbrain行业典型案例分享
下面我们结合一个行业用户的案例,来给大家进一步分享数据库自治在实际的生产过程中如何应用。
电商大促大家都不陌生,腾讯云自身也支撑了非常多的大规模电商。那么电商在每次的大促过程中,如何利用数据库的自治服务,来保障自身的数据库安全?
在备战阶段需要进行故障梳理、资源评估等工作,在没有数据库自治之前,这些工作都必须由DBA来进行。一旦在某个环节出现了问题,或者业务出现了问题,往往DBA就变成了“背锅侠”,总能找出DBA的问题。
而使用数据库自治服务就可以有效解决上述问题。
1.数据库巡检,评估风险
首先,我们可以通过数据库巡检全量的实例,评估相应的风险。因为电商行业的实例很多,如果让DBA手动巡检,工作量是非常巨大的,所以常规DBA会进行核心实例的巡检,或者只对经常出故障的实例进行巡检,但这样就会有很多潜藏的风险。所以全量巡检、多维度巡检是非常必要的。
为什么说在这个地方可以发现问题?因为在备战阶段业务侧一般会封网,一旦封网,业务逻辑不到必要的bug修复时是不会调整的。所以在封网后进行全量巡检、排查问题,只要修复了那么在之后大促的过程中,就可以尽可能的减少问题。
数据库自治的巡检报告,包含从基本信息到资源状况、任务状态的巡检,以及日常的访问行为等非常全面的信息。
热点访问是非常关键的,很可能业务没有出问题,但冷热数据一旦没有进行区分,那么在并发量高的情况下一定会出问题。所以我们可以在用户封网后提供全链路的检查。
2.助力业务优化改造
在排查之后,我们还需要助力客户进行业务的优化。如图所示,我们把优化大致分为五层。
其中,SQL优化是大家非常容易上手、操作起来非常方便的一个优化,比如索引优化、改写优化等。其次还有更深入的配置优化、数据优化、架构优化和业务优化等。
之所以排为1-5,是因为在第一层的优化中,业务的配合度会比较高、改动比较小,随着逐渐深入,可能就需要业务侧更改代码逻辑。我们会根据业务不同的需求提供相应的优化建议。
3.业务场景的故障自愈
最后,我们发现还有一些问题。比如大促中临时的变更发布,导致因为数据库层面没有相应的应对措施,数据库被击穿或者压力很大。还有可能是低质量的SQL,在压力和数据量激增的情况下数据库出现问题。
面对这种情况,传统的方法一般是直接kill掉对话,持续kill或者定时kill进行降级。如果无法降级则进行重启或者HA切换,或者进行业务侧的应用回滚或者临时降级,但相对来说实践起来比较困难。
数据库资质DBbrain在这个时候就可以发挥作用。首先7×24小异常诊断与优化,可以在还未发生问题时就发现隐患,并提出优质的解决方案。此外,还提供了高并发场景的解决方案,并且可以自动持续的kill掉阻塞的SQL。
4.高并发场景解决方案
刚才我们提到,DBbrain在高并发场景提供了数据库性能优化以及降级止损的解决方案。方案具体有三项:
(1)热点更新保护
在高并发场景中,经常出现对同一行数据的更新,在没有缓存的情况下,都会打到底层的数据库。为了保护和减小开销,针对语句的排队机制,尽可能把具有相同冲突的语句放在内存队列排队,通过开启热点更新保护来减少锁冲突的开销,提高高并发场景的数据库性能。
(2)SQL限流
顾名思义,就是帮助用户进行业务降级。限流的操作类似于改写,但技术方案不同。可以通过创建SQL限流任务,自主设置SQL类型、最大并发数、限流时间、SQL关键词,来控制数据库的请求访问量和SQL并发量,进而达到服务的可用性,不同的任务之间不会发生冲突。
(3)空闲事务自结束
自动结束(Kill)空闲事务,避免大事务未提交导致大量资源争抢。会自动识别开启的事务,如果开启事务后在一定时间内没有进行提交,会自动结束该事务。
四、数据库自治的未来展望
数据库自治在未来应该会朝着自愈、自优化的方向发展,不仅能自主调节索引建议,还可以自主创建索引,自动进行识别、添加和删除。
并且在未来还应该可以自动对执行计划进行回归修正,优化策略下沉与引擎融合,让用户需要干预的越来越少,提供的优化服务越来越多。
最后是能够自动识别并杀掉失控SQL,并阻止进行至优化完成,帮助数据库层面做更多业务层面的代码实现。
这些都是未来将要实现的功能,或者是数据库自治在未来能让大家看到的迭代或者技术点。
Q&A
Q:数据库审计功能很重要,特别现在等保也有要求。腾讯云数据库审计的功能是通过旁路审计,还是从proxy节点抽取日志?
A:腾讯云数据库的审计,是在内核层面实现的,并不像其他的审计功能需要外挂Agent,或者在接入机上安装采集的进程实现。
腾讯云的数据库审计,是在连接release之前,在语句提交之后进行规则匹配,如果命中规则便将内容转变成json,拷贝成审计的内容发回,批量进行Flush刷盘,最后存储到列式存储中,提供用户的查询,并且为数据库审计提供数据源。
在这个阶段,如果在return和连接release中间,审计规则配的比较复杂或者比较多,就可能会出现性能损耗,但这个损耗是非常低的,在5%以内。
腾讯云数据库的审计功能,与市面上其他审计相比的优势点在于,是通过内核侧实现,不需要再从旁路进行Agent审计,这样一是可以避免漏审,二是旁路审计抓到的只是SQL包,抓包解析有可能有些信息抓不到,而腾讯云数据库自治的审计除了常规内容之外,还能抓到SQL执行的一些相关信息,比如影响行数、扫描行数等。
Q:数据库走向自治后,DBA的工作内容有什么变化?
A:比如性能调优,故障恢复监控、帐号管理、实现高可用、数据备份部署、架构选型等,在数据库实现自治后,类似这些的重复、简单的工作都可以被协助实现。而DBA更多的会倾向于更有价值的、与业务侧结合更紧密的工作,类似于数据库架构师、业务架构师的工作。
Q:数据库的服务降级有哪些表现形式?
A:数据库降级服务主要有几种方式实现。比如SQL限流,用户最直观的感受是当SQL超过了数据库的承载量后,会被拒绝,在日志中会看到一个自定义的错误反馈。因为SQL限流是在语义解析器之后、优化器之前进行识别,当并发度超过我们设置的每秒并发,并且特征相符,就可以在进入优化器前进行拦截。另一种降级可以通过账号和权限来限制;还有一种也可以通过DBbrain“实时会话”中提供的持续kill来实现。
Q:DBbrain是否在SQL优化方面提供SQL优化预估的时间消耗?并且在提供索引建议的同时,提供一个按钮点击即可通过onlineddl手动建索引?
A:DBbrain现在给出的是cost分析。选择cost分析的原因,是因为cost更能体现出SQL在计算开销、内存开销、磁盘读取数据开销的代价特征,而时间往往是不准确的。比如在一个很空闲的系统中,执行一些比较费时的操作,时间往往很快,但一旦数据量突增、系统环境发生变化后,同样SQL的时间会变长很多,甚至是从量变到质变。而cost分析,哪怕是十行的数据没有加索引都可以识别出来,就会减少只通过时间分析导致的误判和影响。
对于提供点击的onlineddl手动创建索引功能,应该会在后续提供给大家,也是后续比较重要的一项功能,帮助完成从发现问题、定位问题、优化问题到最后执行,这样一个全链路的优化闭环。
厦门商城系统开发 海外市场的个人消费需求激增,传统的外贸无法解决海外消费者的需求。跨境电商应运而生,可以更好地满足海外消费者的个性化消费者需求。跨境电商的概念和发展方向尚不清楚。以下就和卖家们分享跨境电商卖家如何运营店铺。 一、店铺定位和产品定位:这是新人最容…
码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.