浅析SQL Server数据库的性能优化性能调优

时间:2025年07月26日

/

来源:qwer878787

/

编辑:本站小编

收藏本文

下载本文

以下是小编整理了浅析SQL Server数据库的性能优化性能调优,本文共5篇,希望你喜欢,也可以帮助到您,欢迎分享!本文原稿由网友“qwer878787”提供。

篇1:浅析SQL Server数据库的性能优化性能调优

在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题,性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:

· 减少竞争和等待的次数,尤其是磁盘读写等待次数

· 利用更快的部件

· 减少利用资源所需的时间

绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。

为了取得更好的数据库性能,我们就需要对数据库进行优化,减少系统资源的竞争,如对数据cache,过程cache,系统资源和CPU的竞争。

在SQL Server中,有如下优化层次:

·应用层——大部分性能的获得来自于对你的SQL应用中查询的优化,这必须是以好的数据库设计为基础的。

·数据库层——应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache。

·服务器层——在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。

·设备层——指的是存储数据的磁盘及其控制器,在这一层,你应尤其关注磁盘的I/O。

·网络层——指连接用户和SQL Server的网络。

·硬件层——指可利用的CPU。

·操作系统层——理想地,SQL Server是一台机器的唯一主要应用,它必须和操作系统以及其他sybase软件,如Backup Server或SQL Server Monitor共享处理器、内存以及其他资源。

在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。

应用层上的问题包括以下内容:

·决策支持VS.和在线事务处理(OLTP)需要不同的性能策略

·事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取

·关联一致性对数据修改需要join操作

·支持Select操作的索引增加了修改数据的时间

·为了安全而设立的审计限制了性能

在应用层优化的选项包括:

·远程处理或复制处理能够把决策支持从OLTP机器中分离出来

·利用存储过程来减少编译时间和网络的利用

·利用最少量的锁去满足你的应用需要

数据库层的问题包括:

·建立备份和恢复方案

·在设备上分布存储数据

·审计操作影响性能;仅审计你所需的

·日常的维护活动将导致性能的降低和导致用户不能操作数据库表

在数据库层上优化选择包括:

·利用事务日志的阀值来自动转储事务日志防止其超出使用空间

·在数据段中用阀值来监视空间的使用

·利用分区来加速数据的装入

·对象的定位以避免硬盘的竞争

·把重要表和索引放入cache中,保证随时取得

服务器层的问题有:

·应用的类型——服务器是支持OLTP还是DSS,或者两者都支持

·所支持的用户数影响优化决策——随着用户数的增加,对资源的竞争会发生改变

关 键 字:MYSQL

篇2:SQL Server数据库性能优化技巧性能调优

设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事,在开发工具、数据库设计、应用程序的结构、查询设计、接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能。本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议。

1 数据库设计

要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案。在实际工作中,许多SQL Server方案往往是由于数据库设计得不好导致性能很差。所以,要实现良好的数据库设计就必须考虑这些问题。

1.1 逻辑库规范化问题

一般来说,逻辑数据库设计会满足规范化的前3级标准:

1.第1规范:没有重复的组或多值的列。

2.第2规范:每个非关键字段必须依赖于主关键字,不能依赖于1个组合式主关键字的某些组成部分。

3.第3规范:1个非关键字段不能依赖于另1个非关键字段。

遵守这些规则的设计会产生较少的列和更多的表,因而也就减少了数据冗余,也减少了用于存储数据的页。但表关系也许需要通过复杂的合并来处理,这样会降低系统的性能。某种程度上的非规范化可以改善系统的性能,非规范化过程可以根据性能方面不同的考虑用多种不同的方法进行,但以下方法经实践验证往往能提高性能。

1.如果规范化设计产生了许多4路或更多路合并关系,就可以考虑在数据库实体(表)中加入重复属性(列)。

2.常用的计算字段(如总计、最大值等)可以考虑存储到数据库实体中。

