笑S,这个家伙什么都不懂。。。

ZT BY Cowboy


我在 CS 公司工作的时候,有一天接到一个软件工程师发来的邮件,说我们的数据库运行得非常慢。这个软件工程师是在印度园区,他把邮件同时送给我们的部门经理,他在那封邮件里,非常不客气地指责我们的数据库没有管理好,希望我们的部门经理安排我尽快解决问题。


部门经理立即打电话给我,让我在第一时间帮助解决。我看了那个邮件,又检查了一下数据库,并没发现什么问题。我写了个邮件问那位工程师:“为什么你说我们的数据库运行很慢,你是怎么测试的,你执行了什么计算机语句时发现了问题?”那位软件工程师给我寄来一个Word 文件,他说:“我运行这个语句,执行了三个小时还没有得出答案。”


我把那个 Word 文件打开一看,简直不敢相信我的眼睛,一个SQL 语言的命令竟然有135页那么长!真不知道有没有这一项吉尼斯世界纪录。我问他:“你有没有搞错?这个命令是你用手敲入计算机的吗?”他说是用一个工具软件产生的。我告诉他:“我不能读你的这个语句,你把所有的客户要求和设计文件给我寄过来。”


他把用户的要求和设计文件寄了过来以后,我一看就知道,他对这种工作没有很多经验,脾气还那么坏。我根据用户的要求,重新修改了一下,我先建立了两个辅助程序,然后只用了半页纸,写了一个SQL语言,执行这个命令只需要20 微妙就得到了需要的结果。


我把我的设计和结果寄给他以后,再也没有见过他的邮件。同时我也告诉我们的部门经理,不是我们的数据库管理的不好,而是他不知道怎样恰当地设计和运用数据库。


还有一次,一位工程部的人员找到我说:“我们的总结报告运行的非常慢,检查一下数据库有什么问题。”我检查了一下那个数据库没发现什么问题。我问她:“你是怎样运行你的总结报告的?”她进入了一个网页,那个网页上有一个链接,然后她说,她的工作就是每天早上一上班就点击这个链接。我问她:“通常,在你点击这个链接以后,需要多长时间能看到总结报告。”她回答说:“十个小时。”“什么?”我简直不敢相信自己的耳朵:“十个小时?”我问她:“哦,你每天早上一来就点击这个链接,然后去冲一杯咖啡,再吃中午饭,一直等到下班,这就是你一天的工作?”她笑着回答说:“我在等总结报告的时候,也干些别的事情。”“真是见鬼了!”我心里说:“谁设计的这个总结报告,简直是太糟糕了。”想象一下,如果有几十个人同时运行那个总结报告,数据库就差不多要瘫痪了。


我了解了情况之后对她说:“好了,我已经知道了。等我把问题解决了会通知你。”我进入了那台伺服器,找到了原程序,重新设计了那个总结报告。让那台机器每天夜里运行,产生好报告放到一个地方,然后,把那个网页上的链接直接指到事先已经产生好的总结报告。


第二天,那位女士又跑来了:“不好了!不对劲了!”我问她:“什么事?”她说:“我今天早上一点击那个链接,总结报告就立即跑出来了。”我问她:“那是不是你要的报告?”她说:“是啊。”我问她:“那你还有什么问题?”她说:“一定是出了什么问题,不可能会这么快?”我对她说:“我把那份报告的生成过程修改了,每天夜里会自动生成那个报告。等你来的时候,报告已经准备好了。”她顿时急了:“那不行,我们需要的是实时报告。”我跟她解释说:“你不可能得到实时报告,第一,你们的数据每天才更新一次,第二,如果生成一个报告需要十个小时,哪里还谈得上实时。当你点击那个链接以后,在等待的十个小时中,数据早就发生变化了。你最后能看到的报告只可能是十个小时之前的数据结果。这跟我在十个小时前产生总结报告没有任何实质上的差别。”我反复跟她解释了好几遍,她才将信将疑地走了。我曾经用类似的方法为很多公司解决了总结报告运行太慢的问题。


一个星期以后,我在走廊里遇到了那位女士,我问她:“现在怎么样了?”她笑着回答说:“真没想到,你把我的工作搞的太容易了。”工作变得太容易了,也需要一个适应过程。


很多人,甚至是管理层的领导并不了解数据库的运作,以为管理数据库就是保持数据库工作的正常运行。其实数据库管理的好不好,应用软件的设计上是否合理,在运行的效率上有着天壤之别。我做过很多优化,把原有数据库应用软件的运行速度提高几千倍,甚至几万倍。在我看来,数据库的管理和应用软件的设计就像是一门工程上的艺术。当你在网络上漫游的时候,当你在使用卫星定位系统的时候,当你在使用手机的时候,后面都有强大而高效率的数据库支持。

登录后才可评论.