SQL Server性能分析如何来做
SQLServer 2008-10-15 07:21:07 阅读487 评论2 字号:大中小
当您怀疑计算机硬件是影响SQL Server运行性能的主要原因时,可以通过SQL Server Performance Monitor监视相应硬件的负载,以证实您的猜测并找出系统瓶颈。下文将介绍一些常用的分析对象及其参数。 Memory: Page Faults / sec
如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。 Process: Working Set
SQL Server的该参数应该非常接近分配给SQL Server的内存值。在SQL Server设定中,如果将\置为0, 则Windows NT会决定SQL Server的工作集的大小。如果将\置为1,则强制工作集大小为SQLServer的分配内存大小。一般情况下,最好不要改变\的缺省值。 Process:%Processor Time
如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。 Processor:%Privileged Time
如果该参数值和\参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低\,\等措施都会降低该值。 Processor:%User Time
表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。 Physical Disk:Avg.Disk Queue Length
该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。 注意:一个Raid Disk实际有多个磁盘。 SQLServer:Cache Hit Ratio
该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。 读到这里可能有读者会好奇,SQL Server Performance Monitor是什么,如何来打开,样子有是什么样子的?
其实SQL Server Performance Monitor说的就是中文版SQL Server中的性能监视器,这里介绍一种打开SQL Server Performance Monitor的方法,如下:
首先打开SQL 事件探测器,这个通过企业管理器打开或者从开始菜单打开都可以,然后从事件探测器的工具-性能监视器就可以打开SQL Server Performance Monitor了。如下图所示(碍于网易博客本身的原因,可能图片显示比较小,请读者见谅):
如果本文中提到的参数,在SQL Server Performance Monitor中没有显示,请不要着急,按快捷键Ctrl+I或者最上面一排的“+”号按钮,从弹出的窗口中添加更多的参数或删除我
们认为无用的参数。如下图所示:
检查SQL Server 2005的索引密度和碎片信息(转)
查询数据库中所有表的索引密度和碎片信息,以便为索引的重建和整理提供依据,也可以参考DBCC SHOWCONTIG,通常FRAGMENTATIOIN在30%以上建议重建,否则建议整理
SELECT i.name AS indexname, o.name AS tablename, s.name AS schemaname, f.index_type_desc AS indextype,
f.avg_page_space_used_in_percent AS indexdensity, f.avg_fragmentation_in_percent AS indexfragmentation, f.page_count AS pages
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') f INNER JOIN sys.objects o ON o.object_id = f.object_id INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
INNER JOIN sys.indexes i ON f.object_id = i.object_id AND f.index_id = i.index_id WHERE page_count > 50 AND f.index_id > 0 ORDER BY o.name, i.index_id
LIMITED | SAMPLED | DETAILED | NULL | DEFAULT
这些模式影响了如何收集碎片数据。LIMITED模式扫描堆所有的页,但对于索引,则只扫描叶级上面的父级别页。SAMPLED收集在堆或索引中1%采样率的数据。DETAILED模式扫描所有页(堆或索引)。DETAILED是执行最慢的,但也是最精确的选项。指定NULL或DEFAULT的效果与LIMITED模式的相同。
SQL Server 查看数据库基本信息
整理了一下如何查看数据库信息,记得有一次,在客户生产环境中,通过 print @@Version 查看,发现没有安装Sql server Sp2 就直接给他安装上sp2,后来发现是Windows 2003的sp1,而不是Sql server ,下面语句就可以查看数据库的版本和补丁信息
select
CONVERT(sysname, SERVERPROPERTY('servername')) N'数据库实例名', SERVERPROPERTY('ProductVersion') N'数据库版本', SERVERPROPERTY ('Edition') N'数据库类型', SERVERPROPERTY('ProductLevel') N'数据库补丁'
sql server性能分析--定时收集系统运行情况
最近要回到公司,暂时离开客户的生产数据库,不能及时得到下列数据库信息:
1,系统运行sql语句的执行情况 2,统计每天全部表的数据变化(数据每天的增量)。
特意写了3个job线程,在晚上业务不繁忙的时候执行,来收集系统运行情况信息,等我回来再来分析sql,同时为系统优化提供参考。
create table tbSql( [语句编译时间] datetime,