比如某一个项目的计划管理系统中有计划表,其字段为:项目编号、年初计划、二次计划、调整计划、补列计划…,而计划总数(年初计划+二次计划+调整计划+补列计划)是用户经常需要在查询和报表中用到的,在表的记录量很大时,有必要把计划总数作为1个独立的字段加入到表中。这里可以采用触发器以在客户端保持数据的一致性。

3.重新定义实体以减少外部属性数据或行数据的开支。相应的非规范化类型是:

(1)把1个实体(表)分割成2个表(把所有的属性分成2组)。这样就把频繁被访问的数据同较少被访问的数据分开了。这种方法要求在每个表中复制首要关键字。这样产生的设计有利于并行处理,并将产生列数较少的表。

(2)把1个实体(表)分割成2个表(把所有的行分成2组)。这种方法适用于那些将包含大量数据的实体(表)。在应用中常要保留历史记录,但是历史记录很少用到。因此可以把频繁被访问的数据同较少被访问的历史数据分开。而且如果数据行是作为子集被逻辑工作组(部门、销售分区、地理区域等)访问的,那么这种方法也是很有好处的。

1.2 生成物理数据库

要想正确选择基本物理实现策略,必须懂得数据库访问格式和硬件资源的操作特点,主要是内存和磁盘子系统I/O。这是一个范围广泛的话题,但以下的准则可能会有所帮助。

1.与每个表列相关的数据类型应该反映数据所需的最小存储空间,特别是对于被索引的列更是如此。比如能使用smallint类型就不要用integer类型,这样索引字段可以被更快地读取,而且可以在1个数据页上放置更多的数据行,因而也就减少了I/O操作。

2.把1个表放在某个物理设备上,再通过SQL Server段把它的不分簇索引放在1个不同的物理设备上,这样能提高性能。尤其是系统采用了多个智能型磁盘控制器和数据分离技术的情况下,这样做的好处更加明显。

3.用SQL Server段把一个频繁使用的大表分割开,并放在2个单独的智能型磁盘控制器的数据库设备上,这样也可以提高性能。因为有多个磁头在查找,所以数据分离也能提高性能。

4.用SQL Server段把文本或图像列的数据存放在1个单独的物理设备上可以提高性能。1个专用的智能型的控制器能进一步提高性能。

2 与SQL Server相关的硬件系统

与SQL Server有关的硬件设计包括系统处理器、内存、磁盘子系统和网络,这4个部分基本上构成了硬件平台,Windows NT和SQL Server运行于其上。

2.1 系统处理器(CPU)

根据自己的具体需要确定CPU结构的过程就是估计在硬件平台上占用CPU的工作量的过程

关 键 字:MYSQL

篇3:Sql server优化50法性能调优

查询速度慢的原因很多,常见如下几种:

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)

2、I/O吞吐量小,形成了瓶颈效应,

3、没有创建计算列导致查询不优化。

4、内存不足

5、网络速度慢

6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)

7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)

8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。

9、返回了不必要的行和列

10、查询语句不好,没有优化

可以通过如下方法来优化查询 :

1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL不在支持。数据量(尺寸)越大,提高I/O越重要.

2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)

3、升级硬件

4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段

5、提高网速;

6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。

7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT,DELETE还不能并行处理。

8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。

9、DB Server 和APPLication Server 分离;OLTP和OLAP分离

10、分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件'分区视图')

a、在实现分区视图之前,必须先水平分区表

b、在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。

11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。 在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:

1、查询语句的词法

关 键 字:MYSQL

篇4:浅析SQL Server数据库的性能优化

在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题,性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:

· 减少竞争和等待的次数,尤其是磁盘读写等待次数

· 利用更快的部件

· 减少利用资源所需的时间

绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。

为了取得更好的数据库性能,我们就需要对数据库进行优化,减少系统资源的竞争,如对数据cache,过程cache,系统资源和CPU的竞争。

在SQL Server中,有如下优化层次:

·应用层——大部分性能的获得来自于对你的SQL应用中查询的优化,这必须是以好的数据库设计为基础的。

·数据库层——应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache。

·服务器层——在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。

