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

最近做一个数据质量分析和主题分析的项目,里面用到了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

原文地址:https://www.cnblogs.com/aspnetx/p/1225001.html