SVS 没有尽头

SVS is SQL & Visual Studio
随笔 - 21, 评论 - 29, 引用 - 0

导航

关于

做技术的路没有尽头,你只能看到前方几公里,但是更远的地方总是看不太清,当远处的景色渐渐清晰,回首看,有我们深深的足迹。兄弟们,上路吧,前方还有更多的难关,也有更美的景色。

每月存档

最新留言

  • re:在Transaction Replication环境中BLOB字段数据的处理
    <p>ed hardy a famous ed hardy store which sell directly ed hardy clothing, shoes, boots, swim...
    by ghds(注册) on 2010/2/27 17:12:44
  • ghd central
    <p>Choose, buy and shop for on sale tiffany jewelry including Tiffany &amp; Co Silver Nec...
    by ghds(注册) on 2010/2/27 17:11:53
  • Re
    The easiest way out to have a good grade is to get the great <a href="http://www.primewritin...
    by EMILY18(注册) on 2009/12/30 5:03:28
  • re:StreamInsight系列-Adapter
    <p>联系着看东西也会累的更别说写了</p>
    by onbove(注册) on 2009/12/28 0:50:54
  • re:StreamInsight系列-Adapter
    <p>同感啊</p>
    by onbove(注册) on 2009/12/28 0:50:06
  • re:StreamInsight系列-Adapter
    里面有张图地址在下面,我不知道怎么贴图上去 http://i.msdn.microsoft.com/Ee391355.6d4f7698-79da-4eaf-9def-d24bc76f6687(en-...
    by sun.wei(注册) on 2009/12/25 15:58:30
  • re:StreamInsight系列-Adapter
    里面有张图地址在下面,我不知道怎么贴图上去 http://i.msdn.microsoft.com/Ee391355.6d4f7698-79da-4eaf-9def-d24bc76f6687(en-...
    by sun.wei(注册) on 2009/12/25 15:58:21
  • re:StreamInsight系列-What it is
    <p>AHA, this is the first post i saw in Chinese on StreamInsight</p>
    by zee(注册) on 2009/12/25 12:12:27
  • re:RBS 补充解释
    <p>嗯,很不错的介绍。只可惜对那些刚刚开始了解RBS的人帮助会比较有限。如果再能写几篇introductory的文章就好了。</p>
    by demonfox(注册) on 2009/11/19 17:27:42
  • 黑客技术培训_www.hackes.cn
    <p>中国偶然黑客联盟黑客技术学习培训</p> <p>&nbsp; 名称:偶然网络科技 联系QQ:692566045 邮箱:<a href=&...
    by yumen1011(注册) on 2009/11/10 4:02:37

广告

It's NUMA

NUMA这个词3年前就听说过,但是从来没有过很好的理解,这次的项目中终于遇到了一个NUMA的设备,对这个东西有了一些了解。

之前很多人都认为MS的产品只能使用在中小企业,进不了企业级市场,MS的东西都是在PC server上来实现,无法和IBM的主机系统来PK。随着硬件的不断发展,PC Server的优势也渐渐体现出来了,但是很多时候用户还是希望能够有更强大的PC Server来运行他们的系统。IBM的主机可以有数千颗CPU肯定比只有几十颗CPU的PC Server快很多。但是现在的PC Server也可能做到几百颗的CPU,这样就要看看微软的产品是否支持了。

硬件已经趋向使用多条系统总线,每条系统总线为一小组处理器提供服务。每组处理器都有自己的内存,并可能有自己的 I/O 通道。但是,每个 CPU 都可以通过一致的方式访问与其他组关联的内存。每个组称为一个“NUMA 节点”。NUMA 节点中的 CPU 数量取决于硬件供应商。访问本地内存比访问与其他 NUMA 节点关联的内存快。这就是“非一致性内存访问体系结构”名称的由来。

在 NUMA 硬件上,有些内存区域与其他区域位于不同的物理总线上。由于 NUMA 同时使用本地内存和外部内存,因此,访问某些内存区域的时间会比访问其他内存区域的要长。“本地内存”和“外部内存”通常用于引用当前正在运行的线程。本地内存是指与当前正在运行线程的 CPU 位于同一节点上的内存。任何不属于当前正在运行的线程所在的节点的内存均为外部内存。外部内存也称为“远程内存”。访问外部内存的开销与访问本地内存的开销比率称为 NUMA 比率。如果 NUMA 比率为 1,则它是对称多处理 (SMP)。比率越高,访问其他节点内存的开销就越大。不支持 NUMA 的 Windows 应用程序(包括 SQL Server 2000 SP3 及更低版本)有时在 NUMA 硬件上的执行效果非常差。

