专注ASP.NET和SQLServer2008 BI&GIS

骂别人不革命,便是革命者,则自己不做事,而骂别人的事做得不好,自然便是更做事者。
若与此辈理论,可以被牵连到白费唇舌,一事无成,也就是白活一世,于己于人,都无益处。
我现在得了妙法,是谣言不辩,诬蔑不洗,只管自己做事。——鲁迅1934年6月21日信
posts - 252, comments - 1228, trackbacks - 27, articles - 6
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

总结下这段时间的工作经验

Posted on 2008-06-18 21:47 aspnetx 阅读(2068) 评论(18)  编辑 收藏 所属分类: (BI)商业智能

最近做一个数据质量分析和主题分析的项目,里面用到了SQLServer2005的IS和AS部分,在这个过程中经历了很多惨痛的教训,多少吸取了一些经验,虽然更多的都是”低级失误”,不过还是希望能记下来,以后避免发生类似的问题:

1.磁盘空间
在团队中我想来建议把系统盘分配成30G大小,即使你是win2003+vs2005+sqlserver2007+office2007,这些东西装完后其实也就15G左右,似乎够用,但经验上来看,C盘会随着你的使用逐渐变小,刚开始我分配20G的时候到后来C盘就剩几兆,尴尬的很.
不过如果是再做类似的项目的话,我倒建议把C盘分得更大些.做IS的时候很多要用到快速加载,这个过程需要临时表来参与,如果空间不够的话,你导2000万的数据,前1999万都没问题,很有可能到最后1万的时候空间不足而导致失败.
当然这里也可以把数据引擎实例安装或者配置到其它盘,这个完全可以根据自己所遇到的数据量酌情配置.
这一点,是当你处理大量数据的时候不得不考虑的问题,这个先期要是考虑不到的话,就会像我们一样任务中途不得不花费不必要的时间来重新安装或者部署什么.

2.合理的结构
在处理多维数据集的时候经常遇到处理的步骤停滞在那在那个分区的处理上,不往下走.我所遇到这个问题的时候,等了两个小时,后来被迫终止任务,重新检查多维数据集结构,发现结构设计的很有问题,明明只用到了其中的一个维度而把一个事实表同时也做成了维表,这样的聚合简直就是个灾难.后来把这个多维数据集重新做完以后,五分钟的时间多维数据集就处理完了.
当然这里需要提一下的就是,在团队成员做好相应的多维数据集之后,最好是能自己再审查一下.这不是因为对团队成员不信任,而是因为你终究要对过程和质量负责,另外团队成员的技术水平参差不齐,所以这是注定要做的一个工作------我之前就遇到过一次,一个实习生为了得到一个实施表和维度表的结构,套了五六重视图.
如果问题是在运行的过程中才发现的话,那么排除问题可能会花费你更多的时间.

3.版本问题.
这里所提及的是SQLServer的版本.在社区里比较常见的是开发版和企业版.从做业务系统的角度来说,这个版本似乎不会有太大的影响,但是在处理大规模数据的时候,据团队成员反应其性能表现还是不一样的,其中一个兄弟的反应是开发版在处理完数据后所消耗的内存会一直驻留着,除非你重新启动服务,而企业版做事就很干净,处理完数据后你会发现企业版把战场打扫得干干净净.当然这个问题没有得到官方的验证,只是也偶尔听微软的朋友提及过,但是为了不至于耽误任务进度,如果你有企业版的话,建议还是使用企业版.

4.数据的备份.
微软的系统以前死掉是蓝屏,现在蓝屏少了,取而代之的是不响应你的任何操作.经过这次的惨痛教训,我十分不建议所有的工作都在一台机器上做.在我们的任务过程当中,ETL,多维数据集处理以及各种程序都跑在一台机器上,当初没有备份的一个主要原因是因为数据量太大而且过程也比较复杂,但是后来遇到的问题真是有惊无险:这台机器在运行一段时间之后突然死掉了,没有任何反映,当时是正在处理数据,没办法热启下机器,启动后进入登陆界面,输入完密码后就是什么也都不提示.有经验的兄弟说这是sqlserver在做表修复,没办法大家就得等,结果,一个小时就这么过去了------要知道我们可是在晚上加班啊.
要是这个时候能有另外一台机器马上顶上的话,那么就不至于耽误这么多的时间.另外,数据备份出来,如果有能拆接的任务可以分别部署到两个机器上去跑,从而提高性能(悲哀的是,我们这次任务重每一步都是串行的).

