共计 5217 个字符,预计需要花费 14 分钟才能阅读完成。
在 2022 世界人工智能大会(WAIC)上,腾讯云数据库技术负责人程彬为大家分享了数据库与 AI 相结合背地的故事。在专场《当数据库遇上 AI》中,程彬基于腾讯云数据库在 AI 智能化的摸索与实际,分析数据库与 AI 交融背地的技术关键点,为产业界提供前沿解决方案。以下为演讲实录:
点击观看完整版直播回放
线上、线下的敌人们,大家好,我是腾讯云数据库工程师程彬,十分荣幸可能在这个期间跟大家一起交换数据库技术。明天我代表咱们团队,和大家一起谈谈 AI 和数据库联合的技术思考,并联合腾讯云数据库的实战经验分享一下 AI 工程化落地实际。
云数据库面临的新挑战
随着数字化转型的深刻,越来越多的企业生产从线下到线上,大量的数据存储、查问就须要应用到数据库。从腾讯云数据库的倒退状况也能看出市场对于数据库需要的一直增大。其实,规模增长的背地也给云数据库带来了新的挑战。
对云厂商来说,大规模经营下的可用性、老本和经营效率遇到了空前的挑战。比方,可用性上,百万数据库实例规模下如何升高故障相对次数,这里就对可用性指标有更高的要求;怎么能高效率服务好几十万家企业,帮忙他们治理好百万规模的数据库?怎么充分发挥规模经营效率,去一直的帮忙企业降低成本?
另外一方面,对企业来说,在数字化转型过程中,须要开发大量的企业 IT 零碎,这里就有 开发效率、经营效率和老本的问题。比方,开发人员怎么能疾速的写出高效的 SQL 语句?运维人员怎么治理越来越多的云上数据库?面对线上业务负载潮汐效应,怎么实现最正当的资源投入?
总的来说,规模的快速增长,传统的经营服务模式曾经无奈满足业务需要,数据库须要进一步智能化技术升级。
方法论降级
咱们进一步深刻思考发现,在传统数据库工程中无奈完满的解决下面的问题。
传统数据库工程是软件联合硬件的办法来 design 数据库,在这种设计模式下,数据库能很好的解决事后设定好的问题 。比方,通过 if else else 这样枚举形式,去解决各种咱们能想到的异样分支。但在大规模经营下,咱们发现约 2.29% 的异样场景难以靠人工疾速发现,这些小概率极其故障场景,随着规模的增大,故障爆炸半径会一直放大。咱们团队想到了 AI 的频率模式来开掘, 在软件、硬件的根底上,联合 AI 来从新 design 数据库,实现零碎的自剖析和自演进。
于是咱们降级了数据库构建的方法论,从传统的软硬件设计演进到软硬件 +AI 三位一体的云原生自治数据库设计办法。
云数据库背地的三角关系
有了新的方法论之后,咱们该怎么去具体构建云原生自治数据库呢?
咱们先看看云数据库背地的一个三角关系:客户应用云厂商提供的服务资源来开展业务流动,云厂商利用和治理硬件资源,为客户提供服务。它背地有三个效率,零碎效率、经营效率和业务效率:
- 业务效率,指怎么帮忙业务去疾速开发数据库应用程序,这外面就须要能尽可能简化开发人员应用数据库门槛。例如,不同程度的开发人员写出不同效率的 SQL 语句,然而数据库都能以最优的效率返回查问后果。
- 经营效率,云厂商怎么保障大规模下经营的效率。例如:当初系统故障了,怎么疾速排查和定位故障的起因并且疾速复原?
- 零碎效率,零碎效率重点思考两个问题,一是如何把 CPU 内存、硬盘这些资源全副用进来,不要闲置;二是,用雷同的资源如何能解决更多的申请。
咱们就是以极致效率为指标来打造云数据库的自治能力。
业务效率
为什么须要数据库参数智能调优服务?
传统数据库参数调优有三个问题:
- 调参效率低:整个过程需手动操作,筹备数据、压测、调整参数等多轮操作,过程繁琐;
- 人力老本高:往往依附专家教训,人时老本很高;云上的一些用户可能短少专职运维团队和 DBA;
- 调参难度大:数据库参数很多,业务的数据库设计和负载也各不相同;
腾讯云自治数据库智能参数调优服务 CDBTune,是一个端到端的一站式参数调优服务,无需人为染指,基于深度强化学习等 AI 技术实现,可依据场景主动摸索优化参数。同时在调优速度上也实现了冲破,通过积淀专家教训和退出遗传算法等实现,调优速度能够通过减少并发度实现准线性的晋升,调优工夫大幅度缩短。
目前 CDBTune 共反对六千多种调参场景,自 5 月份灰度上线以来,总计反对 300+ 实例调优。场景化调优 TPS 性能晋升最高 300%,均匀晋升 43%。调优时效从原来人工破费几天缩短到两小时以内;对于预调优的场景,调优工夫在 10 分钟以内。
因为数据库畛域的非凡性质,ML 工程化落地案例较少,智能参数调优服务须要实现从 0 到 1 的冲破。为此须要解决三个难点:
- 微小的参数空间:比方,MySQL 系数据库,400+ 参数带来的指数级组合,参数空间微小;
- 耗时简短:参数空间微小也带来了调优耗时费劲,须要大幅度晋升调优效率,取得更好的调优成果;
- 基于用户负载的调优:场景化调优只是解决了通用场景调优,因为每个业务 workload 都有不确定性和各自特色,因而只有反对了基于用户负载的调优,能力真正意义上实现参数最最优,笼罩实例新购、疾速迭代和稳固运行阶段;
为了解决参数空间微小的问题,咱们应用了 深度强化学习算法 DDPG。
强化学习是机器学习算法中的一种,它通过学习如何把以后的情境映射成动作,使收益最大化。它通过已有的教训去学习,并且以肯定的代价去摸索未知的环境,在两者之间进行一个衡量。
因为数据库的状态(性能指标)和它的动作空间(参数配置的组合)是十分大的,通过表格来学习是不事实的,为此须要引入深度强化学习的算法,通过神经网络进行拟合。通过屡次试验比拟,这里咱们抉择了 DDPG,深度确定性策略梯度算法。
其次,为了晋升训练速度,咱们在模型里首先 退出了专家教训和遗传算法(GA)进行预热。基于专家教训,能够依据实例的规格、负载的类型等条件,取得绝对较好的参数举荐。而后应用遗传算法,通过抉择、穿插和变异,进一步取得一批高质量样本。这两种办法能够放慢整个调参的速度。
同时,咱们应用了 并行架构。通过腾讯云数据库提供的克隆实例性能,咱们能够批量取得雷同的训练实例。通过并行训练,能够大大缩短训练所需的工夫。
咱们在不同的数据库配置和不同的负载下,做了很多测试,CDBTune 的成果都比拟不错。这里列出了其中一个场景的调优成果,在某些状况下 CDBTune 根本能达甚至超过一个资深 DBA 的程度。在 sysbench 和 tpcc 的场景下,吞吐的晋升个别在 10%-50% 左右。
在去年年底腾讯外部举办的数据库性能调优较量中,CDBTune 作为参赛选手,最终性能取得了第二名的问题,与人类选手的最优问题相差不大,同时在调优工夫上有微小的劣势。
场景调优在业务新上线和疾速迭代阶段,能够帮忙业务高效调优。然而场景依然无限,不能齐全符合业务需要。在业务稳固运行阶段,须要基于用户负载进行调优。
负载回放自身是一个难题,包含负载的并发解决,回放完之后的数据恢复等,这些问题导致咱们想要屡次执行负载变得艰难。另外,有些时候心愿灵便的管制负载的压力,在不同压力场景下进行调优。
咱们应用 负载仿真 来解决这个问题,通过对原始负载进行抽象化与再现,尽可能的再现业务负载特色。
- 通过提取事务和 SQL 模板,保留负载基本特征;
- 依据数据类型和数据分布生成测试数据,保留数据特色的同时进行数据脱敏;
- 依据 SQL 的数据拜访剖析,统计数据拜访散布,重现数据拜访热点;
- 按需调整负载,自定义数据量和测试压力;
咱们目前实验室环境能够达到 80% 的仿真度。通过负载仿真,能够尽可能做到与原始负载近似,同时又能够按需自定义负载的压力等属性,并且能够重复执行。由此,也能够在多种场景下进行利用,比方:
- 性能上线前, 首先在咱们生成的不同规模的负载下进行验证, 判断其可能存在的瓶颈;
- 参数调优、索引举荐等自治数据库办法利用时, 通过咱们生成的负载进行举荐, 以较低的代价实现针对用户负载的优化;
以上智能调参技术别离收录在 2019 和 2022 年的数据库顶会 SIGMOD 的论文中。
咱们最新的研究成果在数据库顶级会议 SIGMOD 2022 曾经发表,介绍了算法实现、模型设计和成果评估等。大家感兴趣能够去官网查阅相干材料,也能够在腾讯云数据库公众号上查阅哦,传递门见下,点击即可查看详情哦:
【2022SIGMOD】面向个性化需要的在线云数据库混合调优零碎 | SIGMOD 2022 入选论文解读
【2019SIGMOD】AI 调参新纪元,腾讯数据库论文被 SIGMOD 收录
经营效率
大规模经营发现,大略有2.29% 的故障场景惯例探测无奈完满笼罩,海量场景下这个问题也会是灾难性的。
例如,在一个电商客户直播带货时候,因为拨测无奈及时发现数据库节点异样,就有可能导致客户这次流动的失败。
为了更好的保障业务连续性,做到故障切换工夫 P99=20 秒,咱们从惯例探测切换的形式降级到全景化的业务连续性保障。
- 故障前,通过 预测负载变动、硬件故障检测 等发现异常提前解决;
- 故障中,DB、OS 和硬件的实时检测,实现秒级的准确故障发现;
- 故障后,基于数据库代理的连贯放弃和事务放弃能力,连贯不中断,事务不回滚,切换过程简直能够做到客户无感知;
- 在故障诊断能力上,联合客户负载变动和多级检测信息,生成全链路 诊断报告和根因剖析,晋升运维效率并继续发现优化更多异样场景;
基于全景化业务连续性的能力,咱们的 RTO 复原时长,从 19 年到当初缩小了 74%。举个例子:通过腾讯云数据库 SHIELD 异样诊断系统,咱们生成里实例的全链路诊断报告和根因剖析。
上图中的实例产生了拨测不通的状况,在短时间内产生了屡次 HA,通过对实例的监控、日志等指标多维关联剖析,失去了故障的根因剖析 – 实例高负载。同时整个切换过程以及切换的工夫是合乎预期的,合乎 SLA 要求。
腾讯云数据库在日常经营中,会继续对实例的衰弱状态进行检测。目前,日均检测出超过一千万次的异样事件,亚健康实例占比约有 15%,继续高负载实例约 1%,资源超用的实例占比约 10%。同时,因为各种异样也带来了大量的工单,比方高负载、高并发和资源占用过多的征询等。
如此多的异样,显然不能靠人力剖析。为此咱们构建了 实时的、多场景笼罩、多维度智能剖析和解决的闭环能力:
- 通过秒级的日志和监控采集能力,实时发现异常;
- 在动态和动静阈值检测的根底上,联合趋势、偏移、周期性、尖刺、3σ 等算法,精确检测异样;
- 基于规定的剖析,比方慢查问、SQL 审计和沉闷会话的 TOP 剖析,找到大 SQL、慢 SQL 等;通过监控指标的相关性剖析,找到与异样相干的指标;通过常见场景的诊断门路,间接定位到根因;
- 基于学习的剖析,通过聚类、人工标注和神经网络的学习,联合专家教训,学习一些异样的 pattern 并给出根因剖析;
目前异样检测能够做到在 30 秒内发现问题,在 1 分钟内给出相应的剖析后果和优化倡议,异样解决的工夫大幅降落 80%。举个例子:
- 高负载、高并发问题,能够通过异样诊断闭环,被动推送优化倡议,比方优化参数,开启线程池等;
- 通过规则化配置,能够疾速取得经营过程中的整体统计(如资源的不合理应用和调度的状况)发现经营过程中的问题。
零碎效率
数据库次要应用的机器资源有 CPU、内存和磁盘,传统数据库通常须要在购买时选定 固定的规格 ,客户必须为峰值性能买单。而云原生数据库 TDSQL- C 通过计算存储拆散架构,将存储池化,计算无状态化,实现了 极致弹性能力,因此客户能够为理论应用买单。
在加强弹性能力的同时,也带来了网络延时。所以,云原生数据库通常会引入RDMA、AEP 等新硬件,并通过采纳软硬联合的形式,防止分层架构引入的性能开销。
此外,TDSQL-C 突破传统固定规格的产品状态,打造依据业务的负载对计算资源进行主动伸缩,依照理论应用计费,不应用不计费的serverless 状态。为了实现计算资源的主动伸缩,数据库在启停方面做了很多优化,保证系统能在几秒内实现停机和重启复原,晋升极致业务体验。目前咱们联合微信小程序的生态,为成千上万的客户提供服务。
为了更充沛的应用资源,在应用传统的 BestFit 算法进行装箱和调度的根底上,同时也思考了实例以后和将来对资源的应用状况。通过 AI 算法 对业务负载进行正当预测,实现更加智能的 Serverless 产品状态。
将来瞻望
将来咱们持续摸索架构的先进性、极致的软件工程能力。与此同时,咱们会深刻理解客户业务场景,把架构能力、软件工程能力笼罩到更多的业务场景中。
在智能技术实际上,咱们持续践行 软硬 AI 三位一体化的自治数据库:
- AI for DB,摸索 AI 与数据库的有机联合,实现基于学习的数据库组件
内置业务优化组件,如基于负载的智能索引治理,负载优化等;
查问优化组件,如基数预计、代价预计、谓词剖析、学习型优化器等;
数据组织形式,学习型索引,智能冷热数据分层,智能压缩等; - DB for AI,内置机器学习,在数据库中实现近数据的机器学习算法执行,帮忙所有机器学习的开发者能有一个更平安和突变的基数设施,赋能 AI 工程化利用
执行更快、更平安(数据不出库)、老本更低;
简化 AI 工程化利用复杂度,进一步赋能产业;
让咱们刮目相待!