儿童枕头用什么枕芯好| 壁挂式空调什么牌子好| 耘字五行属什么| 蓁是什么意思| 守字五行属什么| 薏苡仁是什么| 细小是什么病什么症状| 脸上肉跳动是什么原因| 涉三什么意思| 为什么要打胰岛素| 南冠指的是什么| 急性寻麻疹用什么药| 儿童过敏性皮炎用什么药膏| 肝郁化火吃什么药| swissmade是什么意思| 夏至节气吃什么| 皮神经炎是什么症状| 山合念什么| 貌不惊人是什么意思| 信阳毛尖是什么茶| 两特两重指的是什么| 杳冥是什么意思| 梦到自己拉大便是什么预兆| pe和pb是什么意思| 6月17日什么星座| 手抽筋吃什么药| 痰是棕色的是什么原因| 奶阵是什么意思| 惊弓之鸟告诉我们什么道理| 惜字如金是什么意思| 青少年吃什么钙片有助于长高| 什么矿泉水最好| cro公司是什么意思| 为什么感冒会流鼻涕| 杨枝甘露是什么意思| 世界上最大的蛇是什么蛇| 吃什么补充维生素b6| 今天中午吃什么| 细水长流是什么意思| 平肝潜阳是什么意思| 查心梗应该做什么检查| 孔雀开屏什么意思| 脑梗的前兆是什么| 女娲为什么要补天| 想飞上天和太阳肩并肩是什么歌| 小乌龟死了有什么预兆| 社会很单纯复杂的是人是什么歌| 7月24号是什么星座| 内分泌科属于什么科| 给老师送花送什么花合适| 5月25号是什么星座| 宫颈癌做什么检查| 贵阳有什么特产| 门静脉高压是什么意思| 射精出血吃什么药最好| 什么时间最容易怀孕| 大同有什么好玩的地方| 微创是什么| 7月17号是什么星座| 肝囊肿是什么| 德行是什么意思| 逆时针揉肚子起什么作用| 菠萝是什么意思| 镜花水月什么意思| 什么清什么楚| 后羿射日是什么意思| 幽门螺杆菌是什么症状| 什么菜养胃| 21三体高风险是什么意思| 湿疹吃什么药好| 鸡胗是鸡的什么部位| 今年七夕节是什么时候| 助听器什么品牌最好| 新生儿贫血是什么原因造成的| 属马的男生和什么属相最配| 簇新是什么意思| 0706是什么星座| peak是什么牌子| lisa英文名什么意思| 水床是什么| 木槿花什么时候开花| 恋童癖是什么意思| 啵是什么意思| nova是什么牌子| pigeon是什么牌子自行车| 不是什么意思| 沟壑是什么意思| 6.30是什么星座| 鱼加它是什么字| 5月8号是什么星座| 胃酸吃什么可以缓解| fsh是什么激素| 血精和精囊炎吃什么药| rococo是什么牌子| 尿酸高看什么科室最好| 一字马是什么意思| 繁花似锦是什么意思| 清热燥湿是什么意思| 拉烂屎是什么原因| 6岁属什么生肖| 师姐是什么意思| 端午节吃什么| 胳膊脱臼是什么症状| 骨盐量偏低代表什么| 10月30号是什么星座| 有一种水果叫什么竹| 肝钙化灶是什么意思| 肺气不足吃什么食物可以补肺气| 百年灵手表什么档次| 膈是什么器官| 首战告捷什么意思| 七十岁是什么之年| 脊髓炎是什么病| 男人更年期有什么症状有哪些表现| 九月十四号是什么星座| 肠胃不好喝什么奶粉好| 幽门螺旋杆菌阳性代表什么| 那天午后我站在你家门口什么歌| 前列腺炎吃什么好| 破产是什么意思| 茼蒿不能和什么一起吃| 基层是什么意思| 左侧上颌窦炎症是什么意思| 流鼻血是什么原因引起的| 什么病可以申请低保| 什么眼霜比较好用| pdw偏低是什么意思| 小孩过敏性咳嗽吃什么药| 锦纶是什么面料优缺点| 以梦为马什么意思| 南非叶有什么功效| 手指麻木是什么病的前兆| 人被老鼠咬了什么预兆| 就让我爱你把你捧在手心里是什么歌| 小孩脚抽筋是什么原因引起的| 五行代表什么| 为什么会得水痘| 什么是海藻糖| 立春吃什么| 额头长闭口是什么原因| 穿拖鞋脚臭是什么原因| 气虚便秘吃什么中成药| 真菌感染有什么症状| 营养不良吃什么| 43岁属什么| 智齿发炎挂什么科| 无机磷偏低有什么影响| 天蝎座的幸运色是什么| 渗透压偏高是什么原因| 两个人一个且念什么| 肛门潮湿瘙痒用什么药最好| 大快朵颐是什么意思| 来大姨妈喝什么最好| 肚子怕冷是什么原因该怎么办| 人最怕什么| 鸡枞是什么东西| 猴子屁股为什么是红色| 腾字五行属什么| 胃酸过多什么原因| lm是什么意思| b族维生素什么人不能吃| 春天什么花开| 去香港买什么划算| 杜甫被人们称为什么| hcg值是什么| 天上的星星像什么| 铜镯子对人有什么好处| 便秘是什么意思| 朋字五行属什么| 风热火眼是什么意思| 险象环生是什么意思| 心慌吃点什么药| 不置可否是什么意思| 看不起是什么意思| 血干了是什么颜色| 心脏骤停是什么原因引起的| 牛膝有什么功效| 右肺中叶小结节是什么意思严重吗| wmf是什么牌子| 每天喝豆浆有什么好处| 桑葚有什么功效和作用| 右肺纤维灶是什么意思| 火丹是什么原因造成的| 股长是什么级别| 胆囊壁厚是什么意思| 为什么叫犹太人| 什么什么不得| 佐匹克隆片是什么药| 六味地黄丸什么人不能吃| 皮肚是什么| 什么的表演| 糖尿病吃什么食物最好| 十月十三是什么星座| 梦见鸡死了是什么预兆| 鼻炎挂什么科| 胡萝卜富含什么维生素| 肺胃热盛吃什么中成药| 合子是什么| 梦见一个人代表什么| 1942年属什么生肖| 八股是什么意思| 如你所愿是什么意思| burberry什么牌子| 什么的雪莲| 五心烦热吃什么药最快| 牌匾是什么意思| 罗非鱼长什么样| doneed是什么牌子| 蜕膜是什么| 减肥吃什么好而且瘦的快| 梦到自己长白头发是什么意思| 白色t恤配什么裤子| 新疆人是什么人种| 梦见老牛是什么意思| 为什么身上会痒| 真实的印度是什么样的| 塑形是什么意思| 牙疼可以吃什么| 女生是t是什么意思| 寸是什么单位| 戾气什么意思| lagogo是什么牌子| 右小腿抽筋是什么原因| 凝视的近义词是什么| 冷笑是什么意思| 继续近义词是什么| 21是什么意思| 骶髂关节炎吃什么药| 吃什么食物降尿酸最快| oink是什么意思| 自来水是什么水| 建军节是什么时候| 嘴里起血泡是什么原因| 无花果什么味道| 血压计什么牌子好| 白球比偏低是什么意思| 什么是溺水| 黑色五行属什么| 长沙开福寺求什么最灵| 什么什么相什么的成语| 力挽狂澜是什么意思| 每天吃松子有什么好处| 痛风能吃什么菜| 3p 什么意思| 低血压高是什么原因| 扁桃体发炎引起的发烧吃什么药| 肺结节有什么症状| 耳朵前面有痣代表什么| 海虹是什么| 凉皮是什么做的| 眩晕是什么原因| 吃什么对胰腺好| 冬眠灵是什么药| 脑垂体在什么位置图片| 瞌睡多什么原因| 益生菌什么时间吃最好| vcr是什么| 夏天喝什么茶好| 苯磺酸氨氯地平片是什么药| 交叉感染是什么意思| 蚕长什么样| 女鼠配什么属相最好| 下嘴唇起泡是什么原因| 猫吃什么下奶最快最多| 百度
数据库 频道

