相当长一段时间以来,在64位平台上运行sql server一直是提高数据库性能和扩展性的一种选择,不过配置方面的选项有限,而且不是没有问题。举例说,sql server 2000只能在昂贵的安腾系列处理器上面运行;而且sql server的客户端工具与64位平台不兼容。另一方面,sql server 2005却提供了新的选项可以充分利用64位架构的强大功能;而且完全没有在过去导致人们不太需要64位的问题。
使用sql server的公司为什么应当改用64位架构?
要解答这个问题,最重要的答案就是,64位平台与32位系统相比,大大提高了内存访问能力。32位系统最多只能本地访问4gb的内存。32位的sql server系统使用地址窗口扩展(awe)及相关技术后,最多可以访问64gb的内存,不过地址虚拟技术带来了开销:awe需要创建虚拟“窗口”来访问更高内存。访问高端内存的每个请求都必须通过这个窗口进行,开销要比请求访问本地内存大得多。因而,在高使用率情况下,访问更大内存的功能实际上妨碍了而不是有助于性能。此外,awe内存只是被sql server用于缓冲器缓存,而不是用于过程缓存,而且不会有助于对利用许多即席查询(ad-hoc query)的服务器进行优化。awe内存也不会被用于帮助内存中的排序、散列连接(hash join)或者其他数据密集型操作。
如今的64位系统最多可本地访问512gb的内存。这意味着,性能不会受到地址窗口的影响,额外内存可以供任何sql server缓存而不仅仅是缓冲器缓存使用。这种增加内存的功能在许多情况下直接提高了性能。由于更多的数据保存在缓存里面,势必会减少磁盘的i/o操作。你还会注意到使用中间排序、散列连接或者指针的查询在性能上得到提高。所有这些在内存里面进行求值要比换到磁盘上进行求值来得快。
为什么64位采用迟缓?
有人不由得会想:既然好处这么显著,为什么到目前为止64位sql serve的采用似乎很迟缓?sql server 2000的64位选项很有限,因为sql server 2000惟一支持的64位配置就是安腾服务器运行在windows server 2003上面。也没有哪个sql server 2000客户端工具可在64位服务器上面运行,包括企业管理器、查询分析器和sql profiler。连数据转换服务(dts)软件包也无法在64位服务器上运行,这意味着dts无法充分利用64位的更强功能。
sql server 2005 64位架构有什么优点?
sql server 2005为企业带来了64位架构的优点,而与以往相比价位较低、功能较多。最重要的是,sql server 2005支持可以安装在安腾和价格低得多的x64服务器两种平台上。所以,除了节省费用外,数据库管理员现在就可以使用英特尔处理器或者amd处理器。
sql server 2005客户端工具与64位服务器完全兼容,所有sql server支持服务都可以在64位配置环境下与sql server 2005一起使用,这包括:分析服务、sql server集成服务、报表服务和通知服务。所有这些服务都能够利用访问更多内存的功能,有助于提高安装的sql server的性能、满足业务集成需求。
哪种安装环境应当升级至64位?
升级主要有两个市场:需要向上扩展的32位单服务器安装环境;以及需要合并的32位多服务器安装环境。每种场景都有明显的优点。
表明单服务器安装配置可能属于向上扩展类别的最明显迹象就是,深度查询磁盘活动、较低的缓冲器缓存命中率以及较短的页面生命周期。所有这些问题都可以使用性能计数器来评估,可通过能够访问更多内存的64位系统来加以解决。
另一方面,确定多服务器安装环境是不是非常适合合并来得困难一点。应当进行认真测试,评估所有数据库总共需要多少内存、处理器能不能处理所有数据库的并发查询、磁盘系统能不能处理同时读写带来的更大压力。做出这个决策比升级单一服务器困难得多,不过就整体的管理简易性而言,会获得巨大回报。
改用64位会在sql server的性能和扩展性方面带来重大影响。sql server 2005提供的选项使得从32位进行升级合理得多。如果你投资新硬件用于新的数据库管理系统(dbms),就应当调查分析64位选项,尤其是基于价格较低的x64位处理器的那些选项。
我要不要使用新的xml数据类型把所有xml数据保存在sql server 2005里面?
xml酷似clr用户定义类型(udt),它现在是sql server 2005中新的第一类数据类型。开发人员现在可能会忍不住使用这种数据类型,以免编写代码把xml数据“分割”到表里面(即不是使用openxml往表里面批量载入数据)。
遗憾的是,像这样使用xml数据类型存在与使用用户定义类型表示数据同样的许多问题。开发人员应当把性能记在心头,因为对xml列的一个节点进行查询需要引擎对表中每一行的不同xml查询进行求值。与使用clr udt一样,还存在规范化问题。在过多使用xml数据类型的数据库里面,要确保数据完整性极其困难。
新闻热点
疑难解答