浅谈如何优化SQL Server服务器

  1.数据和日志文件分开存放在不同磁盘上

  数据文件和日志文件的操作会产生大量的I/O。在可能的条件下,日志文件应该存放在一个与数据和索引所在的数据文件不同的硬盘上以分散I/O,同时还有利于数据库的灾难恢复。

  2.tempdb数据库单独存放在不同磁盘上

  tempdb数据库是其他所有数据库都有可能使用的临时数据库。当使用select into、在没建立索引的列上执行Orderby时就会在tempdb数据库中产生临时表来存储中间数据。由于建立和填充临时表会严重降低系统性能,所以在尽可能的情况下应该为要排序的列建立索引。同时,tempdb数据库是为所有的用户和应用程序共享,所以如果一个用户占据了tempdb数据库的所有空间,则其他数据库将不能再使用。在可能的情况下,tempdb数据库应该单独放置在一个速度更快的硬盘或者RAID阵列上。分离tempdb数据库的I/O操作以加快性能。tempdb数据库应该有适当的容量,以满足用户的需要。应该允许tempdb数据库的空间自动增长。如果设置为不允许自动增长,当查询操作建立了超过tempdb数据库容量的临时表时,操作将无法完成。

  适当设置tempdb数据库的增长幅度,过小的增长幅度会产生更多的外部碎片,会占用更多的资源。

  3.避免热点数据的发生

  在SQLServer7.0之前,对于没有聚集索引的表(堆集表),新插入的数据行总是放置在磁盘中表的物理结尾处。如果并发的用户很多,同时在对表执行插入或者更新数据的操作,这将使得十分繁忙的表的末尾有可能产生数据热点。并发的I/O操作集中对少数页面进行操作,将导致数据库性能的下降。

  在SQLServer中,新的数据行的物理存储空间的分配是通过PFS页面来进行的。PFS页面的管理算法将插入操作进行分散来尽量避免产生数据热点。

  在设计应用系统和数据库时,要避免在自然增长的列上建立主键,这样有可能导致热点数据的发生。

  4.数据类型要少

  在设计表时,尽可能少用数据类型。这样一个数据页面上可以保存最多的信息。数据页面就少,检索数据页面的I/O操作就少,所以效率会高。

  5.监控和整理空间碎片

  文件空间的自动增长提高了自动管理性,但可能导致空间碎片。物理空间与数据的逻辑空间不再连续。定期的监控和空间碎片整理有利于提高I/O性能。

  6.使用主数据文件和次要数据文件

  每个数据库的一个主数据文件属于主文件组。对于1GB左右规模的数据库,一个数据文件就够了,如果有次要数据文件,主数据文件中有管理次要数据文件的指针。

  采用多个数据文件时,主数据文件用于存储系统对象和表,次要数据文件用于存储用户数据和索引。在可能的情况下,主数据文件和次要数据文件可以单独存放在不同的磁盘上以分散I/O。

  如果采用多个数据文件,推荐主数据文件存储系统数据,次要数据文件存放用户数据和索引,这样会有助于提高I/O性能。

时间: 2024-10-08 13:12:40

浅谈如何优化SQL Server服务器的相关文章

优化SQL Server服务器内存配置的策略

引言 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于WindowsNT4.0平台,采用客户/服务器模式,以Microsoft SQL Server为基础建立起来的大型数据库应用程序,系统界面友好.操作简便,计算.分析.检索功能非常强大,为保证农业银行系统及时进行纵向和横向业务数据采集.按照不同要求生成统计报表,进行全面业务活动分析提供了强有力的保障.但在这套程序的推广.维护中笔者发现系统有时运行速度较慢,特别是在Win95客户端操作时尤为严重,经过排除网线连接等

内存配置优化SQL Server服务器性能

Microsoft SQL Server 2000 的内存管理组件消除了对 SQL Server 可用的内存进行手工管理的需要.SQL Server 在启动时根据操作系统和其它应用程序当前正在使用的内存量,动态确定应分配的内存量.当计算机和SQL Server 上的负荷更改时,分配的内存也随之更改.有关更多信息,请参见内存构架. 下列服务器配置选项可用于配置内存使用并影响服务器性能: min server memorymax server memorymax worker threadsinde

SQL Server服务器内存优化使用指导

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   不久之前,笔者一个在企业中从事网管工作的朋友向我求助关于SQL Server服务器内存升级后遇到的问题.原来,他们企业准备上一个企业邮箱系统.为了节省开支,他们准备在原来的SQL Server服务器上部署企业的邮箱服务器.为了提高这个服务器的性能,让其能够承担其两种应用服务的重任,所以,他们对内存进行了升级.从原先的1G升级到了2G. 但是,内存升级完以后,邮箱

应用事件探查器优化SQL Server系统

概述 当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析.是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析.但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过

应用Profiler优化SQL Server数据库系统

当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析.是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析.但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过程来提

优化SQL Server索引的小技巧

server|技巧|索引|优化  SQL Server中有几个可以让你检测.调整和优化SQL Server性能的工具.在本文中,我将说明如何用SQL Server的工具来优化数据库索引的使用,本文还涉及到有关索引的一般性知识.关于索引的常识  影响到数据库性能的最大因素就是索引.由于该问题的复杂性,我只可能简单的谈谈这个问题,不过关于这方面的问题,目前有好几本不错的书籍可供你参阅.我在这里只讨论两种SQL Server索引,即clustered索引和nonclustered索引.当考察建立什么类

搞定C#中列举出局域网中的SQL SERVER服务器

server|服务器 用先添加SQLDMO对象的引用,SQLDMO是COM对象,不是.NET对象下面这个函数返回局域网中的SQL SERVER服务器的列表数组.private string[] Getallservers()        {            string[] servers;            SQLDMO.NameList num;            SQLDMO.ApplicationClass rs=new SQLDMO.ApplicationClass()

在非SQL客户端使用命令行方式定期连接SQL Server服务器

在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容 一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接(系统自带,建立一个后缀为.udl的文件即可体验),进行可视化的操作. Figure 1使用ConnMaker.exe创建的可视化连接查询实例 不过这次用户的需求是因为他们在尝试进行连接到SQL服

优化SQL Server索引

SQL Server中有几个可以让你检测.调整和优化SQL Server性能的工具.在本文中,将说明如何用SQL Server的工具来优化数据库索引的使用,本文还涉及到有关索引的一般性知识.关于索引的常识 影响到数据库性能的最大因素就是索引.由于该问题的复杂性,我只可能简单的谈谈这个问题,不过关于这方面的问题,目前有好几本不错的书籍可供你参阅.我在这里只讨论两种SQL Server索引,即clustered索引和nonclustered索引.当考察建立什么类型的索引时,你应当考虑数据类型和保存这