NUMA 的主要优点是伸缩性。NUMA 体系结构在设计上已超越了 SMP 体系结构在伸缩性上的限制。通过 SMP,所有的内存访问都传递到相同的共享内存总线。这种方式非常适用于 CPU 数量相对较少的情况,但不适用于具有几十个甚至几百个 CPU 的情况,因为这些 CPU 会相互竞争对共享内存总线的访问。NUMA 通过限制任何一条内存总线上的 CPU 数量并依靠高速互连来连接各个节点,从而缓解了这些瓶颈状况。

这次使用的系统是Unisys ES7000,有4个NUMA节点,每个节点有4颗6核的CPU组成,总计16颗CPU,96核,内存224GB,存储超过20T。很容易看出这套系统是由多台PC Server组成的,这样中系统的扩展性和性价比是主机系统无法比拟的。

既然有这样的硬件,软件也 需要能够支持这种类型的PC server。NUMA在这里起了很大的作用。使软件能够更好的使用CPU和CPU缓存。对于数据库应用来说是非常有益的,SQL Server 2005以后的版本支持Soft NUMA,可以通过配置在硬件NUMA上提供软件NUMA这样就可以提供多个IO线程和Lazy Writer线程。下面这个就是在创建索引时CPU的工作情况。

 

image

posted on 2009-05-11 18:21:39 by sun.wei  评论(1) 阅读(4291)

一次POC的总结

最近好久都没发文章了,因为一直在做一个关于dw的POC,主要就是使用SSIS来做一些ETL的东西,现在拿出来和大家分享一下。

数据源文件

对于ETL来说经常会遇到文本形式的源文件,如果在导入数据库时不需要进行转换,可以直接通过BCP来导入数据库。但是对于文本中有中文的情况要注意一些问题,尤其是繁体中文。通常情况下为了减少文本的大小我们都会使用ANSI的格式进行文本的导出,但是如果在一个列中存在简体中文和繁体中文,这个时候必须使用unicode,否则会出现问题,而且通常情况下我们都不会使用逗号进行列的分割,更多的时候会选择|来做为分隔符,而繁体中文的编码中很多字都会被转成|,这样列的顺序就出现了错误。如果能够统一使用一种文字是不会出现这种问题的,因为在选择文本的时候我们可以为文本选择相应的编码,例如简体中文可以选择GBK 936,但是这样就不能支持繁体中文了。我在项目中就遇到了这样的问题,所以只能通过编写一个转换unicode文件的工具来实现,这样的副作用就是文件体积会增大一倍。

SSIS

对于SSIS来说,重要的是选择如何能够设计一个能够最大并行化的系统过程。现在的服务器都有很多个核和CPU,例如我这次使用的就是一个96核的服务器,但是如果只能使用1个线程来做SSIS,这样肯定无法更多的利用系统资源。

对于SQL Server来说,在SQL 2005以后的版本可以支持分区,这个功能可以有效的使用线程资源,例如在进行全量数据导入的时候就可以使用这个特性,将源文件分割成多份,每一份对应成一个分区,这样多个分区可以同时使用。

对于SSIS的设计来说,SSIS中使用了流的模式,这样最好将转换都在SSIS的Pipeline中实现,而对于SSIS来说可能存在block的操作尽量在其他的地方实现。例如Sort、Merge等。

还有一点要注意的地方就是aggregate,在SSIS中aggregate无法对string进行计算,而这个操作在数据库中是可以实现的。原因在于,在数据库中已经制订了排序的方式,而在SSIS中就无法进行设置,当然这个设置和aggregate组件的设计有些关系,但是还好毕竟很少会对字符进行max(),min()的操作

SQL Server

在SQL Server中除了分区之外还要注意的一个问题就是压缩。压缩对于数据仓库来说还是非常重要的,可以对数据和Index来进行压缩,收益在于同一个页中可以存储更多的数据,这样一个physical read可以多读一些行,而损失在于压缩和解压的过程需要20%的CPU损耗,如果你的系统磁盘是瓶颈的话,可以使用压缩来进行缓解,但是会影响CPU,这个需要根据不同的服务器系统进行平衡

 

最重要的就是选择合适的技术来实现需求,而不是使用一种方法来实现全部的功能,ETL的工具有ETL和ELT的模式区别,都是各有优缺点,有些需求就可以使用staging 数据库然后用ELT的方法做,有些就可以直接用SSIS来ETL做,这个取决与需求。

posted on 2009-05-11 17:45:52 by sun.wei  评论(0) 阅读(3340)

Powered by: Joycode.MVC引擎 0.5.2.0