5.网络啊网络
很多情况下可能你所处的网络环境当中,网络管理员对网络的管理不是很好,以至于网络内到处都是攻击,这往往是很常见的.还记得当年在某一大学的内部网里,但凡是win2003的系统,只要你不装SP1,接上网线后就马上中招,准准的.这个在任何场景下可能都很难避免,而且公司人数越多危险性往往就越大,而更多时候问题往往不是出在你所负责的团队,而是来自于其它团队或者项目组的”肉机”所发出的攻击.你总不想在两台机器协同处理数据的时候网络突然瘫痪掉吧(我遇到过,任何的两台机器都无法互相访问).
这个问题可能说起来有点天方夜谭,但事情往往就是这么邪门. 所以,安全起见,除了要注意平时的安全外,建议把自己团队的机器部署到一个路由器下面,要是发现问题马上拔路由器上的网线,不要因为公司网络的问题突然影响到你的任务的进展.


其它:
与AS打交道的团队成员,无论是做挖掘模型还是做多维数据集,都反应过机器很容易就死掉的这个问题,而这个毛病确实也是屡试不爽.这个时候,除了前面建议的改进挖掘结构或多维数据集结构外,机器的配置要求也是很高的.我们的开发用机器是P4 3.0+2GB这样的机器,所以要处理AS服务的话,如果实在没有服务器,还是建议申请配置比较高的机器.
类似这样的项目,数据的一次处理周期会很长,每个最小粒度的处理单位很有可能都要一个小时,所以任何一个地方出了问题,就可能白白的浪费掉了一个小时,当然这还不算把问题解决掉的时间,而当你发现这个问题是由于系统原因造成的时候而不得不让你重装什么东西的时候,所需要的时间更是无法估算的.

记录这些,希望下次不要再遇到这样类似的”低级失误”,同时把这些分享出来,希望能让更多的朋友也能把时间节省下来,正常下班,好好休息,呵呵,希望大家平时都能注意自己的身体,关注自己的健康.

希望本文对你有帮助
------aspnetx

Feedback

#1楼    回复  引用  查看    

2008-06-18 22:30 by Justin      
lz可是潜水好久啦!

#2楼    回复  引用  查看    

2008-06-18 22:33 by BAsil      
下半年,可能需要接触数据挖掘,先占个坑,向搂住学习

#3楼    回复  引用  查看    

2008-06-18 22:41 by 沙加      
还要把C盘分大点~~? 那你的恶梦会越来越多~~~我C盘只有10G~~所有软件都不装在C盘~~这样备分的大小会少很多,也不容易出问题~~临时文件, pagefile,网页缓存 都放一个专门的盘~~

#4楼    回复  引用  查看    

2008-06-18 23:07 by bluesky521      
win2003+vs2005+sqlserver2007+office2007
----为什么要把这些东东都装到C 盘呢?装D盘不行吗?装D盘后做C盘的GHOST备份不更轻松些?

#5楼    回复  引用    

2008-06-18 23:19 by htqx [未注册用户]
分50G c盘,别怕。

#6楼    回复  引用  查看    

2008-06-18 23:28 by 天 天      
咨询下,AS用什么工具?我在看IS用的是一个试用版。

谢谢!

#7楼    回复  引用  查看    

2008-06-18 23:32 by 曲滨*銘龘鶽      

re:凡是win2003的系统,只要你不装SP1,接上网线后就马上中招,准准的
其实如果在病毒比较凶的网络里,就是不装sp2 也会马上中招;
我建议楼主在找个集成sp2的系统盘,装系统后立刻禁止网卡上的netbios
然后打补丁,如果不需要 netbios 就可以不启动了,netbios 太容易被利用
尤其是服务器密码弱,和没打补丁的情况;