·设备层——指的是存储数据的磁盘及其控制器,在这一层,你应尤其关注磁盘的I/O。

·网络层——指连接用户和SQL Server的网络。

·硬件层——指可利用的CPU。

·操作系统层——理想地,SQL Server是一台机器的唯一主要应用,它必须和操作系统以及其他sybase软件,如Backup Server或SQL Server Monitor共享处理器、内存以及其他资源。

在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。

应用层上的问题包括以下内容:

·决策支持VS.和在线事务处理(OLTP)需要不同的性能策略

·事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取

·关联一致性对数据修改需要join操作

·支持Select操作的索引增加了修改数据的时间

·为了安全而设立的审计限制了性能

在应用层优化的选项包括:

·远程处理或复制处理能够把决策支持从OLTP机器中分离出来

·利用存储过程来减少编译时间和网络的利用

·利用最少量的锁去满足你的应用需要

数据库层的问题包括:

·建立备份和恢复方案

·在设备上分布存储数据

·审计操作影响性能;仅审计你所需的

·日常的维护活动将导致性能的降低和导致用户不能操作数据库表

在数据库层上优化选择包括:

·利用事务日志的阀值来自动转储事务日志防止其超出使用空间

·在数据段中用阀值来监视空间的使用

·利用分区来加速数据的装入

·对象的定位以避免硬盘的竞争

·把重要表和索引放入cache中,保证随时取得

服务器层的问题有:

·应用的类型——服务器是支持OLTP还是DSS,或者两者都支持

·所支持的用户数影响优化决策——随着用户数的增加,对资源的竞争会发生改变

·网络负荷

·当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法

服务器层的优化的选项包括:

·优化内存——一个关键的配置参数和其他方面的参数

·决策是客户端处理还是服务器端处理——有些处理能在客户端进行吗

·配置cache的大小和I/O的大小

·增加多个CPU

·为空闲时间排定批处理任务和生成报表

·工作负荷发生改变,重新配置特定参数

·决定是否可能把DSS移到另一个SQL服务器中设备层

设备层的问题包括:

·主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像

·怎样在设备之间分布系统数据库、用户数据库和数据库日志

·为获得对堆表插入操作的高性能,是否有必要进行分区

设备层上优化的选项包括:

·用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能

·分布数据库,表和索引以在不同的设备上进行I/O装载

网络层

实际上,SQL Server的所有用户都是通过网络存取他们的数据,

网络层上的主要问题有:

·网络的流量

·网络的瓶颈

·网络的速度

网络层上优化的选项包括:

·配置包的大小,以使其与应用的需要相匹配

·配置子网

·分隔出繁忙的网络运用

·创建一个高容量的网络

·配置多个网络引擎

·更好地设计应用,限制所需的网络传输

硬件层

在硬件层上的问题包括

·CPU的效率

·磁盘的存取:控制器和磁盘

·磁盘备份

·内存的使用

在硬件层上优化的选项包括:

·增加CPU以适应工作负荷

·配置调度程序以提高CPU利用率

·遵循多处理器应用设计指导以减少竞争

·配置多个数据cache操作系统层

操作系统层的主要问题有:

·文件系统——是否被SQL Server独占使用

·内存管理——精确估算操作系统和其他程序的内存占用

·CPU的利用——整个系统共有多少处理器可用?有多少分配给SQL Server

在操作系统层优化的选项包括:

·网络接口

·在文件和原始分区之间选择

·增加内存

·把客户操作和批处理移到其他机器上

·SQL Server利用多个CPU

篇5:浅析SQL Server数据库的性能优化数据库

在一个大型的数据库中, 性能 成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和 开发 人员必须要考虑的问题,性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成

在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题。性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:

・ 减少竞争和等待的次数,尤其是磁盘读写等待次数

・ 利用更快的部件

・ 减少利用资源所需的时间

绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。

为了取得更好的数据库性能,我们就需要对数据库进行优化,减少系统资源的竞争,如对数据cache,过程cache,系统资源和CPU的竞争。

在SQL Server中,有如下优化层次:

