卡里早就该写这本书了。25年来,他一直在教授并实践书中的内容。这本书我已经读了好几遍,我想你一定会喜欢的。这是一本可以改变你生活的书。我之所以这样确信,是因为书中阐明的那些原则已经改变了我的生活。我拥有18年的领先优势,因为卡里在2003年与杰夫·霍尔特(Jeff Holt)合著的《Oracle性能优化》( Optimizing Oracle Performance )一书的本质正是这本书的精髓所在,即一个名为“R方法”的方法。
R方法改变了我的生活。它是我职业生涯的基础。在了解它之前,我已经学习并运用了作为一名数据库管理员应该掌握的所有“常规”技巧、窍门、工具和技术。我取得了一定的成功,但得到的结果并不一致,而且一切似乎都非常复杂且困难。R方法几乎立刻颠覆了我对于优化的想法。一切都变得清晰而简单。
R方法不仅仅局限于Oracle的应用范畴之内。使用R方法,我可以清楚地看到,针对改进目标需要收集哪些相关信息。我可以看到去哪里寻找性能问题的根本原因,以及如何解决这些问题。不过,最棒的一点是,我能够向别人解释我在做什么以及为什么这样做。我觉得这是特别有成就感的。而我之所以能做到这一点,就是因为通过R方法,我不是在猜测——而是确切地知晓。
事实证明,很多人的确看到了R方法在Oracle之外的适用性,尽管2003年的那本书确实是一本关于Oracle的书,但这本书不是,这本书针对的是需要做决策的人。不仅仅是Oracle公司的人,甚至不仅仅是长时间进行批处理任务的信息技术人员,还包括任何需要做饭或带孩子参加体育活动的人——任何想要更快速、更优秀或更优雅地做事情的人。这些原则在任何地方都适用。在第一次开始将R方法应用于我的生活时,我记得当时我在想:“它真的这么简单吗?”答案是肯定的!
这是一本令人愉快的书。卡里不仅是一位业务娴熟的专业人士,还是一位天赋卓绝的故事讲述者。他会是你所遇到的非常出色的演讲者之一(无论是否从技术层面看),这一点在这本书中得到了显著体现。看到他非常轻松地用平实的英语解释这些让众人望而却步的话题,既让人心满意足,又令人耳目一新。这些故事几乎涉及每个人的经历,无论他们是否从事IT行业。在这本书中,我想你会发现至少有一些故事会让你感同身受。
吸引你的是故事,但真正改变你的是故事中的道理。在这本书中,你将了解到“正确观察正在发生的事情”这一简单的行为如何使世界上的一切变得完全不同;你将学习如何自信且一致地去识别、查看、框定、分析并解决性能问题;你将学习如何将同事的情绪作为一种积极的力量;你将了解如何更好地进行测试,从而避免问题的出现,而不是等到以后直面问题;你将学习如何找到确凿的证据来确定是否有可能做进一步改进。你将从这本书中找到所有答案。
你可以将这本书作为一本教科书,也可以将其看作一本能够随意翻阅的参考书。我认为这本书可以帮助很多像你一样的人,为这个世界做出积极的贡献。
——古德蒙达尔·约塞普松
2021年12月于冰岛科帕沃古尔
让事情变得更快是为了让事情变得更好,从而让 生活 变得更美好。如果工具能够工作得更快,我们就有更多的时间去做自己想做的事情。如果这些工具是帮助我们处理信息的,那么它们工作得越快,我们就可以越好地做出决策。
无论是对计算机、犁头进行优化,还是对两者之外的其他东西进行优化,都需要两项独立的技能:一是 提出 正确的问题;二是 回答 这些问题。大多数思考优化的人都很了解第二项技能,但似乎很少有人意识到第一项技能。然而,第一项技能——提出正确问题的行为——才是我们需要首先培养的技能,尤其是作为一名领导者。大家可能会惊讶于自己竟然能如此迅速地学会它。
不过,还有一个问题。教学时,我们提出的问题很简单。但所有遇到过好奇孩子的人都知道,简单的问题并不总是容易回答的。例如,管理公司计算机的人可能确切地知道在某个特定的星期五下午2点钟系统的CPU利用率是多少,但他们可能无法回答店员输入一份订单需要多长时间。他们给出的答案和我们想要提出的问题之间存在着错配。这种错配本身就隐藏着让事情变得更快的机会。我会教大家如何找到这些机会。
优化通常更具政治性,而非技术性。奇怪的是,关于优化的书籍几乎都是技术性的。技术人员很容易认为项目中的非技术因素是不必要的,甚至可能是荒谬的干扰因素。但事实是,优化的非技术方面也需要人们去理解和投入精力,就如同技术方面一样。为了优化某些内容, 除了 要在技术上富有成效外,有时候还必须面对恐慌和恐惧所产生的“怪物”。良好的成功业绩记录将帮助我们在关于下一步该做什么的辩论中赢得胜利,但如果不发挥一些政治智慧,我们就永远无法创造出这样的业绩记录。
我写这本书的目的是帮助大家提高这两项技能:从政治和技术层面提问和回答。潜在的回报是巨大的。当我们既了解性能的科学,又了解如何驾驭关注性能的人的欲望和情感的艺术时,我们就可以优化 任何事情 。
我个人所取得的大部分成就都归功于他们给予的爱与恩惠,他们是我的妻子Mindy和孩子Alexander、Nikolas及Cathryne,我的父母Van和Shirle(我想念你,爸爸),我的岳父母Ted和Evelyn,以及我的嫂子Alison。
如果没有杰夫·霍尔特,这本书是不可能出版的。很难想象,如果抛开从1999年以来与杰夫一起度过的时光,那么将有多少知识我永远无法学到。
我要感谢每一个参与我的故事的人,他们在过去的几年里帮助过我、鼓励过我、激励过我,他们是Steve Adams、Stephen Andert、Chris Antognini、Jon Bentley、Martin Berger、Richard Bonacci、Michael Brown、Mathew Butler、Steve Butterworth、Jerry Carlisle、Jae Choi、Mark Clark、Tom Corrado、Rudy Corsi、Ron Crisco、Chris Date、Lex de Haan、Dominic Delmolino、James Docherty、Ellen Dudar、Kevin Duffy、Nancy Dushkin、Larry Ellison、Jean Emerson、Dave Ensor、Michael Erwin、Eric Evans、Mark Farnham、Charlene Feldkamp、Ken Ferlita、Alyssa Freas、Doug Fricke、Doug Gault、Jonathan Gennick、Eli Goldratt、Gary Goodman、Alex Gorbachev、Donald Gross、Neil Gunther、Stephan Haisley、Tim Hall、Jimmy Harkey、Carl Harris、Frits Hoogland、Jonathan Intner、Lynn Isabella、Øyvind Isene、Raj Jain、Laurel Jamtgaard、Jarod Jenson、Guðmundur Jósepsson、Chet Justice、George Kadifa、Tom Kemp、Brian Kernighan、Larry Klein、Leonard Kleinrock、Donald Knuth、Stefan Koehler、Anjo Kolk、Toon Koppelaars、Brian Kush、Tom Kyte、Ray Lane、Jonathan Lewis、Debra Lilley、Bryn Llewellyn、Craig Martin、Connor McDonald、Brendan McNamee、Becki Memmer、Danny Menascé、Rick Minutella、James Morle、Karen Morton、Nils-Peter Nelson、Evelyn Neumayr、Craig Newburger、Mogens Nørgaard、Donald Norman、Kerry Osborne、Saul Padilla、Mauro Pagano、Harold Palacio、Tanel Põder、Darryl Presley、Marcin Przepiorowski、Ray Quiett、Willis Ranney、Mike Riley、Dennis Ritchie、Andy Rivenes、Allan Robertson、Jesse Ruder、Robert Rudzki、Richard Russell、Rachel Rutti、Martha Sabelhaus、Virag Saksena、Robyn Sands、Baron Schwartz、Gwen Shapira、Robert Shaw、Abdul Sheikh、Carlos Sierra、Kyle Smith、Nancy Spafford、Bryant Stavely、Veronica Stigers、Jared Still、Magnus Stjernström、Mark Sweeney、James Thomson、Dan Tow、Edward Tufte、Hank Tullis、Delores Utley、Peter Utzig、Fidel Vales、Bill Walker、Mark Williams、Gerald Williamson、Liz Wiseman、Graham Wood、Scott Wyper、Steve Wyper、Winston Zhang、Andrew Zitelli、Jeff Zollars,以及来自巴西的小伙子。
本书使用以下排版约定:
斜体 ( Italic )
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体( Constant width )
表示程序元素,例如变量名及关键字。
O'Reilly在线学习平台(O'Reilly Online Learning)
40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 https://oreilly.com 。
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至 errata@oreilly.com.cn 。
本书配套网站 https://oreil.ly/make-things-faster 上列出了勘误表、示例以及其他信息。
关于书籍和课程的新闻和信息,请访问我们的网站 https://oreilly.com 。
我们在LinkedIn上的地址: https://linkedin.com/company/oreilly-media 。
我们在Twitter上的地址: https://twitter.com/oreillymedia 。
我们在YouTube上的地址: https://youtube.com/oreillymedia 。