trace,perfmon,cacti
sql tuning,阻塞,死锁,cpu,io,复制延时
话说阻塞
摘要:今天下午程序部门开始在我们的数据服务器上跑如下sql:DECLARE @Tfccc6dc969d446b0b7b7f5bfc1865227 table( AcceptCode varchar(20) ,Status smallint ,ExpressCompanyID int)insert into @Tfccc6dc969d446b0b7b7f5bfc1865227( AcceptCode, Status, ExpressCompanyID) select '411123093727', '10', '353'union all select
阅读全文
posted @
2011-12-31 17:12
xiaohuime
阅读(178)
推荐(0)
应用索引技术优化SQL 语句(Part 2)
摘要:四、分析执行计划创建索引根据语句的执行计划来判断应该对什么表创建什么索引,是常用优化技巧。其实文章前面的例子已经告诉读者如何结合statistics profile 和statistics IO语句的输出来创建索引。这里分析一个稍微复杂一些的例子。SQL语句如下:SELECT CurrentseNo FROM v_ptdata_edss WHERE MRN = @P1Statistics IO的输出如下:Table 'ptseoutpat'. Scan count 2, logical reads 8, physical reads 0, read-ahead reads 0.
阅读全文
posted @
2011-12-30 11:32
xiaohuime
阅读(160)
推荐(0)
应用索引技术优化SQL 语句(Part 1)
摘要:一、前言很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句。这类SQL语句性能不好的首要原因是缺乏高效的索引。没有索引除了导致语句本身运行速度慢外,更是导致大量的磁盘读写操作,使得整个系统性能都受之影响而变差。解决这类系统的首要办法是优化这些没有索引或索引不够好的SQL语句。本文讨论和索引相关的有关内容,以及通过分析语句的执行计划来讲述如何应用索引技术来优化SQL 语句。通过分析执行计划,读者可以检查索引是否有用,以及如何创建高效的索引。本文对数据库管理人员以及数据库系统开发人员都有一定参考意义。如果读者不知道应该优化数据库系统的哪些SQL语句,那么建议读者参考
阅读全文
posted @
2011-12-30 11:30
xiaohuime
阅读(202)
推荐(0)
谈谈SQL 语句的优化技术 (2)
摘要:三、优化SQL语句的系统设计原则仅仅简化还是不够。SQL语句的优化在系统的设计阶段就要通盘考虑。系统设计越合理,需要优化或后期返工的地方就越少。系统逻辑流程如果不合理,那么常会导致本来需要一个操作就可以解决的问题却要作好几个操作才能实现,反映在数据库上就是发出过多或过复杂的SQL语句。所以数据库系统设计是系统高性能运行的首要关键。很多系统开发者更关心功能的实现而不是数据库系统的整体运行性能。相当多的开发者对数据库性能优化技术不是很了解,写出来的SQL语句往往缺乏效率。下面让我们罗列一些在设计阶段就应该考虑的和性能密切相关的一些原则。1)限制结果集要尽量减少返回的结果行,包括行数和字段列数。返回
阅读全文
posted @
2011-12-30 11:06
xiaohuime
阅读(148)
推荐(0)
谈谈SQL 语句的优化技术 (1)
摘要:一、引言一个凸现在很多开发者或数据库管理员面前的问题是数据库系统的性能问题。性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。本文通过一个例子讲述如何应用简化技术来优化SQL 语句,也讨论在系统设计阶段应该考虑的和语句性能密切相关的一些问题。如果读者不知道应该优化数据库系统的哪些SQL语句,那么建议读者参考笔者的另外一篇文章,《应用Profiler优化SQL Server数据库系统》。本文不讨论索引,建议读者参考笔者的文章《应用索引技术优化SQL语句》,因为索引技术是优化SQL语句的重要部分。二、简化SQL语句1.简
阅读全文
posted @
2011-12-30 10:59
xiaohuime
阅读(254)
推荐(0)
应用Profiler优化SQL Server数据库系统
摘要:概述当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析。是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析。但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过程来提纲挈领地分析Profiler捕获的Trace文件,最终得出令人兴奋的数据分析报表,从而使你可以高
阅读全文
posted @
2011-12-30 10:43
xiaohuime
阅读(240)
推荐(0)
什么是PAGELATCH和PAGEIOLATCH
摘要:在分析SQL server 性能的时候你可能经常看到 PAGELATCH和PAGEIOLATCH。比方说Select * from sys.dm_os_wait_stats 的输出里面就有Latch的有关信息:那么什么是PAGELATCH和PAGEIOLATCH呢?先说什么Latch。 Latch是SQL server内部用来同步资源访问的一个数据结构,和操作系统的critical section 或 ReaderWriterLock类似。Latch保护了那些想保护的资源,使得访问同步有序。比方说,当某个线程获得某个资源的latch的独占使用权的时候,别的线程如果也需要访问这个latch则它必
阅读全文
posted @
2011-12-28 17:48
xiaohuime
阅读(377)
推荐(0)
临时表vs表变量以及它们对SQLServer性能的影响
摘要:在临时表create table #T (…)和表变量declare @T table (…)之间主要有3个理论上的不同。第一个不同是:事务日志不会记录表变量。因此,它们脱离了事务机制的范围,从下面的例子可显而易见:create table #T (s varchar(128)) declare @T table (s varchar(128)) insert into #T select 'old value #' insert into @T select 'old value @' begin transaction update #T set s=
阅读全文
posted @
2011-12-28 10:57
xiaohuime
阅读(277)
推荐(0)