Ⅰ sql server性能优化与管理艺术 sql server性能调优实战 哪个好
各主流数据库用法如下: sqlserver: alter table 表名 drop column 列名;oracle: alter table 表名 drop column 列名;mysql: alter table 表名 drop column 列名;总结:在主流数据库下,删除列的语法是一致的,并无差别。
Ⅱ 如何进行SQL性能优化
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是数据库设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
●可以通过以下方法来优化查询 :
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高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、 查询语句的词法、语法检查
2、 将语句提交给DBMS的查询优化器
3、 优化器做代数优化和存取路径的优化
4、 由预编译模块生成查询规划
5、 然后在合适的时间提交给系统处理执行
6、 最后将执行结果返回给用户。
其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
Ⅲ sql server性能优化与管理艺术 sql server性能调优实战 哪个好
本书是一线dba技术专家精心之作。积作者多年的经验结晶和*佳实践。
也是目前市场上为数不多通过存储原理来讲解性能优化,剖析sql
server架构,从而帮助读者快速高效调优数据库的图书。
Ⅳ Sql server 安全,性能优化的15条方案
1.1 基本概念 与数据库技术密切相关的基本概念包括:数据、数据库、数据库管理系统和数据库系统四大概念。1. 数据(Data) 数据是对客观事物的一种描述,是由能被计算机识别与处理的数值、字符等符号构成的集合,即数据是指描述事物的符号记录。 广义地说,数据是一种物理符号的序列,用于记录事物的情况,是对客观事物及其属性进行的一种抽象化及符号化的描述。数据的概念应包括数据的内容和形式两个方面。数据的内容是指所描述的客观事物的具体特性,也就是通常所说的数据的“值”;数据的形式则是指数据内容所存储的具体形式,即数据的“类型”。故此,数据可以用数据类型和值来表示。2. 数据库(Data Base,DB) 数据库是指长期存储在计算机内部、有组织的、可共享的数据集合,即在计算机系统中按一定的数据模型组织、存储和使用的相关联的数据集合成为数据库。 数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性、易扩展性、集中性和共享性,以文件的形式存储在存储介质上的。数据库中的数据由数据库管理系统进行统一管理和控制,用户对数据库进行的各种数据操作都是通过数据库管理系统实现。3. 数据库管理系统(Data Base Management System,DBMS) 数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件,是位于操作系统与用户之间的一层数据管理软件。主要功能是对数据库进行定义、操作、控制和管理。1) 数据定义 数据的定义包括:定义构成数据库结构的外模式、模式和内模式,定义各个外模式和模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件。2) 数据处理对数据的处理操作主要包括对数据库数据的检索、插入、修改和删除等基本操作。3) 安全管理 对数据库的安全管理主要体现在:对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。并且能够管理和监督用户的权限,防止拥护有任何破坏或者恶意的企图。4) 数据的组织、存储和管理 负责分类地组织、存储和管理数据库数据,确定以何种文件结构和存取方式物理地组织数据,如何实现数据之间的联系,以便提高存储空间利用以及提高随机查找、顺序查找、增加、删除和查改等操作的时间效率。5) 建立和维护数据库 建立数据库包括数据库数据的初始化与数据转换等。维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。6) 数据通信接口提供与其他软件系统进行通信的功能。4. 数据库系统(Data Base System,DBS) 数据库系统指在计算机系统中引入数据库后的系统构成,一般有数据库、数据库管理系统、应用系统、数据库管理员和用户构成。1.2 数据库系统的特点 数据库系统的点主要有:数据的结构化、高共享性、低冗余度、易扩充、较高的独立性(物理数据独立、逻辑数据独立)以及数据由DBMS统一管理和控制(数据的安全性Security保护、数据的完整性Integrity保护、并发Concurrency控制、数据库恢复Recovery)等。第二章 数据库性能优化 数据库作为一种独立的、有组织、的可共享的数据集合,数据的查询访问是数据操作中频度最高的操作。当数据量和访问频率达到一定程度的时候,系统的响应速度就至关重要了,这时候就需要对数据库数据存储的结构和方式进行优化,使其满足系统需要的访问响应速度。2.1 性能影响因素 常见的影响数据访问速度的因素,有以下几种:1. 没有索引或者没有用到索引 数据库索引就像书籍中目录一样,使用户在访问数据库数据时,不必遍历所有数据就可以找到需要的数据。创建索引后,可以保证每行数据的唯一性,极大地提高数据检索效率,这是一中牺牲空间换取性能的方法。没有索引或者没有用到索引是数据访问速度慢最常见的因素,也是程序设计的一个缺陷所在。2. I/O吞吐量小,形成了瓶颈效应 I/O吞吐量是影响数据访问速度的客观因素(硬件因素)。在一定的硬件环境下,利用优化的部署方案可适当提高I/O吞吐量。3. 没有创建计算列导致查询不优化 计算列是一个比较特殊的列,不填写任何设计类型,用户不可以改变该列的值。计算列的值是通过一定的函数公式等以另一个或多个列的值为输入值计算出的结果。如果没相应的计算列,在一些数据查询的时候需要对已有数据进行计算,从而浪费一部分性能。4. 内存不足 对数据库数据的查询访问毫无疑问会占用大量的内存空间,当内存不足的情况下,数据的访问速度会受到明显的影响甚至访问出现超时情况,是影响数据访问速度的客观因素。5. 网络速度慢 网络速度慢是影响数据访问速度的客观因素。可通过提高网络访问的位宽来解决。6. 查询出的数据量过大 当查询出的数据量过大时,内存的占用、系统时间的占用等都影响数据访问的速度。可以采用多次查询、定位查询、和查询数据量控制来解决。7. 锁或者死锁 锁或者死锁在数据库数据访问时会造成访问者等待时间过程或者永久无法获取到资源。这是查询慢最常见的因素之一,是程序设计的缺陷,要尽量避免。8. 返回不必要的行和列 在一般的数据查询中,都尽可能多的获取数据信息,这样造成了不必要的数据遍历,大大的增加了数据访问的响应的时间。所以在一般的查询中,尽量查询少的行和列,将数据遍历时间降到最低以满足数据输出需求。9. 查询语句不够优化 在数据查询访问过程中,使用最频繁的是使用自定义的查询语句进行数据输出的。所以编写优化的查询语句能够很大程度上提高数据查询访问的速度。2.2 性能优化 数据库性能优化主要是提高数据访问的速度,即提高数据库响应速度的性能指标。性能优化主要分为主观因素和客观因素两部分的优化。这里主要针对影响性能的客观因素进行优化。2.2.1 主观因素优化 主观因素主要是指服务器的硬件环境。主要优化有以下几个方面:1、 把数据、日志、索引放到不同的I/O设备上,增加读取速度,数据量越大,提高I/O吞吐量越重要;2、 纵向、横向分割表,减少表的尺寸(sp_spaceuse);3、 升级硬件;4、 提高网络访问速度;5、 扩大服务器的内存;配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置,一般设置为物理内存的1.5倍;如果安装了全文检索功能,并打算运行Microsoft搜索服务以便执行全文索引和查询,可考虑将虚拟内存大小设置为至少计算机中物理内存的3倍;6、 增加服务器CPU个数;其中并行处理比串行处理更需要资源。SQL SERVER根据系统负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询适合并行处理。不过更新操作UPDATE、INSERT、DELETE不能进行并行处理。 2.2.2 客观因素优化 客观因素主要指的是由于设计和开发中存在的缺陷和漏洞;主要优化有以下几个方面:1. 优化索引(1) 根据查询条件建立优化的索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建里索引(参照索引的创建),不要对有限的几个值的字段建立单一索引(如性别字段)。(2) 如果使用LIKE进行查询的话,简单的使用INDEX是不行的,全文索引又太耗费空间。LIKE ‘N%’使用索引,LIKE ‘%N’不使用索引。用LIKE‘%N%’查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型而采用VARCHAR。对于字段的值很长的字段建立全文索引。(3) 重建索引DBCC REINDEX,DBCC INDEXDEFRAG,收缩数据和日志DBCC SHRINKDB,DBCC SHRINKFILE。设置自动收缩日志,对与大的数据库不要设置数据库自动增长,它会降低服务器的性能。2. 数据库部署优化(1) DB SERVER和APPLICATION SERVER分离,OLTP和OLAP分离;(2) 使用分区视图。分布式分区视图可用于实现数据库服务器联合体,联合体是一组分开管理的服务器,他们互相协作分担系统的处理负荷。A、在实现分区视图之前,必须先水平分区表。B、在创建成员表后,在每个服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器都有一个原始表的复本一样,不过每个服务器上其实只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。3. 查询语句优化 T-SQL的写法上有很大的讲究,DBMS处理查询计划的过程是:a、查询语句的词法、语法检查;b、将语句提交给DBMS的查询优化器;c、优化器做代数优化和存取路径的优化;d、由预编译模块生成查询规划;e、在合适的时间提交给系统处理执行;f、将执行结果返回给用户。(1) COMMIT和ROLLBACK的区别:ROLLBACK回滚所有的事务;COMMIT提交当前的事务。在动态语句中写事务,请将事务写在外面,如:BEGIN TRAN EXEC(@SQL) COMMIT TRANS或者将动态SQL写成函数或者存储过程。(2) 在大数据两的查询输出SELECT语句中尽量不要使用自定义函数,调用自定义函数的函数时系统调用是一个迭代过程,很影响查询输出性能的。在查询字段时尽可能使用小字段两输出,并在WHERE子句或者使用SELECT TOP 10/1 PERCENT来限制返回的记录数,使用SET ROWCOUNT来限制操作的记录数,避免整表扫描。返回不必要的数据,不但浪费了服务器的I/O资源,加重了网络的负担,如果表很大的话,在表扫描期间将表锁住,禁止其他的联接访问,后过很严重的。(3) SQL的注释申明对执行查询输出没有任何影响。(4) 使用计算列对数据进行简单计算,尽量避免在查询语句中对数据进行运算。(5) 尽可能不使用光标,它会占用大量的资源。如果需要ROW-BY-ROW地执行,尽量采用非光标技术,如:客户端循环、临时表、TABLE变量、子查询、CASE语句等等。(6) 使用PROFILER来跟踪查询,得到查询所需的时间,找出SQL的问题所在,用索引优化器优化索引。(7) 注意UNION和UNION ALL的区别。在没有必要的时候不要用DISINCT,它同UNION一样会降低查询速度,重复的记录在查询里是没有问题的。(8) 用sp_configure ‘query governor cost limit’或者 SET QUERY_COVERNOR_COST_LIMIT来限制查询消耗的资源。当评估查询消耗的 资源超出限制时,服务器自动取消查询,在查询之前就扼杀掉。SET LOCKTIME 设置锁的时间。(9) 不要在WHERE子句中列名加函数,如CONVERT,SUBSTRING等,如果必须用函数的时候,创建计算列在创建索引来替代。NOT IN会多次扫描表,使用EXISTS、NOT EXISTS、IN、LEFT OUTER JOIN来替代,其中EXISTS比IN更快,最慢的NOT操作。(10) 使用QUERY ANALYZER,查看SQL语句的查询计划和评估分析是否是优化的SQL。一般20%的代码占用了80%的资源,优化的重点就是这些慢的地方。(11) 如果使用了IN或者OR等时发现查询没有走索引,使用显式申明指定索引,如:Select * From FA01(INDEX=IX_SEX) Where AA0107 IN(‘01’,‘02’)。(12) 在需要对已有数据进行比较复杂计算才能获得查询的结果数据时,将需要查询的结果预先计算好放在表中,查询的时候在SELECT。(13) 数据库有一个原则是代码离数据越近越好,所有有限选择DEFAULT,依次为RULES,CONSTRAINT,PROCEDURE来编写程序的质量高,速度快。如果要插入大的二进制到IMAGE列,使用存储过程,千万不要用内嵌INSERT直接插入。因为这样应用程序首先将二进制转换成字符串,服务器收到字符后又将他转换成二进制。存储过程直接传入二进制参数即可,处理速度明显改善,如:CREATE PROCEDURE image_insert @image varbinary as Insert into table(fImage) values(@image)。(14) Between在某些时候比IN速度更快,更快地根据索引找到范围。由于IN会比较多次,所以有时会慢些。(15) 尽量不要建没有作用的事务例如产生报表时,浪费资源,只有在必须使用事务时才建立合适的事务。(16) 用OR的字句可以分解成多个查询,并通过UNION连接多个查询。速度取决与是否使用索引。如果查询需要用联合索引,用UNION ALL执行的效率更高些。(17) 尽量少用视图,视图的效率低。对视图操作比直接对表操作慢,可以用SRORED PROCEDURE来代替。特别是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。视图是存放在服务器上的被优化好了的已经产生查询规划的SQL。对单表数据检索时,不要使用指向多表的视图,否则增加了不必要的系统开销,查询也会受到干扰。没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行,增加了额外的开销,这同UNION和UNION ALL原理相同。(18) 当使用SELECT INTO和CREATE TABLE时,会锁住系统表(SYSOBJECTS,SYSINDEXES等),从而阻塞其他的连接的存取。所以千万不要在事务内部使用。如果经常要用到临时表时请使用实表或者临时表变量。尽量少用临时表,用结果集和TABLE类型的变量来代替。(19) 在使用GROUP BY HAVING子句时,在使用前剔除多余的行,尽量避免使用HAVING子句剔除行工作。剔除行最优的执行顺序是:SELECT的WHERE子句选择所有合适的行,GROUP
Ⅳ 如何优化sql server 服务器性能
你可以通过profiler和性能工具,跟踪一段时间,然后分析一个瓶颈是什么,再对瓶颈进行处理。
一般来说,增加足够大的内存能让性能快速提高。
使用更快的硬盘。
把数据库分离业务,比如A业务访问A数据库,B业务访问B数据库。
Ⅵ sql server性能优化与管理的艺术 怎么样
全书共15章,分为三部分,第一部分(第1~2章)为概述部分,阐述SQL Server方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者可以通过这两章的介绍,对SQL Server性能问题有一个高层次的认识。第二部分(第3~10章)为知识准备部分,这部分介绍了SQL Server性能相关的基础知识。只有了解了性能及影响性能的相关部分,才能准确地、高效地进行优化。第三部分(第11~15章)为工具使用及优化演示,在多服务器、大数据的环境下,不应该再使用原始的故障侦测方法,借用各种工具能更全面、更高效地找到问题并且解决问题。
通过这三部分的介绍,可以使读者有一个清晰的性能优化及管理方面的认识,并且通过大量演示,让读者能够较快地进入实战阶段。《SQL Server 性能优化与管理的艺术》的重点主要集中在第二部分,既介绍了性能相关的部分,以便后续使用,也给出了一个后续深入学习的“清单”,读者不应止步于本书,可以根据书中的知识点,进行更深入的学习。
Ⅶ 手机server接口的性能如何优化
在查询分析阶段,SQL Server优化器查看每一个由正规查询树代表的子句,并判断它是否能被优化。SQL Server优化一般会尽量优化那些限制扫描的子句。例如,搜索和/或合并子句。但是不是所有合法的SQL语法都可以分成可优化的子句,如含有SQL不等关系符“<>”的子句。
因为“<>”是1个排斥性的操作符,而不是1个包括性的操作符,所在扫描整个表之前无法确定子句的选择范围会有多大。当1个关系型查询中含有不可SQL Server优化的子句时,执行计划用表扫描来访问查询的这个部分,对于查询树中可优化的SQL Server子句,则由优化器执行索引选择。
2.索引选择
对于每个可优化的子句,优化器都查看数据库系统表,以确定是否有相关的索引能用于访问数据。只有当索引中的列的1个前缀与查询子句中的列完全匹配时,这个索引才被认为是有用的。因为索引是根据列的顺序构造的,所以要求匹配是精确的匹配。
所以在设计过程中,要根据查询设计准则仔细检查所有的查询,以查询的优化特点为基础设计索引。
(1)比较窄的索引具有比较高的效率。对于比较窄的索引来说,每页上能存放较多的索引行,而且索引的级别也较少。所以,缓存中能放置更多的索引页,这样也减少了I/O操作。
(2)SQL Server优化器能分析大量的索引和合并可能性。所以与较少的宽索引相比,较多的窄索引能向优化器提供更多的选择。但是不要保留不必要的索引,因为它们将增加存储和维护的开支。对于复合索引、组合索引或多列索引,SQL Server优化器只保留最重要的列的分布统计信息,这样,索引的第1列应该有很大的选择性。
(3)表上的索引过多会影响UPDATE、INSERT和DELETE的性能,因为所有的索引都必须做相应的调整。另外,所有的分页操作都被记录在日志中,这也会增加I/O操作。
(4)对1个经常被更新的列建立索引,会严重影响性能。
(5)由于存储开支和I/O操作方面的原因,较小的自组索引比较大的索引性能更好一些。但它的缺点是要维护自组的列。
(6)尽量分析出每一个重要查询的使用频度,这样可以找出使用最多的索引,然后可以先对这些索引进行适当的优化。
(7)查询中的WHERE子句中的任何列都很可能是个索引列,因为优化器重点处理这个子句。
(8)对小于1个范围的小型表进行索引是不划算的,因为对于小表来说表扫描往往更快而且费用低。
(9)与“ORDER BY”或“GROUP BY”一起使用的列一般适于做分族索引。如果“ORDER BY”命令中用到的列上有分簇索引,那么就不会再生成1个工作表了,因为行已经排序了。“GROUP BY”命令则一定产生1个工作表。
(10)分簇索引不应该构造在经常变化的列上,因为这会引起整行的移动。
Ⅷ 谈谈Tempdb对SQL Server性能优化有何影响
先给大家巩固tempdb的基础知识
简介:
tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一个Tempdb。很明显,这样的设计不是很好。当多个应用程序的数据库部署在同一台服务器上的时候,应用程序共享tempdb,如果开发人员不注意对Tempdb的使用就会造成这些数据库相互影响从而影响应用程序。
特性:
1、 tempdb中的任何数据在系统重新启动之后都不会持久存在。因为实际上每次SQLServer启动的时候都会重新创建tempdb。这个特性就说明tempdb不需要恢复。
2、 tempdb始终设置为“simple”的恢复模式,当你尝试修改时都会报错。也就是说已提交事务的事务日志记录在每个检查点后都标记为重用。
3、 tempdb也只能有一个filegroup,不能增加更多文件组。
4、 tempdb被用来存储三种类型的对象:用户对象,内部对象、版本存储区
接下来围绕主题展示问题分析:
1.SQL Server系统数据库介绍
SQL Server有四个重要的系统级数据库:master,model,msdb,tempdb.
master:记录SQL Server系统的所有系统级信息,包括实例范围的元数据,端点,链接服务器和系统配置设置,还记录其他数据库是否存在以及这些数据问文件的位置等等.如果master不可用,数据库将不能启动.
model:用在SQL Server 实例上创建的所有数据库的模板。因为每次启动 SQL Server 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。
msdb:由SQL Server 代理用来计划警报和作业。
tempdb:是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表,临时工作表,临时存储过程,临时存储大的类型,中间结果集,表变量和游标等。另外,它还用来满足所有其他临时存储要求.
2.tempdb内在运行原理
与其他SQL Server数据库不同的是,tempdb在SQL Server停掉,重启时会自动的drop,re-create. 根据model数据库会默认建立一个新的8MB(mdf file:8MB;ldf file:1MB, autogtouth设置为10%)大小recovery model为simple的tempdb数据库.
tempdb数据库建立之后,DBA可以在其他的数据库中建立数据对象,临时表,临时存储过程,表变量等会加到tempdb中.在tempdb活动很频繁时,能够自动的增长,因为是simple的recovery model,会最小化日志记录,日志也会不断的截断.
3.如何合理的优化tempdb以提高SQL Server的性能
如果SQL Server对tempdb访问不频繁,tempdb对数据库不会产生影响;相反如果访问很频繁,loading就会加重,tempdb的性能就会对整个DB产生重要的影响.优化tempdb的性能变的很重要的,尤其对于大型数据库.
注:在优化tempdb之前,请先考虑tempdb对SQL Server性能产生多大的影响,评估遇到的问题以及可行性.
3.1最小化的使用tempdb
SQL Server中很多的活动都活发生在tempdb中,所以在某种情况可以减少多对tempdb的过度使用,以提高SQL Server的整体性能.
如下有几处用到tempdb的地方:
(1)用户建立的临时表.如果能够避免不用,就尽量避免. 如果使用临时表储存大量的数据且频繁访问,考虑添加index以增加查询效率.
(2)Schele jobs.如DBCC CHECKDB会占用系统较多的资源,较多的使用tempdb.最好在SQL Server loading比较轻的时候做.
(3)Cursors.游标会严重影响性能应当尽量避免使用.
(4)CTE(Common Table Expression).也会在tempdb中执行.
(5)SORT_INT_TEMPDB.建立index时会有此选项.
(6)Index online rebuild.
(7)临时工作表及中间结果集.如JOIN时产生的.
(8)排序的结果.
(9)AFTER and INSTEAD OF triggers.
不可能避免使用tempdb,如果有tempdb的瓶颈或issue,就该返回来考虑这些问题了.
3.2重新分配tempdb的空间大小
在SQL Server重启时会自动建立8MB大小的tempdb,自动增长默认为10%. 对于小型的数据库来说,8MB大小已经足够了.但是对于较大型的数据库来说,8MB远远不能满足SQL Server频繁活动的需要,因此会按照10%的比例增加,比如说需要1GB,则会需要较长的时间,此段时间会严重影响SQL Server的性能. 建议在SQL Server启动时设置tempdb的初始化的大小(如下图片设置为MDF:300MB,LDF:50MB),也可以通过ALTER DATABASE来实现. 这样在SQL Server在重启时tempdb就会有足够多的空间可利用,从而提高效率.
Ⅸ 如何优化Windows OS使SQL Server性能最优化
怎样查出SQLServer的性能瓶颈QLServer性能监控这套性能优化的清单将至少准科学的帮助你找出你的SQLServer任何明显的性能问题。说是这样说,SQLServer的性能调优仍然是很困难的。我试图用这套清单去找出“容易”的sqlserver性能问题,困难的留待稍后。我这样做是因为很容易将容易和困难的的性能调优问题搞混。通过列出一个“容易”的性能调优范围,就很容易的将这些问题解决,一旦解决了这些容易的问题,那么你就能集中去解决更困难的问题。使用这个SQLServer性能调优清单的一个好处是,它将不仅仅告诉你目前最容易解决的性能问题是什么,而且还帮助你正确的去解决。在某种程度上,你可以选择不同的顺序进行。换句话说,你可以故意做出特殊的决定而不是按照清单通常的顺序进行。某种意义上说你是对的,不是所有的性能调优建议都适合所有的情形。另外,你的决定是基于你的资源限制,例如没有足够的钱去买满足负荷的硬件。如果真是那样的话,你就别无选择了。还有,你的决定可能基于一些政治原因,那是你不得不作出的改变。不管怎样,你需要知道你能做什么,使用这个性能调优清单找出你能改变的范围并做出相应的改变提升你的SQLServer的性能。一般来说,你将在你的每一个SQL服务器上执行这个清单。如果遇到清单中的一些问题,这会花掉你一些时间。我建议你从目前性能问题最多的的服务器开始,然后当你有时间的时候按照自己的思路去解决其他服务器。一旦你完成了,可仍然有很多事情要去做。记住,这些只是一些容易的。一旦你完成了这些容易的,接下来你需要花时间去解决更困难问题。这个是另一篇文章要解决的问题了。怎样进行你的SQLServer性能调优呢?为了使其变得容易,我把它们分成了以下几个部分:?使用性能监视器找出硬件瓶颈?SQLServer硬件性能监控列表?操作系统性能监控列表?SQLServer2000配置性能监控列表?数据库配置设置性能监控列表?索引性能监控列表?应用程序和T-SQL性能监控列表?SQLServer数据库作业性能监控列表?使用Profiler找出低效的查询?怎样最好的实现SQLServer性能监控管理你的SQLServe性能的最好方法是首先回顾上面每一部分的内容,把它们打印出来。然后完成每一部分的内容,写下你收集到的结果。你也可以按照你喜欢的顺序进行。上面的步骤仅仅列出了我执行的顺序,因为那样通常能达到一个比较好的效果。性能监控列表计数器名称均值最小值最大值Memory:Pages/secMemory:AvailableBytesPhysicalDisk:%DisktimePhysicalDisk:Avg.DiskQueueLengthProcessor:%ProcessorTimeSystem:::UserConnections在上表输入你的结果.使用性能监视器找出SQLServer硬件瓶颈开始SQLServer性能调优的最佳地方就是从性能监视器(系统监视器)开始。通过一个24小时的周期对一些关键的计数器进行监控,你将对你SQLServer服务器的硬件瓶颈了如指掌。一般来说,使用性能监视器去创建一个一些关键的计数器的24小时周期的监控日志。当你决定创建这个日志的时候,你需要选择一个典型的24小时的周期,例如,选择一个典型的比较忙的日期,而不是周日或节假日。一旦你将这些捕获的数据形成日志后,在性能监视器的图形界面下会显示计数器的推荐值。你在上表中记下均值、最小值、峰值。做完这些后,用你的结果跟下面的分析比较。通过你的结果和下面的建议值进行比较,你将能快速的找到你的SQLServe正在经历的潜在的硬件瓶颈。
Ⅹ SQL Server 2005 性能优化
1.索引功能加强。联机索引选项允许在执行索引数据定义语言时,对基础表或聚集索引数据及任何关联的索引进行并发修改。用户可以再不干预对表或其他现有索引的访问的情况下添加索引
2.可收缩性的改进。对大型表和索引的分区功能显着地增强了大型数据库的查询性能。
3.表和索引分区吧数据库分成更小、更易管理的块,从而简化了大型数据的管理
4.Transact-SQL增强