摘要: 态度决定方向,毅力成就行动前言:很长时间没有检查邮箱了,今天发现里面已经爆满,查看之后,发现很多的邮件都问着相似而又无法让人给出答案的问题,所以今天抽个时间,将问题分为几类,为朋友们给出一点自己的建议,仅供参考!同时,为大家献上一个视频:http://www.agilesharp.com/Share.aspx/T-22 数据库调优视频 第一次课程第一节 发布抉择类:我想学技术,请问该从哪门技术开始学起? 看到这个问题,大家可以联想到很多与之类似的问题,例如“是学BS还是CS,是学.NET还是Java”等。可以说,谁都不可能对这类的问题给出明确的答案,也不敢给出明确的答案,因为万一别人的答案不.阅读全文
posted @ 2011-09-19 18:13 小洋(燕洋天) 阅读(2527) 评论(11) 编辑
摘要: IT草根的江湖之路之八:上阵,职业操守前言:在软件项目的过程中,责任制是很重要。然而,最不容易做到的就是负责任。很多时候看到的是这样的情况:项目成功之后,某某负责人受嘉奖;失败之后,某某负责人致歉,引咎辞职。问题是:道歉可以挽回什么?!进入新公司三天之后,leader分配了我一个任务,初一看,简单的来以为就是合同的增删改查,心里一阵高兴!同时,因为项目是多人开发,所以代码的签入签出规则很严格,因为最起码要确保签入的所有代码都是可以编译通过的,并且一旦有同事如果要运行项目,要确保自己的代码不会导致程序无法运行! 自己从头到尾都很小心翼翼。这和以前创建一个项目,单打独干是完全不一样的!随时要记得:阅读全文
posted @ 2011-09-07 12:42 小洋(燕洋天) 阅读(2664) 评论(19) 编辑
摘要: SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践前言:自从上一篇文章发出之后,收到了很朋友的关注。很多朋友要求多多实践,而不是纯粹的理论。确实,从打算出这个系列开始,我就本着实践的思想来进行的!同时,为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2 议程如下: 实践概述 图形化执行计划实战 执行计划信息解读实践概述 执行计划可以辅助阅读全文
posted @ 2011-09-05 10:30 小洋(燕洋天) 阅读(2277) 评论(8) 编辑
摘要: IT草根的江湖之路之七: 挑战,刚刚开始前言:真实世界中的事情往往不是我们想象那么简单的,软件项目的复杂的业务也不是市面上的什么”精通,企业级”之类书籍能够讲述明白的。不要以为管理系统就是数据增删改查,不要以为数据相差零点零几就没有什么。你要清楚:作为一个开发人员,你最值得骄傲的是什么,职业操守是什么。 这里有一点需要的明白的是:公司为什么请你?说的直接一点,公司不是慈善机构,公司就是花钱请你来为她做事,创造价值的,一个不能创造价值的员工,公司会留你吗? 终于等到了上班的那天,我对任何人都珍惜今天的这个机会,因为没有人知道,在此之前,我经历了怎样的艰辛。 Leader给了我系统的整个数据字典(阅读全文
posted @ 2011-09-05 08:56 小洋(燕洋天) 阅读(2290) 评论(4) 编辑
摘要: IT草根的江湖之路之六:曙光,第一次破例前言:没有绝对的失败,也没有永远的成功!天生我才,要相信自己,最后,总会找到一个属于你的天地!和小辉一起找工作,有段时间了.在此此前,我们不断的上公司”推销”自己,也在不断的在网上投简历,同时也跑一些现场的招聘会。事情往往都是这样的:很多时候,你在不断的努力,不断的寻找,但是迟迟看不到好的征兆出现,只是感觉自己的努力都砸向了一个无敌的深渊。在这种情况下,很多人就有点动摇,慢慢的,终于受不住煎熬,放弃了。任何事情,都是一个发展的过程,可能你今天投入的努力,已经在不知不觉中对以后产生着影响,因为这些影响太微妙了,你丝毫没有觉察到,知道努力不断的积累,沉淀,最阅读全文
posted @ 2011-09-02 10:40 小洋(燕洋天) 阅读(2028) 评论(9) 编辑
摘要: SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程前言:在SQL Server中,执行计划在查询过程中其中关键性的作用,也是数据库性能调优的重要方面,为优化提供了很多的数据依据。本系列文章前前后后会有几十篇,将会对执行计划进行深入浅出的讲述,并且也会讲述如何利用执行计划进行数据库调优。为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx 报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-阅读全文
posted @ 2011-09-01 16:43 小洋(燕洋天) 阅读(2892) 评论(14) 编辑
摘要: IT草根的江湖之路之五:鉴于现实,屈服!前言:因为工作的原因,有段时间没有更新系列了.很多的朋友在看了前几篇文章之后,回信给我说:对it迷茫,有点沮丧!大可不必啊:任何事情不是随随便便就能成功的,不经历过磨练和苦难,如何知道成功后的喜悦和分外的甘甜!好事多磨! 本篇读起来应该是比较的轻松!之前说过了,小辉是java背景的,而我是.NET的。那时候市面上面的招JAVA和C++的公司居多,而招.NET的真是少之又少。我们来到了一家“XXX城市之光科技公司”。里面是相当的空!出来接待我们的是一位中年男子!有点秃!那个人一开口,我们就知道:老江湖了!为什么?尽管那个人说话听起来很客气,但是却是非常的做阅读全文
posted @ 2011-08-29 12:46 小洋(燕洋天) 阅读(2448) 评论(12) 编辑
摘要: IT草根江湖路之四:羞辱,将眼泪吞下前言:很多事情,都不是一帆风顺的;很多的事情,也不是一蹴而就的,更多的事情,也不是说你想怎么样就怎样的!虽然说,但是和小辉想到了”主动上门”有点”傻”,或者说”天真的一厢情愿”,但是那也是没有办法中的办法:没有砸死人的学历,没有很多辉煌的背景,即使你说你的技术在牛,谁信?! 我和小辉就这样抱着那一点点的希望在全市的各个IT企业中奔跑。说实在的,如果这次把所有的IT企业都跑完都没有结果,我们还真不知道下一步如何走!没跑完一个公司,我们心里暗暗高兴,但是,更多的是担心、忧虑:跑一家就少一家!非常矛盾! 我们来到了软件园,这里的公司是很多,我们原本就是希望在这里找阅读全文
posted @ 2011-08-16 17:15 小洋(燕洋天) 阅读(2997) 评论(39) 编辑
摘要: IT草根的江湖路之三:希望,在坚持之中 前言:不管是什么行业,都要学会推销自己,不管自己有没有觉得,很多时候我们都在自觉或不自觉中推销自己!那时候,我们迈出了第一步!我和小辉决定亲自上门去公司,争取面试的机会。记得那是第一天,我们起的非常早,并且选定了今天打算要跑的几家公司,也摸清楚了路线。因为不知道结果会怎么样,我们每天只打印10封简历。虽然说要上门去推销自己,争取机会。但是之前,可是到了公司门...阅读全文
posted @ 2011-08-11 23:43 小洋(燕洋天) 阅读(3635) 评论(43) 编辑
摘要: IT草根的江湖路之二:改变,破釜沉舟的斗争前言:自从第一篇文章发布之后,收到了很多朋友的关注,非常感谢大家的支持!因为工作的原因,文章更新的不是非常勤,也是见缝插针的在写!希望朋友们多多体谅! 从第一家公司离开之后,突然觉得有点很空的感觉,说不出来为什么。而且,终于又重新看到了太阳:因为自从进入公司之后,一直没日没夜的加班,因为是新人,所以比较勤快!一起在公司呆了18天,基本就干了10天的通宵,其余的每天也是半夜2点回家,很少见到太阳!一切都过去了。回到了住的地方,心里非常难受,想想今天早上还挂着公司的工牌去上班,下午就被开除了,确实有点不能接受,转变太快了。在家里窝了2天,也郁闷了2天,心情阅读全文
posted @ 2011-08-10 20:01 小洋(燕洋天) 阅读(3198) 评论(26) 编辑
摘要: IT草根的江湖路之一:11秒,改变人生 前言:应51CTO的邀请,在51CTO六周年之际,准备写一系列文章,此时也发布到博客园,共享! 就从当初刚刚进入IT开始谈起吧。记得那年大四,在参加了几场校园招聘之后,成功的与一家比较知名的欧美企业签约。当看着其他人还在为找工作忙忙碌碌的时候,心里有着莫名的踏实。 在焦急的等待中,半年过去了。终于进入了自己做梦都想来的工作,终于从事了软件开发,终于踏上了白领...阅读全文
posted @ 2011-08-08 23:05 小洋(燕洋天) 阅读(6355) 评论(108) 编辑
摘要: 脚踏实地,不要飘忽不定 前言:老老实实,扎扎实实,把基本动学好,不要动辄“架构”,“模式”。 很有段时间没有写博客了,不知道大家想我了没有!呵呵! 最近接触到了不少开发人员,有刚刚踏入IT的,也有刚刚毕业的,也有已经工作了好几年的,总是问我一些比较莫名其妙的问题:“如何培养抽象的思维?”,“如何学习架构?“等等诸如之类的问题。之所以说”莫名其妙“,是因为这些问题任谁也不好回答,看起来是个问题,其实...阅读全文
posted @ 2011-06-16 20:11 小洋(燕洋天) 阅读(3800) 评论(56) 编辑
摘要: 一双鞋,耐克的6百多;李宁的4百多;特步的3百多;361的2百多;所以,你毕业于一个什么样的大学很重要。 一双鞋,在地摊不过几十元,到了商场、专卖店,会涨到一百甚至几百。所以,你呆在什么地方很重要。 一双鞋,只有合脚并且合意了才能卖出去。所以,沟通了解很重要。 一双鞋,少了一只,是不值钱的。所以,另一半很重要。 一双鞋,样式老的,大多很便宜。所以,更新自己的知识很重要。 一双鞋,积压多年,只能打折处理。所以,碰到合适的就结婚吧。 一双鞋,有人3、5年如新的,有人不到一年穿烂的。所以,有个好上司很重要 1,这是个现实的社会,感情不能当饭吃,贫穷夫妻百事哀。不要相信电影里的故事情节,那只是个供许多阅读全文
posted @ 2011-03-21 09:59 小洋(燕洋天) 阅读(3161) 评论(15) 编辑
摘要: 草根创业回忆录二: 都选择的是什么人?前言:选合伙人和投资就像在选女朋友一样,要谨慎,甚至有时候宁缺毋滥。曾经以为有了钱,就会找到需要的人,后来发现不是这样的。也以为,随便拉几个关系好的哥们一起干,就可以了的,后来发现根本不是这回事。还以为,找几个比较牛的人一起合伙,就会事半功倍了的,后来发现真是有点扯淡。兼职创业很多做开发的朋友,包括我,一直以为:找几个比较牛的同事,利用业务时间,接点单子,或者业余创业,是非常明智而理想的一条路,因为工作和赚钱两不误,大不了平时累点而已。很多不客气的说,这种想法就是“温室想法“:无忧无虑的坐在家里幻想什么事情该什么做,应该怎么做就可以搞定的。就个人经历来看(阅读全文
posted @ 2011-03-10 13:19 小洋(燕洋天) 阅读(4484) 评论(58) 编辑
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2011-03-07 20:40 小洋(燕洋天) 阅读(4300) 评论(59) 编辑
摘要: 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能 前言:在上一篇文章中讲述了一些垃圾回收的一些知识,本篇就讲述如何来监测CLR是否导致了一些性能问题。本篇的议题如下:内存问题概述(前篇)托管资源优化(前篇) 对象的生命周期(前篇) 对象的”代“(前篇) 大对象堆(LOH) (前篇) CLR计数器的使用 (中篇) CLR Profiler的使用(中篇) 垃圾回收器的不同版本(中篇) 对象使用注意事项(后篇) 常用优化措施(后篇)非托管资源优化Session会话的优化  系列文章链接:  构建高性能AS阅读全文
posted @ 2011-02-21 10:04 小洋(燕洋天) 阅读(3963) 评论(8) 编辑
摘要: 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制剖析 前言:本章主要详细的讲述如何因内存问题而导致的性能问题,很多的时候都是深入.NET内核进行分析,然后给出解决方案,同时,本系列的其他文章,也争取做到:深入浅出。 本篇是为后面的做个铺垫,而且比较的精彩。只有真正的理解了本篇,后面才可以顺利的走下去。本篇的议题如下:内存问题概述(前篇)托管资源优化(前篇...阅读全文
posted @ 2011-02-17 11:23 小洋(燕洋天) 阅读(4544) 评论(29) 编辑
摘要: 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下后篇)—减少不必要的请求 前言:本篇的一些内容比较的有意思,总结了可能平时大家可以注意到的一些优化点,而且非常的实用。本篇的议题如下:识别和分析服务端的性能瓶颈(上)内存(前篇)缓存(前篇)CPU(后篇)处理请求线程(后篇)提高性能的一些简单改进措施(下) 部署优化(前篇) 减少不必要回传(前篇) 减少不必要的请求(后篇) 搜索引擎问题 热链接问题 验证码(CAPTCHA) 网络刮刀   系列文章链接:  构建高性能ASP.NET站点 开篇   构建高性能ASP.NET站点之一 剖析页面的处理过程(前端)阅读全文
posted @ 2011-02-16 08:03 小洋(燕洋天) 阅读(4130) 评论(11) 编辑
摘要: 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇给出一些在部署ASP.NET站点时采用的简单的优化措施。同时很也非常的感谢朋友对昨天发的文章的支持,本篇的内容不多,也比较的简单! 本篇议题如下: 识别和分析服务端的性能瓶颈(上) 内存(前篇) 缓存(前篇) CPU(前篇) 处理请求线程(前篇)提高性能的一些简单改进措施(下) 部署优化(前篇) ...阅读全文
posted @ 2011-02-15 08:20 小洋(燕洋天) 阅读(4057) 评论(11) 编辑
摘要: 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(上篇)—识别性能瓶颈 前言:从本篇开始就真正的进入了性能调优的阶段,在之前的文章中提到了页面加载过慢的四个性能问题,其中第一个问题就是:服务端解析.aspx页面的时间过长,本篇就分析这个问题,给出一些方案,因为涉及到的问题很多,的在后续文章会逐个详细介绍。 因为本篇的篇幅过长,所以划分为了多篇。 本篇的议题如下: 识别和分析服务端的性能...阅读全文
posted @ 2011-02-14 08:11 小洋(燕洋天) 阅读(5824) 评论(67) 编辑

态度决定方向,毅力成就行动

前言:很长时间没有检查邮箱了,今天发现里面已经爆满,查看之后,发现很多的邮件都问着相似而又无法让人给出答案的问题,所以今天抽个时间,将问题分为几类,为朋友们给出一点自己的建议,仅供参考!同时,为大家献上一个视频: http://www.agilesharp.com/Share.aspx/T-22 数据库调优视频 第一次课程第一节 发布

 

抉择类:

  1. 我想学技术,请问该从哪门技术开始学起?

     看到这个问题,大家可以联想到很多与之类似的问题,例如“是学BS还是CS,是学.NET还是Java”等。可以说,谁都不可能对这类的问题给出明确的答案,也不敢给出明确的答案,因为万一别人的答案不适合你,你会责骂回答者一辈子,甚至还说“误人子弟”之类的话,这个责任有谁担当得起?

给出两个大方面的建议:以兴趣为导向;向钱看齐。

 

     其实选择行业,学习知识,就是一种投资!如果你兴趣所在,那么就抛开别人的闲话和冷眼,坚持下去。把一件事情做的精益求精,是可以赚到钱的!很多人在没有学精之前就放弃了,并且一直抱怨:为什么赚不到钱。

 

    如果是想快速的赚钱,那么看看市场上缺什么,你就去学什么,这样的回报是最快也是成效最大,但是可能会被市场所左右,成为“广而不精”人!

说了这么多,发现这已经不是一个选择什么技术的问题,而是一种做人思考的方式,别人永远只能给建议,最后还得自己决定!不要指望有神来帮助你,如果真是那样,世界上都是成功者,或大家都是“提线木偶”,被人操控。

 

迷茫类

  1. 我做了几年的开发了,感觉技术一直上不去,请问如何提升?想转型管理,却不知如何办?

     说到这里,经历了这么多公司,面试了也被面试了很多人之后,有一个发现:不是每个人都想把技术学好,也不是每个人都能把技术学好!

其实上述类似的问题,可以归结为一个点“思考方式”!

 

    曾经见过不少开发者,做了近十年,甚至更长,技术一直不怎么样。正所谓“失之东隅收之桑榆”,技术没有上去,但是在做人,处事,交际,领域业务知识,管理等负面有了很大的提升。这也不失为一种收获。

 

    也有不少朋友,确实努力的做了很多年的技术,关注技术,做了很多项目,但是一直技术平平,导致工资不高。其实这就是“用心”的问题。到底有在技术上面花了多少心思?在项目只以什么心态在做?

 

        不同的项目,锻炼的方面是不一样的,即使你认为再烂,在不起眼的项目,从另一方面来看,也是锻炼的机会。例如,国内很多的公司都做管理系统,很多人认为是无聊的增删改查,那么,你可以想想:如何在编写代码的时候,不出一点错;如何提高代码的健壮性,是的系统是更加稳定;如何提高开发效率,开发出一些通用的组件、框架等。

 

     如果你认为人家设计的框架很烂,你是否可以提出自己的框架和设计,证明他们的强(不管你有没有最后在公司提出,起码你要下面自己做出来,也当是锻炼)。

如果你认为这个项目中有很多的问题,说了“假如我们XXX,就好了”“如果采用XXX,我们就不会这样了”。那么,在项目完成之后,有没有反思,将其中的错误分析,给出具体的行之有效的解决方案?

 

     技术就是在解决问题中提升的?例如,有人问我,你为什么对性能知道的这么多?我告诉他,因为又一次在项目中因为某段程序跑得慢,耗资源,而被骂了!

可能有人在骂过之后,改正代码就完了。可能这就激发了深入学习性能优化知识念头!不一样的思考,不一样的行为,结果可想而知。

  1. 我想学习架构设计,请问需要看什么书,或者怎么做?

     我也常常问很多牛人这样的问题,也是每次希望“技术偶像”能够点拨一二!虽然说现在自己还没有什么成就,但是却有一点感受可以分享给大家:架构设计不是看几本书就可以搞定的。需要大量的实战经验和失败教训。

 

     有朋友又说了:我们做的项目就这么多,哪有那么多的经验?

     经验多少和项目的多少不成正比,看你思考的深度!题海战术就一定造就“解题高手”?未必!

再者,现在的国内外的威客网这么多,什么样的项目没有,如果认为自己做的项目少,你可以自己去尝试!(不是鼓励大家去借私活,这是说,方式有很多,没有必要总是抱怨XXX不够)

 

抱怨类

  1. 我想做开发,但是技术不行。公司没有环境。想去XXX公司,人家不要!….

      诸如此类的抱怨,很多人都怕常常抱怨的人,因为之前已经给他们讲了N多次了,但是最后还是抱怨,其实我很想问一句:“你行动了吗?”!

技术不行,可以学啊。没有人教,可以自学,甚至花钱学!走上社会,什么都得靠自己,还指望像学校里面,老师手把手?

人家不要你,为什么不要?分析原因!是自己的问题,还是别人的问题?我见过很多技术不错的朋友,都是一路坎坷而来!如果谁都能轻易成功,成功也就没有意义了!

 

    首发站点:www.agilesharp.com IT创业互推平台

 

     今天就唠叨这些,仅供戏读,如有冒犯,多多见谅!

    

posted @ 2011-09-19 18:13 小洋(燕洋天) 阅读(2527) 评论(11) 编辑

IT草根的江湖之路之八:上阵,职业操守

前言:在软件项目的过程中,责任制是很重要。然而,最不容易做到的就是负责任。很多时候看到的是这样的情况:项目成功之后,某某负责人受嘉奖;失败之后,某某负责人致歉,引咎辞职。问题是:道歉可以挽回什么?!

 

进入新公司三天之后,leader分配了我一个任务,初一看,简单的来以为就是合同的增删改查,心里一阵高兴!同时,因为项目是多人开发,所以代码的签入签出规则很严格,因为最起码要确保签入的所有代码都是可以编译通过的,并且一旦有同事如果要运行项目,要确保自己的代码不会导致程序无法运行!

 

         自己从头到尾都很小心翼翼。这和以前创建一个项目,单打独干是完全不一样的!

随时要记得:这是一个团队!如果不能对团队起促进作用,起码不要影响别人!

 

         第一次灾难发生了:我不小心把自己本地上面的代码签入到了代码管理器中。而且,我也没有及时获取别人的代码,这样,就把别人写的代码全部覆盖掉。想到这里,一身冷汗。

 

         幸好,现在是中午,大家都去吃饭了!我一个人还有时间在下午大家工作之前搞好!

 

         不幸的是,没有人交我如何去做,于是我把代码一个个版本的进行回滚,并且查询修改记录,合并!

         总算是在大家上班之前搞定了!

        

         第一关算是过去了,第二关更加严峻,不仅仅是技术的考验,更是人格的考虑!

 

         因为我们的软件是石油化工软件,每个数据都是要求很精准的,小数点如何保留是特别要考虑的问题。因为一旦某个合同上面的油量偏差过大,输油的人员在按照这个合同输油的时候,就会造成油的泄露!

 

         如果这个情况发生在油品混合控制那一块,出现的现象就是油罐溢出,甚至爆炸,人员伤亡!因为这种情况发生过,所以大家对非常的小心!

 

         当我把这种严格的制度告诉同学之后,那个同学的回答,让我从此远离了他。

 

         “怕什么,自己就做吧,如果出现问题,大不了离职,走人”!(原话)这说的简直就不是人话,出事就走人!只有不负责任的人才会这样,这样职业精神和想法,注定了职业生涯的高度!很不幸,哪位同学被我言中了,一再逃避,最后结果大家也心里明白了!

 

         出事走人,很潇洒啊!受害人怎么办?你的同事怎么办?你的公司怎么办?你的客户怎么办?以后你在行业的信誉怎么办?

 

         我曾经用上面的问题,反问过同学,结果更失望:“我管他呢!”。大学四年,我没有看清楚,走上社会之后,让我看清楚了很多的人和事。

 

         不同的事情,不同的态度,也有不同的结果!一切取决于自己如何处理!就拿数据精度问题而已,你可以培养自己精益求精的作风,一丝不苟的性格;也可以只是一味的抱怨:为什么要处理这些繁琐的问题。

       

        首发站点:www.agilesharp.com  IT创业互推平台

       今天由于时间关系,就唠叨到这里,下一篇:设计,无处不在!

posted @ 2011-09-07 12:42 小洋(燕洋天) 阅读(2664) 评论(19) 编辑

SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践

前言:自从上一篇文章发出之后,收到了很朋友的关注。很多朋友要求多多实践,而不是纯粹的理论。确实,从打算出这个系列开始,我就本着实践的思想来进行的!同时,为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx

报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2

 

         议程如下:

         实践概述

         图形化执行计划实战

         执行计划信息解读

 

实践概述

         执行计划可以辅助我们写出高效率的T-SQL代码,同时也可以找出现有T-SQL代码的问题,还可以监控数据库!当然,最后如何使用执行计划还是取决于我们自己了,但是不管怎么样,我们首先学会解析执行计划中所包含的信息,最快的学习方法就是实践。下面,我们就从一个实践开始。

 

        为了使得大家易于理解,这里的例子不会太复杂,随着课程的不断深入,后续的示例也会越来越复杂。同时,如果大家也想跟着一起动手实践,那么希望朋友们安装SQL2005或更高版本,同时记得安装AdventureWorks数据库。下载地址为:http://msftdbprodsamples.codeplex.com

 

        另外,有一个需要注意的是,由于数据库中数据,操作和时间的关系,可能大家在运行脚本产生的执行计划和我这里不完全一样,这是没有任何问题的!

 

图形化执行计划实战

 

      下面我们正式进入要讨论的话题。

 

       首先,为了使得我们可以查看执行计划,最起码要确保我们在登录数据库的时候,要被授予权限,如下语句所示:

1.GRANT SHOWPLAN TO [username]

 

      为了将讨论集中在执行计划(估计执行计划和实际执行计划)上,我们这里这是运行一个比较简单的查询,如下代码所示:

1.SELECT * FROM [dbo].[DatabaseLog];

      

       下面,我们就来看看这个语句的估计执行计划,正如之前文章讲述的:估计执行计划是优化器使用了的元数据,成本分析算法等而产生的计划,这个计划是查询语句执前的一个分析!

 

显示估计执行计划

         我们可以采用以下几种方式显示估计执行计划:

               1.  点击Sql Server Studio工具栏上的按钮:  

 

              2.  在查询窗口右击鼠标,如下所示:

 

 

             3.  使用快捷键“CTRL + L”.

      对以上面的查询语句,显示的图形化的估计查询计划如下:

 

显示执行查询计划

       与估计执行计划不同,实际的执行计划不是优化器产生的,实际的执行计划是底层的存储引擎在执行时候产生的,这个计划中包含了大量的实际的底层数据和相关的信息。

       我们可以采用以下方式获得实际的执行计划,如下所示:

            1.  点击工具栏上面的按钮:

 

            2.  在查询窗口右击鼠标,如下:

 

            3.  快捷键“CTRL + M”

      上述查询的实际执行计划如下所示:

 

         大家初一看,以为两者没有区别,但是它们包含的数据信息很多是不一样的。

        下面,我们就开始对图形化的执行计划进行解读。

      

执行计划信息解读

         刚刚大家已经看了图形化的执行计划了,相关大家比较关心的问题有两个:如何解读执行计划中提供的各种信息;如何采用执行计划来进行性能调优。

 

         我们首先来看看第一个问题。

 

         一般而言,我们在阅读图形化的执行计划的时候顺序是这样的:从右向左,从下往上。也就说:sql执行的第一步就显示在执行计划的右下角。

         在图形化执行计划中的每一个图标,都表示一个操作,在之前的执行计划中就有两个操作。并且每个操作之前采用箭头连接起来,表明了数据流动的方向,其中箭头的粗细就反应了数据量的大小。

 

         另外,在每个操作下面都显示了一个百分比。

 

        对于估计执行计划而言,这个数字就是优化器对执行计划中每一个操作步骤进行成本分析后的结果。例外,在我们的例子中,整个查询最后会有两个操作会进行,Select和Table Scan,其中整个查询的成本将会落在Table Scan(整表扫描)上。

 

操作提示信息

         当我们把鼠标放在每个操作或箭头上面的时候,就会弹出更多的相关信息,我们下面就来具体的看一看。

         例如,当我们把鼠标放在执行计划的Select操作上面,显示如图:

 

        上面图中给出的信息非常清楚了,我这里只是解释一下“估计子树大小”。因为执行计划可以看出是sql语句的逻辑执行步骤,这个选项就告诉我们:在我们现在所看的这个操作步骤以及后面的所有步骤的开销是多少,是一个总计数字。

         如何朋友们还有有什么不清楚的,我们在后续将要展开的在线讲座中讲述!

        

         下面我们看看Table Scan的提示信息,如下图所示:

 

        虽然这个操作中包含的信息就非常的多了,但是却都很容易理解。

        这里要稍微重点提一下就是“已排序”。很明显,这个值告诉我们:Table Scan这个操作是建立在对数据排序的基础上的。例如,在查询语句中,有时候,我们写上order by语句,那么后续的很多的操作都是在已经排序的数据基础上进行,通过查看“已排序”是true还是false,我们就可以知道,查询语句内部是否自己进行了额外的排序操作(有时候,我们明明没有写order by,但是优化器却认为进行order by之后成本更小,这个时候我们就要注意了)。

 

       最后稍微的提一下“节点ID”,这个值就反应了操作在整个执行计划中的执行顺序,数字越小,说明越早被执行。在上图中,表明table scan操作时整个执行计划的第一步。

 

      为了使得大家更加的清楚,下面我们把之前的查询语句稍微的改下:

1.SELECT * FROM [dbo].[DatabaseLog] order by  PostTime

 

      估计执行计划如下:

 

      我们查看提示信息,发现排序最先进行,然后再整表扫描。

 

      文章首发站点:www.agilesharp.com IT创业产品互推平台

      今天就暂时到这里,下一篇,我们讲述相关的操作以及以文本和xml的形式查看执行计划。

报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2

posted @ 2011-09-05 10:30 小洋(燕洋天) 阅读(2277) 评论(8) 编辑

IT草根的江湖之路之七: 挑战,刚刚开始

前言:真实世界中的事情往往不是我们想象那么简单的,软件项目的复杂的业务也不是市面上的什么”精通,企业级”之类书籍能够讲述明白的。不要以为管理系统就是数据增删改查,不要以为数据相差零点零几就没有什么。

你要清楚:作为一个开发人员,你最值得骄傲的是什么,职业操守是什么。

 

     这里有一点需要的明白的是:公司为什么请你?说的直接一点,公司不是慈善机构,公司就是花钱请你来为她做事,创造价值的,一个不能创造价值的员工,公司会留你吗?

 

    终于等到了上班的那天,我对任何人都珍惜今天的这个机会,因为没有人知道,在此之前,我经历了怎样的艰辛。

 

    Leader给了我系统的整个数据字典(所有数据库表的图),说了一句:“理解所有表的关系,下午我给你讲讲系统的业务背景”。

 

     看到这里,有一点要告诉大家的是:不要再天真的以为公司会花几个星期,几个月的事情,让你慢慢的熟悉业务,熟悉相关的知识,一切要靠自己去快速的领悟与消化,这是一个“物竞天择,能者居之”的社会,不是没有谁就不行。

 

    说道这里,打个岔!同时这里给刚刚毕业或者踏入整个行业的朋友们提个醒:不要再以自己大学多么有名而骄傲,也不要再因为自己以前的成绩多么的好而得以。一个人的学习能力就决定了他以后发展的深度和广度。胸怀决定发展的高度!

 

     不要再以为有人会像老师那样一行行的解释代码是什么意思,不要以为你是新人,犯错就是“理所当然”。No excuse!

 

     在公司,我是最小的,周围都是有几年工作经历的同事,还有四十多岁的。如果公司要裁人(在中国it),那么新人和年纪很大的就是目标群体(在你没有核心竞争力和很好的人缘之前),新人是最大的目标!压力!

 

     毕竟自己从大二就开始在外面兼职和实习,这点觉悟还是有的。所以,接到这第一个任务之后,自己开始行动起来。

 

    面对上百张数据表,无疑是个负责的蜘蛛网,怎么办?那就得看你如何处理了。如果说,你要找人帮忙,也得“察言观色”。下面,我们就细细说来。

 

     首先说如何理解上百张表,无疑,从系统的功能入手时最快速的。系统的功能一般是分模块实现的,那么表势必和相关的功能挂钩,那么把表按照功能划分来看,就很方便了。

 

      所以这里就告诫朋友们一点:要学会逆向思维。一直做项目的时候,总是先设计功能,让后设计表,是吧!现在反推,从表到功能,再回到表,就能够把问题变得简单一点!不要以为这很简单,我这里只是一个简单的例子而已,如果问题更加复杂,怎么办?!

 

      因为我是新人,计算机的权限有限,很多的资源都不能访问,也没有开通查看代码的权限。但是,我现在需要可以运行的系统来帮助我,怎么办?

那么就涉及到第二个问题,如何找人帮忙?

 

      不要傻不拉几的一上去就随便找个人,然后开口说:“帮我一下“!要知道,人家凭什么帮你?人家有事情要忙吗?这个世界没有谁帮助谁是理所当然的!感激帮助过你的朋友和亲人吧!

 

      所以,要学会“察言观色“,这里不是贬义词!做人要灵光点!

      首先,最好请示leader,问他是否有时间?态度要好!如果没有,那么就要问他,除了他还有谁可以问。

 

      当问另外一个人的时候,首先要观察这个人是不是忙的那种不可开交的样子,如果是,那么,现在最好不要问,而是自己再次评估一下,如果要找人帮忙,估计要花人家多长的时间?如何估算,这就是个人的本事了,呵呵!我这里暂且不说,免得又朋友说“你不说,我也知道“ !呵呵!

 

      然后,等自己这边时间也估计好之后,然后态度很好的告诉你需要寻求帮助的人:“可以打扰你几分钟吗“,然后,你就告诉他,你需要系统的一个可以运行的版本! 如果人家没有时间,不要退缩,你就要追问,估计什么时候可以有时间,是否有文档,先让自己熟悉下。然后你就到那个点在再去问,不要忘记,随时注意态度!

 

     不管如何,不要靠指望别人,要靠自己的一些经验或相关文档,尽力的理解。一句话,用心的,带着脑子做事情!

    首发站点:www.agilesharp.com IT创业产品互推平台

    下一篇:上阵,职业操守

posted @ 2011-09-05 08:56 小洋(燕洋天) 阅读(2290) 评论(4) 编辑
IT草根的江湖之路之六:曙光,第一次破例
前言:没有绝对的失败,也没有永远的成功!天生我才,要相信自己,最后,总会找到一个属于你的天地!
 
和小辉一起找工作,有段时间了.在此此前,我们不断的上公司推销自己,也在不断的在网上投简历,同时也跑一些现场的招聘会。
 
事情往往都是这样的:很多时候,你在不断的努力,不断的寻找,但是迟迟看不到好的征兆出现,只是感觉自己的努力都砸向了一个无敌的深渊。在这种情况下,很多人就有点动摇,慢慢的,终于受不住煎熬,放弃了。任何事情,都是一个发展的过程,可能你今天投入的努力,已经在不知不觉中对以后产生着影响,因为这些影响太微妙了,你丝毫没有觉察到,知道努力不断的积累,沉淀,最后产生质变,爆发。那一刻,终于到来,甚至超出了了你的期望。工作如此,创业如此,生活如此,人生亦如此。
 
记得那是星期五的下午,在此之前,小辉已经走了,找到了自己的工作,我一个人在独自奔走。那天,我接到了很多的面试电话,整个人都激动的不知道说什么了,我像是抓住了救命稻草,对于每一个电话,我都是非常有礼貌的回复。因为很多的公司面试时间都重叠在一起了,所以,我尝试和他们商量,看能不能把时间稍微改动一下。他们都答应了。感谢!
从那时候开始,我就给自己定了一个目标:只要给我面试机会,我就能够进哪家公司上班。所以,这就要求自己在面试过程中,全面的展示自己,从各个细节,说话,行为,技术等方面。
 
我早早的来到了要面试的公司。我一般习惯于提前到,原因有几个。首先,最起码保证不会因为迟到。其次,可以先去那家公司看看,观察他们周围的环境,以及出入公司人的一些衣装,免得自己穿着与他们格格不入。第三,如果有机会,可以随便和里面的一些人聊聊(如果公司还没有开门,大家肯定会等的,此时,就是很好的机会,一方面,可以训练自己的胆量,另一方面,可以进一步的了解公司)。总之,一句话,尽可能在力所能及的范围内多收集信息。(这就有点像“情报忍着”)。
 
首先,面试我的是HR,人长的蛮漂亮的,态度也好!和我用英语聊了一些自己的经历,大学,以及经验。当然了,人家的英语是没的说的,有些时候,我自己没有挺清楚,也找了一些比较礼貌的措辞掩盖过去了。
接下来就是技术面试,面试我的是一个项目leader,人看起来比较友善(后来共事发现,人确实不错)。我们聊了技术问题,我说我懂相关的架构设计知识。这一下子就勾起了leader的兴趣,他就用实际项目中的问题和我聊了起来,同时,我们还了解相关的新技术,还有分布式开发等等。虽然说是面试,但是大家聊的比较开心。
一个多小时就过去了,HR的美女又进来,然我和项目主管去聊聊。呵呵,我知道,走到这一步,前面的面试都通过了,心里暗喜。
项目主管和我聊了很多,我也很清楚的告诉他,我的3年,5年职业规划是什么,以及如何一步步的达到。这些要说的有理,如果瞎忽悠,人家一听就知道了。
上午很快的过去了,接下来就是等消息。
说实在的,相比其他公司而言,这家公司,我比较想去!
 
大家到这里也估计猜想到了,我去了那家公司,呵呵!
入职那天,HR和我又谈了一下,我才知道,这家公司只招3年以上经验的,对于我,破例了,因为leader和项目主管一直统一要我。并且之前来公司面试的一批人,都是5年以上经验的,依然没有进来。
 
机会已经摆在眼前,场所也为自己提供了,接下来,就要证明:
1. 公司选择我是对的!
2.leader和主管的眼光没有错,努力工作,把事情做好,也当时感恩。
3.向曾经开除我的公司证明:开除我,是你们损失,是你们不珍惜人才!
4.向所有人证明,我的职业生涯和你们不一样!
 
首发站点:http://www.agilesharp.com/ IT创业产品互推平台
 
下一篇:挑战,刚刚开始
posted @ 2011-09-02 10:40 小洋(燕洋天) 阅读(2028) 评论(9) 编辑
SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
前言:在SQL Server中,执行计划在查询过程中其中关键性的作用,也是数据库性能调优的重要方面,为优化提供了很多的数据依据。本系列文章前前后后会有几十篇,将会对执行计划进行深入浅出的讲述,并且也会讲述如何利用执行计划进行数据库调优。
 
为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx

报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2

 
本篇文章的议题如下:
  1. 查询计划概述
  2. 查询解析
  3. 查询优化器
  4. 查询执行
  5. 查询计划的重用
查询计划概述
 
    很多时候,当我们在使用sql server的时候,做的事情非常简单:输入sql语句,然后执行,最后获取结果。下面,为了使得大家更加清楚的了解Sql server的内部机制,我们就重新来审视一个sql语句的执行。
 
    把sql语句提到给了之后,数据库会执行一系列的内部处理,我们大致的可将内部的处理按照执行的顺序,划分为两个阶段:
    1. 发生在关系引擎中的操作
    2. 发生在存储引擎中的操作
     
    在数据库的关系引擎中,sql 的查询语句会解析并且将解析的结果传递给后面的查询优化器,查询优化器负责生成执行计划。之后,执行计划(以二级制的格式)就会被传递到存储引擎里面,最后返回或更新底层的数据。
 
    数据库的存储引擎会进行很多的操作,例如锁定,索引的维护,事务的处理等。
 
    因为本系列文章主要的剖析执行计划,所以我们的关注点会放在关系引擎上面。
 
    下面,我们就来稍微详细的讨论一个sql查询语句的执行过程。
 
查询解析
 
    正如我们刚刚提到过:当把一个sql语句提交到了数据库以后,sql语句最先会被传入到关系引擎中。
 
    当sql语句达到了关系引擎之后,首先要进行的操作就是检查sql语句的格式是否正确。这个处理过程就是我们常说的“解析”过程。解析过程的结果就是生成一个解析树,或者称为查询树。查询树反映了一个查询要执行的逻辑步骤,查询树的结构类似下面图中所示:
Untitled.png
 
    其实从编译原理的角度来看,这个解析过程就是文法和词法的解析,最后生成语法树。
 
    有一点需要注意的就是:如果提交的sql语句不是一个数据操作语句(数据操作语句指Select,Insert,Update语句),那么这个语句是不会被优化的。例如,如果提交的sql语句是创建一个数据表,那么这个语句是不会被优化的,而是直接执行。
 
    如果提交的数据操作语句,那么之前由关系引擎创建的解析树就会传递给algebrizer组件执行绑定过程。在这个绑定过程过程中,这个algebrizer组件就会去检查解析树中的表名,列名是否都关联到了数据库中相应的表或对象的引用。
 
    同时,algebrizer组件还负责确定解析树中的每个节点的类型是否和数据库中对应的是否一致。algebrizer组件以从下到上的方式开始遍历树,即,先从页级节点开始,也就是列和常量。
 
    绑定解析是一个非常重要的过程,在这个过程中还会识别出我们自己定义的一些别名。这个过程执行完成之后,就会产生一个二进制的“查询处理树”,这个树会被传递给查询优化器。
 
查询优化器
 
    查询优化器使用查询处理树和相关的统计信息来生成一个执行计划。
 
    换句话说,查询优化器指出了如何最好的去执行提交的sql语句。查询优化器会决定是否可以采用索引来访问数据,采用那种类型的join操作会更好(例如,尽管我们有时候在sql中写的是Left Join,可能查询优化器在分析之后,在保证结果一样的前提下,采用Inner Join)。
 
    查询优化器是一个基本成本分析的优化器。这意味着它会尝试为每个sql语句生成成本最低的执行计划。
 
    另外,我们来归对于优化器所用到的统计数据进行简要的解析。所谓的统计数据,就是在数据库中描述列、索引相关信息的数据,即数据的数据,或称之为“元数据”。优化器就是结合统计数据和查询处理树来进行成本的估计的。
 
    在默认的情况下,统计信息是由数据库内部自动的进行更新的(在调优的时候,可以手动的更新)。
 
    需要提及的就是:表变量是没有任何的统计数据的,也就是说,如果对表变量中的数据进行查询,优化器是不做任何的优化的。但是临时表是有相应的统计数据的。
 
    有一点需要注意的就是:上面的成本只是“估算”而已。一些复杂的语句可能会有很多个候选的执行计划,在这种情况下,查询优化器不会分析所有的组合,而是找出一个接近理论最小值的一个执行计划。计划的成本表现为估计完成查询所需的时间。最低估计成本不一定是最低的资源成本。
        
查询执行
 
     一旦执行计划生成之后,操作就转入存储引擎中,这也是查询真正被执行的地方,也是根据估计执行计划 产生实际执行计划的产所。
 
查询计划的重用
 
    从之前的一些步骤可以看到:Sql Server产生一个实际的执行计划需要很多的步骤和很多的成本(执行计划的过度编译往往成为一个很大的性能问题),必须尽可能的重用执行计划(如果后文不做特殊说明,执行计划就指代“实际执行计划”),所以,在数据库中,一旦执行计划产生之后,就被缓存在了内存中(称之为计划缓冲)。
 
    正如之前所提到的,当优化器产生了估计的执行计划之后,计划就会被传递给存储引擎。其实在将估计的执行计划传给存储引擎之前,查询优化器就去“计划缓冲”中查找与现在估计的执行计划对应的实际执行计划。如果找到了,那么,查询优化器将会使用执行计划传进行后续操作。这样就避免了重新生成实际的执行计划。
 
    一般而言,每个查询的执行计划都只保存一个,除非查询优化器知道采用并行执行可以产生更好的性能,此时,并行查询的执行计划就被缓存起来,也就是说:同一个查询,在计划缓冲中有两个执行计划。
 
    执行计划并不是永远被保存在内存中的。它们也是会过期的。SQL Server会基于最近最少使用的算法来移除那些不常用的执行计划。下面列出了执行计划被移除的几个条件:
 
    1. 系统产生了内存压力,需要更多的内存,此时迫使SQL Server释放自己占用的内存。
    2. 内存中的执行计划的最近使用次数为0.
    3. 执行计划没有被现在的数据库连接引用。
 
      注:熟悉.NET的朋友,可以将之与.NET的垃圾回收机制类比理解。
 
      今天就到这里,下一篇,我们将对执行计划进行更多的分析!
 
      更多文章尽在:首发:IT创业互推平台 www.agilesharp.com 
     报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2
posted @ 2011-09-01 16:43 小洋(燕洋天) 阅读(2892) 评论(14) 编辑
摘要: IT草根的江湖之路之五:鉴于现实,屈服!前言:因为工作的原因,有段时间没有更新系列了.很多的朋友在看了前几篇文章之后,回信给我说:对it迷茫,有点沮丧!大可不必啊:任何事情不是随随便便就能成功的,不经历过磨练和苦难,如何知道成功后的喜悦和分外的甘甜!好事多磨! 本篇读起来应该是比较的轻松!之前说过了,小辉是java背景的,而我是.NET的。那时候市面上面的招JAVA和C++的公司居多,而招.NET的真是少之又少。我们来到了一家“XXX城市之光科技公司”。里面是相当的空!出来接待我们的是一位中年男子!有点秃!那个人一开口,我们就知道:老江湖了!为什么?尽管那个人说话听起来很客气,但是却是非常的做阅读全文
posted @ 2011-08-29 12:46 小洋(燕洋天) 阅读(2448) 评论(12) 编辑
摘要: IT草根江湖路之四:羞辱,将眼泪吞下前言:很多事情,都不是一帆风顺的;很多的事情,也不是一蹴而就的,更多的事情,也不是说你想怎么样就怎样的!虽然说,但是和小辉想到了”主动上门”有点”傻”,或者说”天真的一厢情愿”,但是那也是没有办法中的办法:没有砸死人的学历,没有很多辉煌的背景,即使你说你的技术在牛,谁信?! 我和小辉就这样抱着那一点点的希望在全市的各个IT企业中奔跑。说实在的,如果这次把所有的IT企业都跑完都没有结果,我们还真不知道下一步如何走!没跑完一个公司,我们心里暗暗高兴,但是,更多的是担心、忧虑:跑一家就少一家!非常矛盾! 我们来到了软件园,这里的公司是很多,我们原本就是希望在这里找阅读全文
posted @ 2011-08-16 17:15 小洋(燕洋天) 阅读(2997) 评论(39) 编辑
摘要: IT草根的江湖路之三:希望,在坚持之中 前言:不管是什么行业,都要学会推销自己,不管自己有没有觉得,很多时候我们都在自觉或不自觉中推销自己!那时候,我们迈出了第一步!我和小辉决定亲自上门去公司,争取面试的机会。记得那是第一天,我们起的非常早,并且选定了今天打算要跑的几家公司,也摸清楚了路线。因为不知道结果会怎么样,我们每天只打印10封简历。虽然说要上门去推销自己,争取机会。但是之前,可是到了公司门...阅读全文
posted @ 2011-08-11 23:43 小洋(燕洋天) 阅读(3635) 评论(43) 编辑
摘要: IT草根的江湖路之二:改变,破釜沉舟的斗争前言:自从第一篇文章发布之后,收到了很多朋友的关注,非常感谢大家的支持!因为工作的原因,文章更新的不是非常勤,也是见缝插针的在写!希望朋友们多多体谅! 从第一家公司离开之后,突然觉得有点很空的感觉,说不出来为什么。而且,终于又重新看到了太阳:因为自从进入公司之后,一直没日没夜的加班,因为是新人,所以比较勤快!一起在公司呆了18天,基本就干了10天的通宵,其余的每天也是半夜2点回家,很少见到太阳!一切都过去了。回到了住的地方,心里非常难受,想想今天早上还挂着公司的工牌去上班,下午就被开除了,确实有点不能接受,转变太快了。在家里窝了2天,也郁闷了2天,心情阅读全文
posted @ 2011-08-10 20:01 小洋(燕洋天) 阅读(3198) 评论(26) 编辑
架构设计