楼主的公司安全方面做的太....
做程序员的如果发布系统时被病毒郁闷够呛,如果在被看客户到可是很裘的啊,呵呵;在自己家就忍了吧。


都放C 盘也不是不好了,可以做一个gho还原盘,直接给客户放入光驱
一下搞定所有的安装。什么,分区,格式化、系统,数据库、程序,安全设置等等;不过驱动要挂全点否则dos 或 pe 人不出 scsi

我做的好多项目,尤其是大点的都是做的系统ghost封装盘,中病毒了,把数据备份出来直接在回ghost而且很容易教会客户【光驱启动,把盘放入按回车ok】,然后在更新补丁基本20分钟就搞定、不过要求客户那里是台空服务器很方便的;杀毒软件,防火强就免了系统自带足以,设置好了基本不会中毒的;局域网多半直接感染 iis 的病毒少、netbios 关了比较安全;

#8楼    回复  引用  查看    

2008-06-19 07:05 by 生鱼片      
下次c盘空间分大点,我也一直这么想,呵呵

#9楼 [楼主]   回复  引用  查看    

2008-06-19 08:04 by aspnetx      
@bluesky521
--引用--------------------------------------------------
bluesky521: win2003+vs2005+sqlserver2007+office2007
----为什么要把这些东东都装到C 盘呢?装D盘不行吗?装D盘后做C盘的GHOST备份不更轻松些?
--------------------------------------------------------

这样做的话,当你发现vs2005或者sqlserver2005以及office坏掉的话,你将不得不连同ghost和众多系统软件全部重新安装.

#10楼 [楼主]   回复  引用  查看    

2008-06-19 08:06 by aspnetx      
--引用--------------------------------------------------
沙加: 还要把C盘分大点~~? 那你的恶梦会越来越多~~~我C盘只有10G~~所有软件都不装在C盘~~这样备分的大小会少很多,也不容易出问题~~临时文件, pagefile,网页缓存 都放一个专门的盘~~
--------------------------------------------------------

个人也推荐这样的方法,不过,就怕某个装在其它盘的应用软件坏掉.是个很头疼的问题.

#11楼 [楼主]   回复  引用  查看    

2008-06-19 08:07 by aspnetx      
@天 天
AS=analysis services
这些都在sqlserver 2005里.感觉与您所提到的IS好像不是一个东西,试用?

#12楼    回复  引用  查看    

2008-06-19 08:28 by Ryan Gene      
写得挺实在的,谢谢~

#13楼    回复  引用  查看    

2008-06-19 11:53 by 小龙3      
C盘分小了!安装好操作系统后可以用Acronis Disk Director Server 10.0.2169 (支持WIN2003/VISTA)修改。

http://hi.baidu.com/idragonet/blog/item/d1ea822be02f1dffe7cd407b.html

#14楼 [楼主]   回复  引用  查看    

2008-06-19 11:59 by aspnetx      
@小龙3
说到这个我更哭,我用的是server2008......

#15楼    回复  引用  查看    

2008-06-19 14:02 by 红尘中迷茫      
c盘应该只装系统文件,开发软件和应用软件也要分开装,数据库可以装到D盘,但是数据文件可以分散到其他盘,mdf文件和ldf文件最好也分到不同的盘里。

#16楼 [楼主]   回复  引用  查看    

2008-06-19 14:59 by aspnetx      
@红尘中迷茫
这个建议生产环境中这么设置.

#17楼    回复  引用  查看    

2008-06-19 19:13 by 皇帝的新装      
谢谢分享。

#18楼    回复  引用  查看    

2008-06-25 22:48 by 天 天      
@aspnetx
感谢提醒。

后来发现了,IS的开发环境也可以进行AS的开发,但目前项目只涉及RS和IS,对AS学习还得需时日,以后还望不吝赐教!