SQL SERVER 性能调优
SQL SERVER 性能调优
雅冰石
DBA
展开
-
SQL SERVER聚集索引
简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变得十分重要了。本文从旨在从性能的角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。 聚集索引所在的列或列的组合最好是唯一的转载 2013-10-16 15:22:45 · 1235 阅读 · 0 评论 -
SQL SERVER 找出长时间运行的事务
前言:事务是OLTP系统中的主要部分。它管理数据一致性和数据并发问题,当多个资源同时被读取或者修改相同数据时,SQLServer会通过锁定机制来确保数据库中的数据总是处于一个有效状态。在SQLServer中,锁管理器是负责实现这些锁机制。SQLServer对于不同的资源类型提供不同的锁类型,如数据库、文件、对象、表、区、页和键。当你使用事务时,依然会遇到由事务引起的问题,这些通常是转载 2014-04-24 13:54:15 · 4791 阅读 · 0 评论 -
SQL SERVER 资源性能监控-资源监视器
资源监视器提供一个快速、实时及图形化界面来显示包括CPU、内存、I/O和网络使用情况的信息,可以监视和检查所有当前运行在机器上的进程的这部分信息。并可以通过这个工具来结束你认为对性能有潜在风险的进程。 监视服务器性能 当用户反应SQLServer所在的服务器响应速度非常慢时,将优先使用什么工具来快速查看服务器性能?转载 2014-05-23 09:33:28 · 5327 阅读 · 0 评论 -
SQL SERVER资源性能监控-性能计数器具体案例(监控CPU)
本文讲述如何监控CPU的使用情况前言:CPU是服务器中最重要的资源。在数据库服务器中,CPU的使用情况应该时刻监控以便SQLServer一直处于最佳状态。本文将会使用可靠性和性能监视器来获取CPU相关的使用统计信息可靠性和性能监视器是过去性能监视器工具的加强版。同时拥有性能监视器的全部功能。性能计数器提供对各种系统活动的统计功能。可以找到有数百种转载 2014-05-23 09:40:43 · 3584 阅读 · 0 评论 -
SQL SERVER资源性能监控-性能计数器监控点
作为DBA,每个人都会用一系列计数器来监视SQLSERVER的运行环境,使用计数器,既可以衡量当前的数据库的性能,还可以和以前的性能进行对比。我们也可以一直以快速和简单的方法把计数器做了一张图表来识别数据库的性能的变化情况,来分析数据库性能的趋势。 下面是我常用的前10位的SQL Server计数器,严格的来说,它们没有特定的顺序。对于每一个计数器,我将尽可能所描述的是什么,在某些情况下转载 2014-05-23 09:48:27 · 952 阅读 · 0 评论 -
利用扩展事件和警报实时监控死锁-命令方式
一:实验背景日常工作中,经常会出现一些死锁现象发生,影响系统性能。因此,我们需要一种方法实时得监控死锁,一旦有死锁,发邮件通知我们,然后由相关人去解决。扩展事件是一种轻量级的调优工具,占用资源少,高配置性,高扩展性。所以我们选择用扩展事件监控死锁,然后通过警报,实时得通知我们。备注:本实验是以自己本地数据库实例做的。二:试验步骤1:建事件会话CREATE EVENT原创 2014-05-27 16:00:15 · 1337 阅读 · 0 评论 -
利用扩展事件监控死锁-图形用户界面
一:建事件会话1:打开新建会话向导展开对象资源管理器->管理->扩展事件->会话->新建会话向导:2:简介3:设置会话属性输入扩展事件会话名称(勾选‘在服务器启动时启动事件会话’,否则下次服务器启动时,会话目标数据都是空的):4:选择模板 5:选择要捕获的事件选择事件xml_deadlock_report,如图:选中,将其移到右边‘所选事翻译 2014-06-08 10:30:28 · 1454 阅读 · 0 评论 -
SQLSERVER聚集索引与非聚集索引的再次研究(下)
上篇主要说了聚集索引和简单介绍了一下非聚集索引,相信大家一定对聚集索引和非聚集索引开始有一点了解了。这篇文章只是作为参考,里面的观点不一定正确上篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(上)下篇主要说非聚集索引先上非聚集索引的结构图 先创建Department8表 1 --非聚集索引 2 USE [pratice] 3转载 2014-06-10 09:58:08 · 924 阅读 · 0 评论 -
SQLSERVER聚集索引与非聚集索引的再次研究(上)
SQLSERVER聚集索引与非聚集索引的再次研究(上)上篇主要说聚集索引下篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(下)由于本人还是SQLSERVER菜鸟一枚,加上一些实验的逻辑严谨性,单写《SQLSERVER聚集索引与非聚集索引的再次研究(上)》就用了12个小时,两篇文章加起来最起码写了20个小时,本人非常非常用心的努力完成这两篇文章,希转载 2014-06-10 09:55:50 · 840 阅读 · 0 评论 -
cpu time ,elapsed time
在我们使用set statistics time on 来查看SQL语句执行的时间时,SQL Sever会给我们返回来两个时间一个是CPU Time 另一个是Elapsed Time 那么这两个时间有什么不同呢? CPU Time 指的是CPU在忙于执行当前任务的时间,其并没有考虑等待时间,如IO等待,网络等待等,而Elapsed Time 则是执行当前任务所花费的总时间,也就是转载 2014-06-09 13:45:25 · 2609 阅读 · 0 评论 -
SQLSERVER中的锁资源类型RID KEY PAG EXT TAB DB FIL
在检测死锁的时候,会用到sp_lock这个存储过程,里面有一列:type 即锁的资源类型通俗来讲就是SQLSERVER可以在哪些资源上加锁可以加锁的资源有RID KEY PAG EXT TAB DB FIL ,下面一一道来以下是对不同种类的资源含义的解释,只有了解他们的意思,才能真正看懂阻塞RID:格式为fileid:pagenumber:rid的标识符,其中fil转载 2014-06-09 15:58:30 · 1808 阅读 · 0 评论 -
数据库常规top 10
查看数据库基本运行信息时 : CPU IO Recompile Select 都是我们要查看的要点。可以利用一下语句进行查看--CPUSELECT TOP 10 total_worker_time AS TotalTime, total_worker_time/execution_count AS avg_cpu_cost,转载 2014-06-09 14:25:45 · 953 阅读 · 0 评论 -
SQL Server 2008使用扩展事件进行高级故障排除
2010-12-16 09:05 佚名 微软TechNet中文网 字号:T | T本文将介绍故障排除的事件,其中所执行的绝大多数故障排除都是为了查找某种性能问题。即使是最精心构建并经过测试的应用程序系统都会随着时间的推移发生变化,进而导致可能出现重大的性能问题。AD:51CTO学院:IT精品课程在线看!全世界的 SQL Serve转载 2014-05-06 17:52:43 · 1155 阅读 · 0 评论 -
侦测阻塞语句
前言:如果一个事务正在等待一些给其他事务锁定的资源。这个事务就被成为“被阻塞的事务”。反过来,引起阻塞的事务,也就是锁定资源并造成其他事务等待的事务叫做“正在阻塞的事务”。长时间运行事务会阻塞其他事务和查询,使他们等待长时间。在繁重的系统中,很多时候我们会遇到阻塞问题,如果一个事务因为阻塞未完成。会造成一些列的等待链。本文将介绍如何发现并马上解决这方面的问题。转载 2014-04-24 10:18:59 · 902 阅读 · 0 评论 -
SQL SERVER死锁简介
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的。理解死锁首先需要对死锁所涉及的相关观念有一个理解。 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁。比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示。 图1.对于死锁的直观理解转载 2014-01-10 09:06:49 · 874 阅读 · 0 评论 -
查看sql server默认跟踪文件位置
命令:SELECT * FROM ::fn_trace_getinfo(DEFAULT)转载 2014-04-21 17:35:23 · 1417 阅读 · 0 评论 -
SQL SERVER 带包含列的索引
开文之前首先要讲讲几个概念 【覆盖查询】 当索引包含查询引用的所有列时,它通常称为“覆盖查询”。 【索引覆盖】 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会发生Bookup Lookup,因为找到索引项,就已经找到所需的数据了,没有必要再到数据行去找了。这种情况,叫做索引覆盖;转载 2013-10-16 17:37:23 · 1378 阅读 · 0 评论 -
看懂SQL SERVER执行计划
对于SQL Server的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划。毕竟我对SQL Server的认识有限,如有错误,也恳请您在发现后及时批评指正。首先,打开【SQL Server Management Studio】,输入一个查询语句看看SQL Server是如何显示查询计划的吧转载 2013-12-23 17:32:22 · 935 阅读 · 0 评论 -
sql server中clustered index scan,table scan,index scan
这里就要将的是table scan,index scan以及index seek.A table scan is where the table is processed row by row from beginning to end.An index scan is where the index is processed row by row from beginning to en转载 2013-12-27 18:59:35 · 4404 阅读 · 1 评论 -
查看活动事务,会话信息
无论是有意无意,如果事务在数据库中保持打开,则它会阻塞其他进程对修改后的数据进行操作。同样,对事务日志进行备份也只会截断不活动事务的那部分事务日志,所以打开的事务会导致日志变多(甚至达到物理限制),直到事务被提交或回滚。要找到最早的活动事务,可以使用DBCC OPENTRAN命令。详细用法见MSDN:http://msdn.microsoft.com/zh-cn/library/ms182转载 2014-01-14 15:41:39 · 1174 阅读 · 0 评论 -
如何写出高性能的SQL语句
1、 首先要搞明白什么叫执行计划?执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。转载 2014-03-04 13:27:29 · 1527 阅读 · 0 评论 -
SQL SERVER表连接简单调优
问题 : 1.什么是内连接(inner)和外联结(outer) 2. SQL server 表连接 (FROM--AND 法, JOIN -- ON 法)的区别. 3.表连接及多表连接的SQL语句执行顺序,和性能调优.1.第一个问题,首先要明白如何使用JOIN 和 ON 关键字作表连接。 申明:下文中所用的等价,可能指的是逻转载 2014-03-06 09:40:47 · 1455 阅读 · 0 评论 -
bookmark lookup(书签查找)
含义:使用书签(行 ID 或聚集键)在堆表或聚集索引内查找相应的行。假设在非聚集索引关键字中有一个带有谓词的查询用来选择没有被索引覆盖的列。例如下面这个查询。 select [orderId], [customerid] from [Orders] where [orderdate] = '1998-02-26'原创 2014-03-13 16:59:38 · 1550 阅读 · 0 评论 -
监控SQL SERVER的运行状况-常用检测语句
Microsoft SQL Server 2005 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的运行状况、诊断问题和优化性能。常规服务器动态管理对象包括:dm_db_*:数据库和数据库对象dm_exec_*:执行用户代码和关联的连接dm_os_*:内存、锁定和时间转载 2014-04-29 13:25:15 · 1021 阅读 · 0 评论 -
SQL SERVER三种表连接方式
简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种。理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述。 嵌套循环连接(Nested L转载 2014-03-19 09:36:26 · 4436 阅读 · 0 评论 -
SQL SERVER创建和更新统计信息
简介:查询的统计信息:目前为止,已经介绍了选择索引、维护索引。如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索引供查询之用,因为SQLServer优化器是基于开销的优化。当在where和on上的列上的数据需要显示在结果集的时候,如果有实时的统计信息,优化器会选择最好的执行方式,因为优化器会从统计信息中获得这些数据的明细情况。在创建索引的时候,SQLServer就会在转载 2014-03-18 16:44:33 · 1167 阅读 · 0 评论 -
强制SQL SERVER使用某种表连接方式
我们看具体的例子:一般的语句是:USE SUBJECTDB;SELECT *FROM COMMON.city C INNER JOIN PRODEFINE.PROJECTINFO P ON C.Code=P.ProjectCityCode强制使用MERGE JOIN:USE SUBJECTDB;SELECT *FROM COMMON.city原创 2014-03-19 10:41:48 · 1507 阅读 · 0 评论 -
SQL SERVER 统计信息简介
简介 SQL Server查询分析器是基于开销的。通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引。而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息。 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令:转载 2013-12-19 17:24:09 · 1110 阅读 · 0 评论 -
意向锁
表是由行组成的,当我们向某个表加锁时,一方面需要检查该锁的申请是否与原有的表级锁相容;另一方面,还要检查该锁是否与表中的每一行上的锁相容。比如一个事务要在一个表上加 S 锁,如果表中的一行已被另外的事务加了 X 锁,那么该锁的申请也应被阻塞。如果表中的数据很多,逐行检查锁标志的开销将很大,系统的性能将会受到影响。为了解决这个问题,可以在表级引入新的锁类型来表示其所属转载 2014-06-13 15:57:18 · 3762 阅读 · 0 评论