甲骨文副总裁谈性能优化:百倍和千倍的性能提升才值得兴奋
3月28日,Oracle Real World Performance(RWP)团队在北京广播大厦酒店成功举办了RWP China Tour北京站的技术分享活动! 这是继2015年8月技术大师 Thomas Kyte归隐之后,RWP 团队第一次公开亮相! 会议由ACOUG主办,在云和恩墨的支持以及甲骨文公司的协助之下取得了圆满成功!
大会期间,Andrew大师和AWR之父Graham接受了记者采访,首次对外讲述自己的职业生涯和心路历程,分享了他们在中国的感受和期待,并就当前IT系统现状做了深入分析,表达了RWP团队的使命和宗旨,同时也对广大技术爱好和追求者给出了中肯的建议和指导。
以下是采访内容。
记者:ACOUG 小X,嘉宾: Andrew Holdsworth, Graham Wood
小X:首先欢迎二位再次来到中国,我想今天现场的朋友,可能对你们早有所耳闻,很多朋友对你们事业的成就仰慕已久,今天也是慕名而来。不过我们也很想了解,您当时是如何加入Oracle公司,进而加入RWP团队的呢?愿意跟我们分享一下吗?
Graham:我当时在一家软件公司上班,我们正在做一个项目,需要使用到数据库,我们那时候对数据库领域的了解并不多,偶然发现了有一个叫Oracle的数据库,那时我记得是1984年,很久以前了。那时候Oracle并不出名,刚发布了第二个版本,我们的软件项目就使用了Oracle数据库。当我们公司后来需要再次开发这个项目的时候,我突然有个想法,我不想再继续在这里工作下去了,我想要学习Oracle数据库,学习如何使用SQL语言来管理数据,于是我就离开了之前的公司加入了Oracle。
小X:加入Oracle的确是不错的选择,虽然当时还不出名,但如今发展这么快,可见您当时所做的决定是非常明智的。Andrew,您跟Oracle的渊源是如何开始的呢?
Andrew:我加入Oracle 比Graham晚了两三年,但仅仅在那两三年,Oracle的发展非常快,两三年的变化是巨大的,因此我事实上是加入了一家更大的Oracle公司。我当时也是在一家软件公司工作的,在开发一个应用程序,当我接触了Oracle数据库之后,我在想,这门技术在今后的十年里一定会有很大的发展空间,于是我也转向了Oracle。
小 X:您当时因为看到Oracle的前景所以加入,我可以说这些年来,您对于工作都是有明确的方向和计划的吗?
Andrew:坦白说,并没有,别说这些年,事实上我可能连我下个星期要做什么也不是很清楚。
Graham:要一直知道自己的方向和计划是很难的,对于我们来说,当时都是被Oracle技术所吸引,对于我来说,更像是一种,我先在这方面做几年,然后看它的发展如何。
小X:事实上Oracle这些年也的确发展的很好
Graham:的确是,因此过了这么三十多年,我还坚持在这个岗位上。
Andrew:Oracle是一家很好的公司,具有开放,自由的工作氛围和企业文化,如果你有远大的理想,想挑战自己,Oracle会为你提供很好的发展平台。
小X:嗯,是的,有良好的企业文化的确是一件振奋人心的事情。 您在事业上取得巨大的成功,而您同时拥有丰富精彩的业务爱好和生活,我想问一下您是怎样在工作和生活之间找到平衡的呢?
Andrew:这是个好问题,如果有一天我真的找到了平衡,我一定会告诉你的!
Graham:我想Andrew和我,这些年我们是比较幸运的,因为我们不再像以前那样经常奔波在客户前线,现在客户的很多问题都是经过我们的团队处理和审核之后,有必要的才会提交到我和Andrew这里,因此比起以前,我们就有更多的自由时间,能够更好地安排和规划自己的生活和工作,从某种程度上说,虽然我们还没有找到那份平衡,但会离平衡更近一点。
Andrew:我觉得还有一点很重要,就是随着年龄和阅历的增加,你会变得更聪明,做事会更有效率,在你年轻的时候,哪怕你整天都很忙,可能并没有做太多的事情,但你的经验随着年龄积累,做同样的事情,渐渐你花的时间会更少,这样你就能匀出一些时间做其他的事情。更有条例有规划。
Graham:的确是,我的前任老板,经常说一句话,要更聪明而不是更卖力(Be smarter, but not harder)。 我和Andrew一直在向着这个方向努力。
小X:很多人在职场上是变老了,但你们,是变得很好更精彩。(People getolder, you just get better)。我想问一下你们平时出差比较多呢,还是在办公室的时间多一点?
Graham:这个都是不固定的,得看情况,我们现在的工作基本上都是一个个小的周期组成,就像过去的十天,我们都在中国,接下来我们会去韩国,基本上我们不在办公室的时间超过一个月了,所以说经常都是这样,并不固定。
Andrew:你知道,我管理整个RWP团队,对于我来说,其实我更喜欢在办公室,因为这样我不仅能够了解现在数据库新开发的应用程序的运行状况,学习新的知识,同时也能见到我的团队。 RWP团队分布在世界各地,我尽量多的跟中国、欧洲区的团队成员多见面多交流。 但坦白说,在工作中,我最享受的过程事实上是跟客户交流他们遇到的性能挑战和困难,对于我来说,在这种挑战中寻找方案,不断成长和进步,是我最喜欢的。当我们和客户交流的时候,他们会跟我们描述系统遇到了什么样的问题,我们去发现问题的根源,并找到能让系统得到百倍甚至千倍性能提升的方法,所以说,如果是出差的话,我更愿意是面向客户出差,这比做演讲和展示有趣的多。这是我工作中比较有趣的部分。
所以简单来说,我们并不是总是在台上演讲,我们也会花时间研究数据,做模型,也跟客户有很多的交流和讨论。但无论做什么,我们的目的都只有一个,让真实世界的IT 系统的性能变得更好。
小X:你们的团队分布在各个地方,那你们工作时最常待的地方是哪里呢?
Graham、Andrew:我们的总部在加州。在加州离旧金山只有20里的地方,我们都是英国人,如果大家想知道的话,我们都在英国长大,也都是在英国学习的Oracle数据库,之后才搬到加州的。
小X:旅行差不多是你们工作甚至是你们生活的一部分,想问一下你们大概知道你们走过多少个国家吗?
Andrew:哇,这个问题,还真没有考虑过,我猜想应该是40个左右。
Graham:差不多是40个,最近这十年出差比以前更多了,我想已经超过40个国家了。
小X:很高兴能了解到这些内容,我想你们在国内的粉丝也一定会很想知道这些。接下来我们来谈一下关于RWP 中国之旅的事情吧
小X:Andrew,在您上次的邮件中,您提到RWP现在每个月都会在全球各大洲举行定期的培训课程,现在是每个洲都有吗?我之前在网上了解到的是北美洲、亚洲和欧洲。另外您所说的课程一般是多长周期的呢?为了所有来自中国的技术爱好者,我很想请您谈一下关于你们的分享或者培训计划。
Andrew:是的,现在各个洲都有举行。一般是几天一个周期的课程。中国是很幸运的,我们在中国区有专门的团队,我们的工程师可以直接在中国开培训课,不用担心语言的问题,这是很大的优势。同时,我们也正在努力扩大我们培训的规模,我们会分享更多的视频,在线测试,这些线上课程允许上课的人可以根据直接的时间安排将课程时间打散,一部分一部分去学习,也不用非要去某个地方,花很长的时间,同时线上课程的好处是可以反复的看和学习,因此我们会加大线上课程的力度,同时,对于线下课程,我们打算做得更专业,更具有针对性。
Graham:是的,线下课程我们会设置更多的动手实践课,让人们学到更多实操的东西。
Andrew:我们将会加大线下课程的难度,大家可以先通过视频课程打好基础,在对内容有一定的掌握和熟悉之后,再参加我们的线下课程,一定会有更多的收获。
小X: Graham ,上次您提到了,中国技术从业者的年龄让您很震惊,这次的感觉呢?还是这样认为吗?
Graham:是的,来到中国见到的技术爱好者,相对年轻很多,这对于我们来说是一种好现象。我觉得这次来中国最大的感受就是,中国这些年真的发展很快,不管是在深圳、杭州还是北京,建筑及生活的各个方面,都带给我很大的震撼,跟我之前来的感觉完全不一样了。
Andrew:我觉得这很棒!当我们到中国的时候,不只是说参会的技术人员,几乎到处看到的面孔都是更年轻些,在酒店里,在机场或者我们的客户,都是充满活力的年轻人,让我觉得整个城市都充满了正能量!
小X:我们通过公司的网站或者微信平台分享一些技术文章的时候,发现性能优化一直是比较受欢迎的一个话题,但性能优化是一个很大的话题,那么根据你们的经验,在性能优化方面,哪些具体的话题或者方向是更受关注的呢?
Andrew:事实上我觉得这个问题很有意思,很多人都很关注性能优化的问题,也有很多人会写相关的文章,但事实上我们常常看到的关于性能优化的文章都是在性能上有很小的提升的那种,比如提升了10%或者多少,很少有人真正谈如何大幅度提高系统的性能,我们期望的是人们去探索如何获得十倍、百倍甚至千倍的性能提升,这才是我们所追求的,然而现实中,人们往往沉迷于获得小幅度的性能提升。
我们的团队事实上很小,但是我们一直在致力于做重要的事情,我们的目标是让系统获得千倍的性能提升,这才是真正的Real World Performance 团队的宗旨,但很遗憾的是,很多做运维的朋友并不追求这种卓越的性能提升。有个现象让我觉得很不可思议,就是大部分在运维岗位的人,并没有做真正的性能优化的事情,他们不过是在评估或者说检测出问题,主要是保障数据库各方面的功能运行没有问题,他们并没有让数据库变得更快。我经常会鼓励人们去勇敢地尝试,让你的系统更快,目前看来可能效果还不是那么好。事实上我们整个团队都在努力做的事情就是帮助人们找到系统中能够获得巨大的性能提升的点在哪里。
Graham:对,是的,要想要获得较大幅度的性能提升,一定要首先通过数据找到真正影响性能的原因,从全局的角度出发发现系统中在发生什么。而不是看到一些表面的现象,然后就开始解决,或者到处寻找答案,看看这类问题大家一般用什么方式处理等等。一定要有全局的意识,从全局出发才能找到影响性能的真正的根源。我认为这是在做性能优化时,获得性能提升的关键,必须要建立在对根源问题的理解上,而如果不通过数据分析,是不可能有深入的理解的。我们不希望人们不深入钻研,而只是在猜测。
小X:这可能也是因为很多现实的问题导致,目前在绝大多数企业,运维和开发人员并不能很好地相处,所以很多时候哪怕DBA觉得是代码的问题,但他们不能决定改代码,于是他们会选择从他们的角度出发,看能做哪些尝试,获得一点性能的提升。
Graham:是的,你看到现实的情况就是,他们选择了不要性能的提升。Tom之前也一直说,有些人就是选择不修改应用程序,他们完全可以修改,因为这是他们自己的应用程序,他们可以修改,但他们选择了不修改。而是做一些无关紧要的调整,这些调整根本不可能带来大的性能提升。
Andrew:是的,这就是现实中的情况,不过我想说,在中国这种现象会好一些。没有人愿意听到别人说自己的应用程序运行慢,这样的事情大家会觉得很尴尬很丢脸,说不定他们也是很努力在工作,按照标准在写代码,不过是现在数据量变大了,假设数据量是之前的一千倍,而之前的代码并不适合处理这么大的数据量,因此性能就很可能下降,事实上这是很正常的事情。但是大家对于这样的反馈或者说批评都很敏感,对于RWP的工程师来说,最大的挑战就是如何找到一种合适的方式告诉他们系统有性能问题,但是不会伤害到他们的方式。这真的很难做到。对于工程师来说,最简单直接的方式就是把数据直接给他们看,数据会告诉你一切。但哪怕是这样,在处理的过程中,还是需要经过很多的会议讨论和交流,甚至是争吵,才能让他们真正接受他们的系统真的是存在问题的。因此我们往往需要通过很多资料,视频和实验测试,向用户真正展示如何正确地修改应用程序,能获得怎样的性能提升,最终才能说服他们。
Graham:最近这几年随着DevOps的出现,我觉得可能会带来真正的开发与运维的协同工作,改变当前开发写代码,然后隔着墙扔给运维人员,后期在运维中遇到任何性能问题都是运维的责任的现状。希望通过DevOps他们能够共同来想办法提升和维护系统的性能。 我很看好DevOps当前的市场和今后的发展。
小X:云和恩墨开发了一个 z3 SQL审核软件,就是基于DevOps的理念,在应用程序的开发、 测试和上线前后的各个阶段进行审核,发现有问题的SQL语句,并给出修改建议,或者当找到有问题的SQL之后, 你也可以寻找专家帮忙修改或者寻求更合理更专业的修改建议。
Graham:这个很棒,就像你看到的,在DevOps的理念下,修改代码的确是更合理的一种解决性能问题的方式。我们期待看到DevOps以后的发展。
小X:DevOps并不是一个新的概念,事实上已经提出来好多年了,我觉得这种理念是广泛被接受的,只是在实践上,还需要时间去发挥更大的价值。
Graham:对的,我们有很多客户也在逐渐接受DevOps的理念,这能够消除当前系统在做性能优化时遇到的障碍。
Andrew:另外现在有很多的自动化运维工作,DBA的很多工作,比如备份,空间规划和问题处理,这些都可以自动地实现,这样DBA就能够将精力投入到性能、安全、可靠性等更有价值的事情上面,当他们不用再做繁冗重复的事情之后,他们就相当于转身成为开发者了,因为现在对于他们来说,每一个项目/应用程序,都是全新的,DBA是从头开始参与的。 事实上,在很多公司都存在这样的现象,懂SQL的人都是DBA,因此DBA更应该去做开发,写代码。另一方面,同一项目中的开发人员和运维人员应该在一起工作,并享受同样的工作及分红待遇,这一点很重要,只有这样才能加强他们的合作,当他们有同样的目标,彼此之间没有隔阂,也不能互相推卸责任的时候,他们才有可能为了系统的目标一起努力。现实中,目前很多公司都是开发与运维在不同的部门,他们不合作甚至不交流,工作待遇更是有巨大的差异。因此,这些问题的背后存在很多管理和领导的因素在里面,而不仅仅是技术的问题。
如果能够让开发和运维真正合作起来,这样组织内部的界限就减少了很多,我相信合作的力量,如果开发和运维合作,我相信做事情一定会更高效,效果也会更好。
Graham:刚刚Andrew谈到消除DBA面临的一些来自外部的竞争或者压力,如果以后IT系统迁移到云上,DBA现在所做的很多工作都会不再需要手动完成,如果你的系统迁移到了云上,系统在运行中遇到的问题将会有专门的人来负责,那时候DBA的工作就会偏向于开发DBA,他们会更多地了解到应用程序在数据库中的运行,基于DevOps的理念,他们能够思考如何让系统运行得更快更好,而不用再去担心备份、存储等这些基本的问题。
小X:所以说,如果企业的IT系统都迁移到了云上,我想很可能很多企业都不再需要运维DBA了,因为这些运维的事情将以服务的方式被提供,不再需要日常的运维。运维会变得服务化和集中化,当然也会更加规范化。在遇到系统故障或者问题的时候,可能只需要数据服务型的企业比如云和恩墨来承担这样的角色。
Andrew:现在很多运维的工作,的确是很无趣的,因为人们总是在犯同样的错误。如果能够让这些工作被自动地完成的话,现在的人力就可以被移动到更有创造性的职位上,发挥更大的价值。他们可能会设计出更好的应用程序,可靠性更高,更安全,不仅对于他们个人的职业生涯来说,是一种改善和提升,同时也能为公司创造更大的价值。
当人们在工作中能够更大地发挥创造性时,也会更加享受工作。现在,云平台非常的强大,从IO,网络,CPU各个方面都是很完美的,可以说,应用程序没有任何理由性能不良好。因此,还是说,这样会将系统的核心关注点引回到设计良好的应用程序,无论从功能、安全性、可扩展性等各方面。我相信这会给企业带来良好的变化,人们做更有创造性有价值的事情,肯定会给企业带来更好的效益。
Graham:是的,云平台的确有很多优势,现在系统中存在的关于扩展性的限制也会大大减少,因为正如Andrew所说,这些平台的硬件是非常强大的。因此现在系统中面临的问题,如果排除了来自硬件的缘故,开发人员就必须要找到真正的原因并解决掉,这样设计和开发出来的应用程序也会更加强大。
小X:是的,其实现在在很多企业,对于硬件可能带来的问题,都有一个误区,或者说一种不良现象,当系统遇到问题的时候,如果他们找不到真正的原因,或者不愿意深入研究去找真正的原因的时候,他们倾向于换硬件,如果他们足够幸运,他们很可能就获得了部分的性能提升,这看起来是更简单的一种获得性能提升的方式,当然,这种获得性能的方式并不能带来太大的提升,而且很快就会遭遇硬件的天花板。
Andrew:我想很多人在遇到真正的性能问题的时候可能都会这样做,人们并不愿意修改自己的系统,他们甚至不愿意听到别人说他们需要修改,因此他们试图通过换平台或者移动数据来掩盖问题,这种现象并不是IT领域特有的,这是很正常的一种人类的反应,比如说一个优秀的赛车手,为了赢得比赛,他肯定会为自己配最好的装备,如果你并不是一个优秀的赛车手,你可能并没有完全发挥出你的装备该有的价值。但是在IT领域,运维人员并不存在这种竞争来决定谁最优秀,这种能力上的差异从来都是很难定量评价的,因此,在可能的时候他们或选择找借口,把系统的问题归结到硬件的问题、平台的问题、如果你不找借口,就相当于是说你承认了你技不如人。这是我们面临的很大的一个挑战,人们会更倾向于逃避问题,而不是去解决问题。对于这种现象,我们也无能无力。 有很多人,明明通过小小的改变就能获得很大的性能提升,但他们不听我们的建议,我们也就不再担心这些人了,因为这是他们的选择。
Graham:是的,他们选择不听我们的建议,我们无能为力。
Andrew:对,是他们自己做的选择,他们选择系统这么慢。
小X:也许这不是他们的选择,可能是他们老板的选择。
Andrew:是的,还是说到刚才的管理的问题。但归根结底,就是他们选择了平庸的系统,甚至性能很差的系统,甚至是说在他们整个职业生涯里,他们都选择了性能很差的系统。在这些问题中,领导和管理是起了很大作用的。
小X:你们在数据库性能优化方面有丰富的经验,除了像今天这样的培训之外,你们还会通过什么样的方式分享你们的经验呢?
Graham:我们有很多个系列的视频,也有一些版本是加了中文字幕的,这些视频里面,Andrew展示了很多我们这些年我们做的demo,我觉得视频是一个比较好的传播和分享方式。
Andrew:我们没有写博客,因为现在各种博客太多了,而且写博客并不是一件简单的事情,可能需要经常更新,比如说每天。而且现在很多人写的博客,质量真的是不敢恭维。 另外一方面,我认为写博客或者出版书,更是一种自我的提升过程,但是对于问题本身,并没有太大的意义。对于我,我希望人们能够了解我们的优化策略,能够获得良好的系统性能,而不在乎他们是不是认识我。因此我个人并没有写博客或者写书的意愿。
小X:有道理,的确写东西对自己的个人能力提升的作用更大。但我还是觉得这是很好的一种传播技术的方式,如果是书,人们就可以自由地选择时间地点学习,也能一遍遍地看直到看懂为止,而且还可以在书上做笔记,我觉得这也是它的一个优点。
Graham:市面上是书太多了,Oracle的书也太多了,事实上我们会更倾向于将这些经验写到Oracle的官方文档里面去。
Andrew:在Oracle12.2 的官方文档有专门的一章是讲Real WorldPerformance的,那里才是我们认为应该由我们来写文档的最合适的地方,官方文档的确应该涉及到这些实践的内容,因此我们不会写其他的书,而是将自己更多的经验写到官方文档里面,使得文档更丰富。
小X:那么对于那些在客户的环境中遇到的一些问题,更真实环境下的一些问题,你们怎么记录或者分享呢?
Graham:其实差不多针对每一种情景,我们都有对应的demo,通过demo展示了如何正确地处理来获取性能的提升。因为很多时候,人们都不愿意听我们的建议,我们需要demo和数据去向他们证明为什么要这样修改,修改会带来什么改变。
Andrew:还有一件很重要的事情,也是我们团队在做的事情就是设计有价值的工具,人们就可以通过工具的使用来获得一定的帮助。Graham参与设计过很多的Oracle 的性能监控和优化的工具, 比如AWR,ASH,我们会教人们如何在不同的场景下正确地使用这些工具,人们在使用这些工具之前,首先看到了系统存在需要被优化的问题,通过使用这些软件能够更有效率地定位问题,找到系统的根源问题,从而通过恰当的代码的修改来获得性能的提升,而不是在猜测中以修改参数等方式来处理。我们在分析AWR报告的时候会发现很多系统存在的问题,有很多问题人们并没有意识到正在系统中发生。我们甚至能够通过AWR报告看出运维或者开发人员的个性,处理方式,通过这些报告,我们对于系统的了解可能比系统的负责人还要多。我们也在努力创造这些工具更大的价值,找到新的应用场景。AWR已经是很老的一个工具了,但我们现在不仅是利用它来做小的调整,而是通过AWR报告更好地理解应用程序。对于我们来说,AWR不再是一个简单的运维工具,而是了解开发的一个途径。
Graham:是的,我们把AWR当做一种了解系统架构、应用程序的一种方式,通过在多个客户系统的经验,我们很容易就能够对系统架构有一个清晰的认识。
Andrew:有很多次,当我们的用户给我们看系统的AWR报告,然后我们发现了一些他们根本没有意识到的问题,比如说他们的应用程序是如何设计的,有时候当我们问道这些问题的时候,他们会显得很惊讶,说你们是怎么知道的,我就会说,我们也遇到过同样的问题。有时候我们也能看到一些系统潜在的隐患。
Graham:看AWR报告有时候会很有意思,当我们说出系统存在的一些问题之后,开发人员会说,不会的,系统不会存在这样的问题的,然后DBA就会说,是的,这个问题已经出现好多次了。所以开发人员和DBA的确应该一起工作,共同坐下来看系统到底存在些什么问题,我们能够做些什么去改变。
小X:最后想咨询您一下,如何才能成为性能优化的专家呢?您有什么好的建议或者方法可以分享一下吗?
Graham:我的建议是,以数据为核心展开优化,真实的数据会告诉你系统哪里存在问题,对于很多想要在性能优化方面有所成就的人,我都会这样建议他们,在你尝试解决问题之前,一定要确保找到系统真正的问题。很多人往往在找到问题之前就开始尝试通过各种途径解决问题了,这是很有问题的,并且往往不能真正解决问题。另外一点和重要的是,我引用Andrew早上说的一句话,在做性能优化时,一定要抓主要矛盾,从最关键的点入手。如果你尝试解决一个无关紧要的小问题,无论你花了多大的努力,结果都是微乎其微的。你应该把重心放在系统最核心最重要的问题上面,这样才有可能获得大幅度的性能提升。
Andrew: Graham 所说的以数据为核心是很关键的,一定要抓住系统的主要矛盾。还有一点很重要的是,性能优化并不是一劳永逸的事情,随时都要密切关注,如果你想要在性能优化方面取得成就,那么就要保证你所做的项目,你的工作都是跟性能优化相关的,你周围的环境也很重要。一个人不可能知道所有的事情,没有人能够知道所有的事情,因此有好的伙伴和团队是很重要的。大家可以互相交流探讨,一起进步。多努力多动手,多交流,互相学习,一定能够获得成长和进步。
感谢Andrew和Graham的分享。在Andrew多年遵循的优化原则有这样一条,“Your system performance is what you "deserve",他相信,你对于系统的期待和你付出的努力会决定系统的性能。实现百倍千倍的性能提升不是梦想!在他的带领下,RWP团队也一直为真实世界的IT系统的性能不断努力和探索。我们期待今后随着云的落地,运维的自动化和智能化发展,以及DevOps理念的普及,每个人都能拥有性能完美的系统!
感谢ACOUG的付出,感谢云和恩墨华章出版社和图灵出版社的赞助、感谢Oracle公司的协助,这场技术交流会对于中国及中国的技术爱好者们意义深远,我们期待下一次相聚,更期待在我们共同努力下将要迎接的美好未来!
加入"云和恩墨大讲堂"微信群,参与讨论学习
搜索 盖国强(Eygle)微信号:eyygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。