・应用层――大部分性能的获得来自于对你的SQL应用中查询的优化,这必须是以好的数据库设计为基础的。

・数据库层――应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache。

・服务器层――在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。

・设备层――指的是存储数据的磁盘及其控制器,在这一层,你应尤其关注磁盘的I/O。

・网络层――指连接用户和SQL Server的网络。

・硬件层――指可利用的CPU。

・操作系统层――理想地,SQL Server是一台机器的唯一主要应用,它必须和操作系统以及其他sybase软件,如Backup Server或SQL Server Monitor共享处理器、内存以及其他资源。

在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。

应用层上的问题包括以下内容:

・决策支持VS.和在线事务处理(OLTP)需要不同的性能策略

・事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取

・关联一致性对数据修改需要join操作

・支持Select操作的索引增加了修改数据的时间

・为了安全而设立的审计限制了性能

在应用层优化的选项包括:

・远程处理或复制处理能够把决策支持从OLTP机器中分离出来

・利用存储过程来减少编译时间和网络的利用

・利用最少量的锁去满足你的应用需要

数据库层的问题包括:

・建立备份和恢复方案

・在设备上分布存储数据

・审计操作影响性能;仅审计你所需的

・日常的维护活动将导致性能的降低和导致用户不能操作数据库表

在数据库层上优化选择包括:

・利用事务日志的阀值来自动转储事务日志防止其超出使用空间

・在数据段中用阀值来监视空间的使用

・利用分区来加速数据的装入

・对象的定位以避免硬盘的竞争

・把重要表和索引放入cache中,保证随时取得

服务器层的问题有:

・应用的类型――服务器是支持OLTP还是DSS,或者两者都支持

・所支持的用户数影响优化决策――随着用户数的增加,对资源的竞争会发生改变

・网络负荷

・当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法

服务器层的优化的选项包括:

・优化内存――一个关键的配置参数和其他方面的参数

・决策是客户端处理还是服务器端处理――有些处理能在客户端进行吗

・配置cache的大小和I/O的大小

・增加多个CPU

・为空闲时间排定批处理任务和生成报表

・工作负荷发生改变,重新配置特定参数

・决定是否可能把DSS移到另一个SQL服务器中设备层

设备层的问题包括:

・主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像

・怎样在设备之间分布系统数据库、用户数据库和数据库日志

・为获得对堆表插入操作的高性能,是否有必要进行分区

设备层上优化的选项包括:

・用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能

・分布数据库,表和索引以在不同的设备上进行I/O装载

网络层

实际上,SQL Server的所有用户都是通过网络存取他们的数据,

网络层上的主要问题有:

・网络的流量

・网络的瓶颈

・网络的速度

网络层上优化的选项包括:

・配置包的大小,以使其与应用的需要相匹配

・配置子网

・分隔出繁忙的网络运用

・创建一个高容量的网络

・配置多个网络引擎

・更好地设计应用,限制所需的网络传输

硬件层

在硬件层上的问题包括

・CPU的效率

・磁盘的存取:控制器和磁盘

・磁盘备份

・内存的使用

在硬件层上优化的选项包括:

・增加CPU以适应工作负荷

・配置调度程序以提高CPU利用率

・遵循多处理器应用设计指导以减少竞争

・配置多个数据cache操作系统层

操作系统层的主要问题有:

・文件系统――是否被SQL Server独占使用

・内存管理――精确估算操作系统和其他程序的内存占用

・CPU的利用――整个系统共有多少处理器可用?有多少分配给SQL Server

在操作系统层优化的选项包括:

・网络接口

・在文件和原始分区之间选择

・增加内存

・把客户操作和批处理移到其他机器上

・SQL Server利用多个CPU

(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)

原文转自:www.ltesting.net

用splock诊断SQL Sever性能问题性能调优

火灾自动报警系统的系统性能调试?

如何提高电脑性能

如何检测cpu性能

教你提高硬盘性能

下载浅析SQL Server数据库的性能优化性能调优(精选5篇)
浅析SQL Server数据库的性能优化性能调优.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档