阿里数据库智能优化技术
- 格式:docx
- 大小:741.39 KB
- 文档页数:33
阿里云大数据解决方案阿里云“数加平台”提供了大量的大数据产品,包括大数据基础服务、数据分析及展现、数据应用、人工智能等产品与服务。
这些产品均依托于阿里云生态,在阿里内部经历过锤炼和业务验证,可以帮助组织迅速搭建自己的大数据应用及平台。
奥远电子作为阿里云辽宁区授权服务中心,可为用户提供专业、高效和本地化的服务,包括运维、产品咨询、备案咨询、解决方案和架构搭建等一体化等,同时旨在帮助本地政府部门和企事业单位、个人了解云计算,使用阿里云服务,为用户提供网络、服务和计算资源等,从而减轻用户因业务量骤增而带来的IT压力,助力轻松上云。
基础产品:大数据计算服务(MaxCompute,原名ODPS)是一种快速、完全托管的GB/TB/PB级数据仓库解决方案。
MaxCompute为您提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决海量数据计算问题,有效降低企业成本,并保障数据安全。
分析性数据库(AnalyticDB)是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。
分析型数据库对海量数据的自由计算和极速响应能力,能让用户在瞬息之间进行灵活的数据探索,快速发现数据价值,并可直接嵌入业务系统为终端客户提供分析服务。
数据集成(Data Integration)是阿里集团对外提供的可跨异构数据存储系统的、可靠、安全、低成本、可弹性扩展的数据同步平台,为20+种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。
核心解决方案介绍:(一)个性化推荐根据用户的兴趣特点和购买行为,推荐用户感兴趣的信息和商品。
建立在海量数据挖掘基础之上,为用户提供完全个性化的决策支持和信息服务。
业务需求:1.研发成本高:对于一些中小企业,想做自己的个性化推荐业务,但是不知道如何收集数据,而且搭建和使用算法的成本较高,需要算法团队、算法框架等。
阿⾥CICD、DevOps、分层⾃动化技术原⽂地址:在互联⽹时代,产品快速迭代的重要性不⾔⽽喻。
不管是传统企业还是初创企业,在提升研发效能⽅⾯都有很强的需求,如果能使⽤⼀套对项⽬流程管理和专项⾃动化提效⼯具,来⽀持项⽬的快速迭代发布,实现24⼩时持续集成、持续交付整个流程,不但可以提⾼研发效率,还能增强产品的竞争⼒!1⽉12⽇,阿⾥巴巴旗下⼀站式研发提效平台——联⼿ InfoQ 在阿⾥巴巴西溪园区举办了⼀场旨在帮助研发团队提升研发效率的线下沙龙,邀请了阿⾥巴巴技术专家之岳、许晓斌、鲁⼩川和⼀佛,分享了阿⾥云效平台从⽣态规划,到 CI/CD 流程,再到⾃动化测试的整个技术实现过程,帮助参会者深⼊了解研发提效的迫切性和重要性,以及具体该怎么做的⼀些思路。
⼤型互联⽹⽆线团队的云上研发闭环之岳:阿⾥巴巴B2B事业群⾼级技术专家。
2011年加⼊阿⾥巴巴,担任阿⾥巴巴 B2B 研发效能平台和对外云效平台的产品负责⼈,阿⾥巴巴 B2B 技术风险负责⼈,技术质量和技术风险架构师。
精通研发质量效能平台产品,在敏捷研发、持续交付、研发团队管理等⽅⾯有丰富的经验。
本次演讲中他主要分享⼤型研发团队如何获得敏捷快速的研发过程?如何实现⾼透明化的研发管理等内容。
通常情况下,业务量增加之后,研发团队也会急剧扩张,但是这给管理带来了难度,发现原先那⼀套研发模式和研发管理,跟不上业务的发展。
之岳说,阿⾥巴巴内部的技术团队,也⾯临着同样的问题,像 B2B 技术部上千⼈的团队,⽀撑着⼏⼤核⼼业务,在⼏年前就发觉了纯⼈⾁管理、没有系统⽀撑的研发模式是不合适的。
为此,阿⾥巴巴建⽴了强有⼒的技术中台:综合管理和研发效能平台,主要⽬的是实⾏研发管理的平台化和透明化,提升研发⼯程效能。
⽬前 B2B 的技术中台已经⽐较成熟,很好的⽀撑着1000多⼈的研发团队。
阿⾥巴巴的使命是让天下没有难做的⽣意,所以衍⽣出的云效平台的使命就是让天下没有难做的研发。
大数据技术在物流行业中的应用——基于阿里物流随着互联网的不断发展,物流行业也迎来了全新的变革。
在这个变革的背景下,大数据技术成为了物流行业中极具竞争力的优势。
作为中国领先的物流服务提供商之一,阿里物流在大数据技术的应用方面取得了令人瞩目的成果。
本文将从阿里物流的角度出发,探讨大数据技术在物流行业中的应用,以及阿里物流在这方面的成功经验。
一、大数据技术在物流行业中的应用1. 路径规划与优化物流行业中最基本的问题之一就是如何规划和优化物流路径。
如果运输路径不合理,运输成本将大大增加,同时也会影响货物的送货速度和安全性。
利用大数据技术,可以收集并分析大量路线信息和客户订单数据,提供最佳的路线规划和优化方案。
例如,阿里物流利用大数据技术,为顾客提供智能路线查询服务,推荐最佳线路,优化里程和时间成本,以及降低运输风险。
2. 预测与响应物流行业的另一个重要问题是如何预测和应对不同情况。
物流企业需要预测客户需求和货物量,以便能够准确调度物流资源。
同时,物流企业还需要预测可能的运输风险和延误情况,以便能够提前采取应对措施。
通过大数据技术,物流企业可以将各种数据整合在一起,对各个方面进行精确测量和分析,提高物流响应速度和效率。
例如,阿里物流利用大数据技术,预测订单平均体积和质量,预测货物的大小和数量,以便更好地调度物流资源。
3. 渠道管理物流渠道管理是物流企业的关键问题之一。
物流渠道是物流企业的生命线,直接影响物流的成本和效率。
通过大数据技术,物流企业可以进行精细化管理,提高运输效率。
例如,阿里物流利用大数据技术,对服务网络进行分析,建立一个远程交互式的服务管理平台,提高了运输效率和客户满意度。
二、阿里物流的成功经验阿里物流是中国领先的物流服务提供商,目前拥有业务经验和技术积累丰富的团队。
阿里物流在大数据技术的应用方面取得了令人瞩目的成功经验。
1. 数据合规和安全大数据技术的应用需要充分考虑数据合规和安全问题。
阿里物流通过合规的管理体系和技术手段,为客户提供安全可靠的服务。
人工智能及其应用作业1您的姓名: [填空题] *_________________________________1. 某成衣厂过去一年共生产了10万件大衣,分为A/B/C三款。
质检部门采用抽样调查的方法,从中随机抽取出1000件进行检验,其中A款700件中5件不合格,B款150件中2件不合格,C款150件中3件不合格。
根据数理统计中的概念,下列选项中哪个是正确的? [单选题]A款可以被称为总体单位B款的150件成衣是抽样总体C款的150件成衣是10万件成衣的观测值过去一年生产的10万件产品是这次调查的统计总体(正确答案)答案解析:暂无2. 数据仓库一般都是存在层次架构的,比如可以分为ODS、DW、DM层,不同粒度的表,不同作用的表,一般会分布在不同的层级中,如下相关信息表存放在ODS层的有? [单选题]从源系统同步至数仓的粒度相同的一张登录日志表(正确答案)日期为天粒度的登录统计表从人的角度统计的登录情况表日期为月粒度的登录统计表答案解析:暂无3. 在数据仓库系统中,元数据是描述数据仓库内数据的结构和建立方法的数据,如下关于元数据说法错误的是? [单选题]元数据按其用途分为技术元数据和业务元数据技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库使用的数据业务元数据主要包括业务术语、信息分类、指标定义和业务规则等信息元数据也可以是业务数据,是业务行为的一种体现(正确答案)答案解析:暂无4. 某公司要对其生产的蓝牙耳机进行测试。
已知该产品的正品率为0.9,次品率为0.1。
一次仅测一个耳机,完毕后再测试下一个。
在第三次测试时才检测到次品的概率为。
[单选题]3×(0.9)^2×0.13×(0.1)^2×0.9(0.9)^2×0.1(正确答案)(0.1)^2×0.9答案解析:暂无5. 数据分析报告的结构包括标题页、目录、前言、正文、结论与建议和附录几个部分,一般情况下,分析背景,分析目的,分析思路的说明描述是在哪一个部分里面体现? [单选题]前言(正确答案)正文结论与建议附录答案解析:暂无6. 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支撑管理决策,”反映历史变化“指的是? [单选题]数据仓库中包含有大量的统计数据数据仓库的数据源来自各个业务系统数据仓库的数据一般情况下不做修改数据仓库随时间变化不断增加新的数据内容(正确答案)答案解析:暂无7. 在数据仓库里,建表的方式有好多种,可以直接使用as或者like的方式建表,如下建表语句,描述错误的是?create table tmp_a as select * from tmp_b; [单选题] tmp_b为分区表的话,则tmp_a也为分区表(正确答案)tmp_b为分区表的话,则tmp_a不为分区表tmp_b中所有的字段会在tmp_a中体现tmp_b中所有的数据会插入到tmp_a中答案解析:暂无8. 数据仓库中有如下一张分区表,关于此表,如下描述错误的是?create tabletmp_a(id int,name string)partitioned by (mon string,area string)row format delimited fields terminated by ','stored as textfile; [单选题]此分区表目前有月份、地域两级分区,可以直接再增加一个产品类型的第三级分区(正确答案)月份分区中,目前有201901、201902、201903三个分区,可以在此表上直接增加201904、201905等相关的月份分区月份分区中,目前有201901、201902、201903三个分区,可以直接将201902、201903的分区进行删除操作对于已经存在的分区(mon),分区名称可以被修改为mon_date答案解析:暂无9. 在SQL解析中,下列哪些操作先于SELECT操作? [单选题]GROUP BY(正确答案)ORDER BYSORT BYDISTRIBUTE BY答案解析:暂无10. SQL语法中,常用到分组和排序,下列SQL执行报错的是? [单选题]select region, sum(price) as total_price from sale_detail group by 1;select region, sum(price) as total_price from sale_detail group by region;select region, price from sale_detail group by region;(正确答案)select region, sum(price) as total_price from sale_detail group by region order bytotal_price;答案解析:暂无11. 阿里云大数据计算服务MaxCompute是阿里自主研发的产品,广泛适用于商业智能、数据分析、数据挖掘等领域,如下关于阿里云大数据计算服务MaxCompute 的描述中,错误的选项是? [单选题]阿里云大数据计算服务MaxCompute采用分布式跨级群技术搭建,可灵活扩展。
第1篇一、自我介绍1. 请用3分钟的时间,简单介绍一下自己,包括教育背景、工作经历、项目经验等。
2. 请谈谈你为什么选择加入阿里巴巴?你对阿里巴巴有哪些了解?3. 请谈谈你在过往的工作或学习中,遇到的挑战和解决方法。
二、基础知识1. 请解释以下概念:机器学习、深度学习、自然语言处理、计算机视觉。
2. 请描述一下以下算法的基本原理:线性回归、决策树、支持向量机、神经网络。
3. 请谈谈你对以下技术的了解:Python、TensorFlow、PyTorch、Keras。
4. 请解释一下以下概念:数据预处理、特征工程、模型评估。
三、项目经验1. 请详细介绍你在过往项目中负责的AI产品或项目,包括项目背景、目标、技术方案、实施过程、成果等。
2. 请谈谈你在项目实施过程中遇到的困难和挑战,以及你是如何解决的。
3. 请谈谈你在项目实施过程中,如何与团队成员沟通协作,以及如何协调各方资源。
4. 请谈谈你在项目实施过程中,如何评估项目效果,以及如何改进项目。
四、AI产品设计与开发1. 请谈谈你对AI产品设计的理解,以及在设计过程中需要考虑的因素。
2. 请谈谈你对以下AI产品设计的了解:推荐系统、语音识别、图像识别、自然语言处理。
3. 请谈谈你在AI产品开发过程中,如何进行需求分析、技术选型、开发流程等。
4. 请谈谈你对以下技术的了解:大数据处理、分布式计算、云计算。
五、行业动态与趋势1. 请谈谈你对当前AI行业发展趋势的理解。
2. 请谈谈你对以下技术的了解:自动驾驶、智能语音、智能机器人。
3. 请谈谈你对AI技术在各行业应用的看法,以及你认为哪些行业最具潜力。
4. 请谈谈你对AI伦理和安全的关注,以及你认为应该如何应对这些问题。
六、案例分析1. 请以以下案例为例,分析AI产品在其中的应用和作用:案例一:电商平台推荐系统案例二:智能语音助手案例三:自动驾驶技术2. 请谈谈你对以下案例的看法:案例一:AI技术在医疗行业的应用案例二:AI技术在金融行业的应用案例三:AI技术在教育行业的应用七、综合素质1. 请谈谈你的职业规划,以及你希望在阿里巴巴实现的目标。
目录大数据产品框架数据计算平台数据加工与分析服务与应用引擎大数据应用场景记录 统计大规模计算GB计算复杂程度数据量TBPB网站独立数据 集市论坛小型电商小型EDW BI/DWMPP淘宝支付宝 CRMERPHPC语言识别影音识别图像识别关系网络图像比对 行为DNA刷脸精准广告大数仓消费预测征信搜索排序EB深度学习大数据产品框架应用加速器分析引擎 推荐引擎 兴趣画像分类预测规则引擎 标签管理ID-Mapping计算引擎数据加工和分析工具离线计算 流计算 数据开发 ETL 开发调度系统机器学习分析型数据库数据可视化工具数据采集CDP (离线)数据服务和应用引擎数据管理数据 地图数据 质量智能 监控阿里云大数据集成服务平台是阿里巴巴集团统一的大数据平台,提供一站式的大数据开发、管理、分析挖掘、共享交换解决方案,可用于构建PB 级别的数据仓库,实现超大规模数据集成,对数据进行资产化管理,通过对数据价值的深度挖掘,实现业务的数据化运营。
目录大数据产品框架数据计算平台数据加工与分析服务与应用引擎大数据离线计算服务 MaxCompute离线计算流计算分析型数据库大数据计算服务(MaxCompute ,原ODPS)是由阿里巴巴自主研发的大数据产品,支持针对海量数据(结构化、非结构化)的离线存储和计算、分布式数据流处理服务,并可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务,应用于数据分析、挖掘、商业智能等领域。
存储易用安全计算●支持TB 、PB 级别数据存储 ●支持结构化、非结构化数据存储●集群规模可灵活扩展,支持同城、异地多数据中心模式●支持海量数据离线计算●支持分布式数据流式处理服务 ●支持SQL 、MR 、Graph(BSP)、StreamSQL 、MPI 编程框架 ●提供丰富的机器学习算法库●支持以RESTful API 、SDK 、CLT 等方式提供服务●不必关心文件存储格式以及分布式技术细节●经受了阿里巴巴实践检验●数据存储多份拷贝 ●所有计算在沙箱中运行MaxCompute 的优势和能力高效处理海量数据1、跨集群技术突破,集群规模可以根据需要灵活扩展,支持同城、异地多数据中心模式2、单一集群规模可以达到10000+服务器(保持80%线性扩展)3、不保证线性增长的情况下,单个集群部署可以支持100万服务器以上4、对用户数、应用数无限制,多租户支持500+部门5、100万以上作业及2万以上并发作业安全性1、所有计算在沙箱中运行2、多种权限管理方式、灵活数据访问控制策略3、数据存储多份拷贝易用性1、开箱即用2、支持SQL、MR、Graph、流计算等多种计算框架3、提供丰富的机器学习算法库4、ODPS支持完善的多租户机制,多用户可分享集群资源自主可控经过实践验证1、阿里巴巴自主研发2、整套平台经受了阿里巴巴超大规模数据应用的实践验证离线计算流计算分析型数据库离线计算流计算分析型数据库自主可控•使用Hadoop组件开发受制于开源社区,最多只能维护一个分支•开源社区组件太多,版本问题,打包问题,升级维护成本太高Hadoop核心技术架构发展缓慢•一些技术阿里要比开源社区更早实现(如分布式文件系统多master实现等)没有一个Hadoop发行版可以满足阿里巴巴的业务场景•如异地多数据中心、数据安全性等要求Hadoop社区分化严重,发展状况有隐忧当前Yahoo、Facebook等公司使用的都是自己的私有版本流计算 StreamCompute离线计算流计算分析型数据库●阿里云流计算(StreamCompute)是一个通用的流式计算平台,提供实时的流式数据分析及计算服务●整个数据处理链路是进行压缩的,链路是即时的,完全以业务为中心,数据驱动解决用户实际问题实时ETL 监控预警实时报表实时在线系统对用户行为或相关事件进行实时监测和分析,基于风控规则进行预警用户行为预警、app crash预警、服务器攻击预警数据的实时清洗、归并、结构化数仓的补充和优化实时计算相关指标反馈及时调整决策内容投放、无线智能推送、实时个性化推荐等双11、双12等活动直播大屏对外数据产品:数据魔方、生意参谋等低延时高效流数据处理,根据不同业务场景的时效性需要,从数据写入到计算出结果秒级别的延迟高可靠●底层的体系架构充分考虑了单节点失效后的故障恢复等问题,可以保证数据在处理过程中的不重不丢, Exactly-Once 语义保证●通过定期记录的checkpoint数据,自动恢复当前计算状态,保证数据计算结果的准确性可扩展计算能力和集群能力具有良好的可扩展性,用户可以通过简单的增加Worker节点数量的方式进行水平扩展,可以支持每天PB级别的数据流量开发方便●SQL支持度高:标准SQL,语义明确,门槛低,只需要关心计算逻辑,开发维护成本低●完善的元数据管理:SQL天然对元数据友好,SQL优化支持离线计算流计算分析型数据库功能特性BI分析的发展方向离线计算流计算分析型数据库分析型数据库概述离线计算流计算分析型数据库分析型数据库(Analytic DB),是一套实时OLAP(Realtime-OLAP)系统。
国产数据库技术发展第一部分国产数据库技术概述 (2)第二部分发展历程与关键节点 (4)第三部分主流国产数据库产品 (6)第四部分核心技术突破与创新 (10)第五部分行业应用案例分析 (14)第六部分与国际技术的比较分析 (17)第七部分未来发展趋势与挑战 (19)第八部分政策环境与市场机遇 (22)第一部分国产数据库技术概述国产数据库技术发展随着信息技术的迅猛发展和国家大数据战略的推进,国产数据库技术在近年来取得了显著进步。
本文将简要概述国产数据库技术的发展现状,分析其面临的挑战与机遇,并展望未来发展趋势。
一、国产数据库技术概述国产数据库技术是指在中国本土研发、生产的数据库管理系统及相关技术。
这些系统主要服务于政府、企业和个人用户,用于存储、管理和处理各种类型的数据。
国产数据库技术主要包括关系型数据库和非关系型数据库两大类。
1.关系型数据库关系型数据库(RDBMS)是一种以表格形式存储数据的数据库系统,它通过 SQL 语言进行数据的增删改查操作。
国产关系型数据库如OceanBase、TencentDB MySQL、华为 GaussDB 等,它们在性能、可扩展性、高可用性等方面均有优异表现,部分产品甚至达到了国际领先水平。
2.非关系型数据库非关系型数据库(NoSQL)是一种基于键值对存储的数据库,适用于大规模数据存储和高并发访问场景。
国产非关系型数据库如TencentDB Cassandra、华为 OCEANSTOR 分布式文件系统等,它们在大数据处理、实时分析等领域展现出强大的能力。
二、国产数据库技术面临的挑战与机遇尽管国产数据库技术在许多方面取得了突破,但仍面临一些挑战:1.核心技术自主可控:国产数据库需要进一步突破关键技术瓶颈,提高自主研发能力,降低对外部技术的依赖。
2.生态系统建设:国产数据库需要构建完善的生态系统,包括开发工具、应用服务、安全维护等方面的支持。
3.市场认可度:国产数据库需要在市场竞争中树立品牌信誉,提高用户信任度和接受度。
阿里数据库智能优化技术本文介绍基于阿里的场景和规模所做的一些思考和实践。
首先在阿里对数据库优化服务的诉求,大家在数据库性能优化方面都有很多的经验教训,不同公司对优化的具体做法也不太一样。
在方式上,大部分企业应该还是重人工模式,就是由数据库能力比较强的人,比如DBA,来解决数据库性能问题。
但阿里今天的数据库规模非常大,不管我们有多少DBA,我们的人员增长速度都无法跟上业务发展的速度,单纯依赖DBA已经无法满足业务发展需求。
第二方面分析CloudDBA是如何做的,里面涉及到哪些技术,希望把这些技术分享给大家。
如果大家所在的公司也在做类似的事情,希望能够提供一些参考和帮助。
第三方介绍目前正在探索的一些事情。
现在人工智能技术比较火,数据库相对来说是比较传统的领域。
如果我们将机器学习、深度学习这样的技术引入到数据库领域,它到底能做些什么,具体到数据库优化领域又能做什么,这是我们正在探索的一些事情。
一、阿里数据库优化服务诉求1、业务诉求首先从整个阿里数据库的角度看一下对于数据库优化服务的业务诉求,这也是我们做这个产品最大的驱动力。
(1)服务产品化。
阿里业务发展速度远远超过了DBA团队发展的速度,单独依靠DBA重人工支持模式变得越来越困难,因此我们在几年前开始尝试通过产品来完成DBA人工做的一些工作。
通过产品解决DBA人工服务的扩展性问题,是我们最直接的诉求,希望能把DBA人工服务产品化。
(2)全局规模优化。
站在全局角度来看,数据库规模迅速增大的同时也带来了巨大的成本压力。
成本这块怎么理解呢?只要业务有需求,理论上可以通过增加更多的机器来满足业务需求。
但从另外一个角度来讲,这些机器是不是一定要加?是不是有一些机器可以通过优化节省下来给新的业务服务?当规模非常大时,所做的一小点规模化优化,所节省的成本可能都是很可观的。
因此我们需要有全局规模优化的能力,仅仅一个数据库实例内部做的优化都是一些局部优化,以全局角度来看是不够的。
(3)主动诊断。
从运维的角度来看,阿里同其它公司一样,就是要尽量避免故障的发生。
在阿里的业务场景下,大部分业务跟数据库有着非常紧密的关系。
数据库一个微小的抖动,都可能对业务造成非常大的影响,所以如何让数据库更稳定是非常重要的业务诉求。
比如一个最常见的情况,有很多线上SQL性能是有问题的,这些SQL会给业务稳定性带来一定的风险。
那么,我们能不能通过产品主动对线上有问题的SQL进行主动诊断,提前做优化,而不是SQL引起故障后才去优化。
(4)智能异常发现。
线上业务负载不断地变化,业务行为、用户行为也在不断地变化。
传统基于阈值设置报警的方式无法可靠、及时地发现数据库故障或者异常。
如何可靠地去发现数据库异常,甚至是提前预测到故障的发生并进行及时干预,是有很强的业务需求的,但同时也有非常大的技术挑战,尤其是在阿里这么大数据库规模场景下。
(5)容量预估。
还有一些业务诉求是容量预估的需求。
比如什么时候需要扩容,如何更精准地对数据库容量做出预估,这些后面我会稍微展开一下。
2、用户诉求另外一部分诉求是使用数据库这些人的诉求,也就是我们的开发人员。
每个公司数据库服务方式有所不同。
这里我列了一些开发人员经常会问到的一些问题,这些问题背后的诉求让我们思考我们的产品站在开发者的角度,要解决什么问题。
在业务发生异常时,需要快速定位到整个链路到底哪块出了问题。
之前DB对于开发者来说是一个黑盒,不管是信息透明方面,还是大家对数据库领域的知识方面,对于DB的了解程度可能都不够,不知道DB是什么状态,发生了什么问题。
具体来讲用户诉求主要有:(1)信息透明,自助优化。
我们期望用户能够自助发现和解决数据库的性能问题,并非发现问题先去找DBA,这样整个流程会比较长,时间成本也比较高。
但做到自助化,首先用户能够全面了解数据库的运行情况。
(2)持续优化。
只要业务在线上运行就会不断的变化,业务负载不断变化、用户行为也会不断变化。
所以数据库优化是个持续的过程,并不是今天发现一个问题解决了,以后就不出现问题了。
尤其是互联网的应用,持续优化尤其重要。
(3)量化跟踪,流程闭环。
开发人员经常会问到一个问题,上次帮他做的优化,结果到底怎么样。
我们知道并不是每个优化都是实际有效的,因为很多优化方案是基于当时的信息和场景做的一个判断,实际优化结果只有当应用之后才能真正去做评估、做衡量,所以我们要提供量化跟踪和评估的能力。
另外,我们期望整个优化流程,从发现问题到最终解决问题在产品内能够闭环,开发人员能够自己完全自助化走完整个流程,而不需要DBA的参与。
流程闭环也是产品必须具备的能力。
(4)输出产品,而不是人。
不断有新的业务上线,而我们的DBA就这么多人,并且每个人有不同的侧重。
对于一些快速发展的业务,在早期我们可能没有DBA去做特别支持的,但这些业务的数据库反而是容易出问题的。
开发人员如果能够通过产品解决问题,而不是凡事都去找DBA,解决问题的效率会更高。
将我们DBA的能力通过产品进行输出,更好去支持我们的业务。
未来数据库优化服务会从自动化发展到智能化,这是我的判断。
今天仍然有很多问题是解决不了的,比如精确的容量预估,智能的异常发现,故障提前预警等。
现在我们有非常多的数据,也有数据加工分析的技术,所以我们开始进行一些探索,通过数据分析和机器学习等技术手段来解决之前解决不了的问题。
比如最简单的容量预估,每年都会做预算,做容量预估。
至少我现在还没有看到特别多的公司去用很科学的方式,完全基于业务目标以及历史数据的分析来做容量预估。
很多时候容量预估是靠拍脑袋决定的,但是今天有了大量的数据和加工数据的技术手段,我们是不是可以做更精准的容量预估。
举这个例子来说明一下,未来很多的优化应该向智能化方向去思考,去探索。
CloudDBA在阿里大概是这样的一个发展历程,我们今天还处于自动化阶段,但同时也有一些智能化的实践。
未来我的判断是一定向智能化去走,后面会在这方面尝试更多的探索。
说了这么多,CloudDBA到底是什么?这有一句话:“CloudDBA是一个数据库智能优化产品,面向开发人员提供自助化诊断优化服务,致力于成为用户身边的数据库专家。
”CloudDBA不是给DBA开发的工具,从一开始我们的用户定义就很明确。
我们是面向使用数据库的开发人员提供这种自助化的诊断优化服务,我们的用户不是DBA,而是真正使用数据库的开发同学。
面向DBA和面向开发同学对产品来讲是完全不同的概念。
比如开发同学没有太多数据库背景知识,我们即使做简单的信息透明,也需要做一些翻译,能够让开发同学理解。
用户定义不同,数据的加工、分析以及最终的呈现,都是完全不一样的。
接下来讲一下CloudDBA到底能做什么。
这是我们简化版的整体架构,涉及的面比较广。
从下到上分为四层:(1)最下面是我们的采集层。
对所有数据库进行实时的秒级数据采集,包括性能指标、日志数据、SQL流水、DB内部的一些信息等。
(2)采集完之后数据到达计算层,计算层分两大块。
一部分是实时计算,对于SQL流水、监控指标等,都会做实时计算和展示。
另一部分是离线分析,比如性能基线、读写热点、统计报表等。
(3)再往上就是数据库诊断服务层。
如果大家做过系统的数据库优化,就清楚数据库优化会涉及到很多方面。
最常见的就是SQL优化,SQL是不是很慢、有没有走到最优路径、SQL写法是否合理等等。
SQL相关问题是我们开发经常会遇到的。
还有其它一些问题,比如说空间、会话、锁、安全、配置等,CloudDBA能够对DB的每一个方面提供相应的专家诊断服务。
(4)最上面是接入层,在阿里内部通过企业数据库服务平台iDB作为入口向开发同学提供数据库优化服务。
接下来跟大家分享一下我们做这个产品的一些产品设计原则。
如果大家也在做类似的产品,希望能够给大家一些参考。
之前我们数据库优化主要是DBA来做,但DBA人工优化不具备扩展性,CloudDBA第一个设计原则就是要提供自助化服务,希望整个优化过程只有开发参与,并且整个优化流程能在CloudDBA里实现闭环。
由于业务负载会不断地变化,需要对所有线上数据库进行持续的主动诊断,及时发现和解决数据库性能问题。
另外,这个产品需要有全局的视角,能够从全局角度发现规模优化点,具备规模优化能力,并且能够量化规模优化的收益。
还有最后两点非常重要,首先就是数据驱动。
从我个人理解,今天要做这样一个优化产品,首先要有足够的数据,然后用数据分析和挖掘的技术手段,再结合数据库领域知识,给出更合理的诊断优化建议。
智能化是我们对于数据库优化产品未来发展方向的判断,也是我们一直在坚持探索的。
时间关系今天无法全部展开,接下来重点展开几个方面。
一个是CloudDBA的SQL优化怎么做的,还有一个是空间优化,另外就是CloudDBA全量SQL采集和分析。
最后会分享一下我们在智能化方向的探索。
SQL诊断先说一下SQL优化,不知道大家平时做SQL优化时是怎样的流程。
大家回想一下,你是怎么发现哪些SQL需要优化的?要知道优化什么,为什么要优化它,然后再考虑怎么去优化。
还有一个问题是优化完之后效果到底怎么样,是不是真的有效。
整个优化过程不管是开发还是DBA做,都需要形成一个闭环。
CloudDBA实现了这么一个闭环。
第一步决定哪些SQL需要优化,第二步是如何优化,第三步是优化后效果如何,要做量化跟踪,确认是不是有效。
如果发现没有效果,再次重复这个优化流程,直到问题被解决。
这是SQL优化的大概流程。
我们实现了一个类似MySQL优化器的What-if optimizer。
举个例子说明一下What-if optimizer是什么。
比如一条SQL查询有10个可选的访问路径,MySQL优化器目标是要从这10个路径选择访问代价最低的一个路径。
而What-ifoptimizer要做的事情是如何规划出第11条路,让这条路比现有的10条路都快。
难点在于这条路是不存在的,这个路怎么修,修完之后是不是真的更快,这些是What-if optimizer要解决的问题。
比如一个常见的SQL优化手段是索引,那建什么样的索引会比当前所有执行路径都好?这是我们的SQL优化引擎要解决的问题,也是我们产品比较核心的部分。
大家可以看一下这个流程,前面几步跟MySQL或者其它优化器类似,但后面的候选索引生成,代价评估,优化建议合并等都不一样。
我们的输入是一条SQL或者一个SQL workload,输出是对应的优化建议,比如新建索引、SQL改写等。
SQL优化最关键的是要有全面准确的统计信息作为输入,另外就是它不能是规则式的,因为SQL的执行路径与数据分布有很大的关系。
同样一条SQL,数据分布不一样,实际执行路径可能会完全不一样。
SQL优化这块有几个关键点需要强调一下:(1)全局视角。