如何解读“过早优化是万恶之源”这句话

  数据库该怎么用其实也是一个争议挺大的话题,很多人可能会不理解为啥数据库还要那么用而不是这么用。因为每个用户的技术背景不同,团队的技术特点不同,开发团队的能力不同,所使用的数据库的技术能力特点不同,所使用的数据库管控平台不同,使用数据库的方式以及对数据库的技术要求也是不同的。

  2006年左右,Oracle ACS的一个朋友找到我约一篇稿子,他希望我能写篇关于数据库优化越早越好的文章。当时约稿的目的是因为很多大客户的数据库应用搞得太不讲究,性能存在较大的问题,ACS的工程师在给客户做巡检的时候,需要花大量的时间帮用户解决一些十分低级的性能问题,他们认为这些问题原本是可以在系统开发时解决掉的。他们希望让用户在开发应用时多考虑考虑性能优化的问题,让Oracle能够用得更好,从而能够降低Oracle售后服务的压力。于是我写了一篇题为《应用系统生命周期和Oracle数据库优化》的文章,发表在《Oracle技术通讯》上了。

  当时的小型机与现在的服务器相比,性能上差距很大,大多数企业用户使用能够的Oracle 9i与现在的Oracle也无法同日而语,因此那时候Oracle对于大用户还是不敢提SQL随便写这种 建议的,因此需要引导用户在系统建设前期开展优化工作。随着X86替代小型机以及Oracle数据库技术的不断进步,Oracle数据库的整体处理能力有了脱胎换骨的变化。大多数Oracle用户都可以更加自由地编写应用了,哪怕应用的质量不是很高,Oracle也能够尽可能让系统跑得能够使用。

  对于一般的企业来说,业务才是生存之道,数据库只是辅助业务开展的一种IT基础设施,应该与服务器、网络设备一样简单。作为IT基础设施的数据库的这种进步,让那些系统数据量不是特别大,研发技术能力相对较弱的企业可以更加低成本地进行应用系统的研发,更加关注于业务本身。

  与“系统优化从需求开发开始”的观念相反的是克努特优化原则 (Knuth's optimization principle)中提到的“过早优化是万恶之源”(实际上这句话最早是最早由Tony Hoare说的,只是在Knuth的书中第一次提到)。Knuth认为过早的把时间与成本浪费在过度精细的优化考虑上,会导致不必要的浪费,因为某些你担心的性能问题很容易在被发现后解决掉。

  一个是2006年时Oracle ACS提倡的“系统优化从需求开始”,一个是2019年Knuth大师所说的“过早优化是万恶之源 ”,我们该如何判断哪个观点是正确的呢?其实你一旦在判断哪个观点是正确的 ,那么你已经陷入到错误的认知中去了。在不同的背景条件下,在不同的应用场景中,在不同的技术背景下,答案本身就是不同的。

  Oracle ACS观点的背景是计算资源十分昂贵,研发团队技术能力不足,应用系统复杂而高聚合,应用开发迭代缓慢,缺乏敏捷开发能力。而Knuth观点的背景是开发十分敏捷,应用系统微服务化,计算资源在云上弹性获得,修复性能BUG十分快捷。在这两种不同的背景下,对于同一个问题自然就有不同的答案。

  不过我还是觉得Knoth老爷子对这个问题的关键有些极端,其实我理解的这句话也是有场景的,指的是在开发过程中。他希望开发人员不要在开发初期“过早地考虑优化的问题 ”。而“系统优化从需求开始”是因为一些不懂IT的领导和用户提出一些对性能恶化影响甚大的需求来。比如一次查询可能涉及几十年时间窗口的数据,这必然会导致大数据量的扫描,消耗大量的CPU和IO资源,而限制最多查询一个月数据可以确保索引访问的高效性。

  二十多年前一个系统上线第一天就崩溃了 ,我被紧急叫去帮助分析。后来我发现系统的首页上有大量的统计汇总数据,而且每隔一分钟自动刷新一次,而大多数用户使用完某个功能后都会退回到首页,因此整个数据库在不停地做统计分析。而这个明显不合理的设计居然源于某个平时压根不会使用这套系统的领导。

  在三十多年的IT生涯中,我从一个总想把每件事搞个明明白白的小白变成了一个不太喜欢争吵的人,因为我明白每个人眼前的风景不同,每个人对美的定义不同,因此每个人都会说自己看到了最美的风景,对此无需争论。

0
相关文章