sqlserver性能调优常用方法

1.检查数据库空间使用情况,查看哪些表占用了比较大的磁盘空间

执行语句如下:

select o.name,
        SUM(p.reserved_page_count) as reserved_page_count,
        SUM(p.used_page_count) as used_page_count,
        SUM(
        case
        when(p.index_id<2) then (p.in_row_data_page_count+
        p.lob_used_page_count+p.row_overflow_used_page_count)
        else p.lob_used_page_count+p.row_overflow_used_page_count
        end
        ) as DataPages,
        SUM(
        case
        when (p.index_id<2) then row_count
        else 0
        end
        ) as rowCounts
        from sys.dm_db_partition_stats p inner join sys.objects o
        on p.object_id=o.object_id
        group by o.name
        order by rowCounts desc
View Code

 

2.通过活动监视器查看性能消耗

通过磁盘IO,CPU占用时间,逻辑读写的次数来判断哪些语句消耗性能比较大

 

3.通过执行时间,磁盘IO和执行计划查看sql语句情况,包括编译执行时间,索引扫描查找,读写等等

查看sql语句的执行时间和表扫描,逻辑读写情况的语句:

SET STATISTICS TIME ON
SET STATISTICS IO ON

预读:在查询计划生成的过程中,用统计信息去硬盘读取数据到缓存中,读一次就是读了一页数据

物理读:查询计划生成好以后,如果缓存缺少所需要的数据,再从硬盘里读取缺少的数据到缓存里,读一次就是读了一页数据

逻辑读:直接从缓存中读取数据,读一次就是读了一页数据,可以通过索引减少逻辑读的次数

因为物理读需要从硬盘从读取数据,会增加IO读开销,所以尽量减少物理读

 4.处理内存占用过高方法

1.增加服务器内存
2.设置sqlserver占用服务器内存的大小
3.清空sqlserver占用缓存
4.查找占用内存比较大的sql语句进行优化,这个是主要办法
5.重启服务器(清空占有的缓存,关掉线程,但是只能解决一时问题)

 

posted @ 2016-10-15 11:50  zfylzl  阅读(640)  评论(0编辑  收藏  举报