生成整理碎片脚本

生成整理碎片脚本  

  1 生成整理碎片脚本   2013 -12 - 19
  2 --Rebuild the following indexes in the AdventureWorks database
  3 --检查当前数据库的所有索引,然后根据查询出来的碎片比例,然后决定是否要对各个索引生成重建索引脚本
  4 --使用ctrl+t 拷贝输出结果的重建索引脚本,然后粘贴到新建查询窗口执行重建索引
  5 --对于碎片不对的索引,在输出结果里不会有该索引的重建索引脚本
  6 USE [GPOSDB]
  7 GO
  8 
  9 --Table to hold results
 10 DECLARE @tablevar TABLE
 11     (
 12       lngid INT IDENTITY( 1 , 1 ) ,
 13       objectid INT ,
 14       index_id INT
 15     )
 16 
 17 INSERT   INTO @tablevar
 18         ( objectid ,
 19           index_id
 20         )
 21         SELECT   [object_id] ,
 22                 index_id
 23         FROM     sys . dm_db_index_physical_stats( DB_ID ('GPOSDB' ), NULL -- NULL to view all tables
 24 , NULL -- NULL to view all indexes; otherwise, input index number
 25 , NULL -- NULL to view all partitions of an index
 26 , 'DETAILED' ) --We want all information
 27         WHERE   ( ( avg_fragmentation_in_percent > 15 ) -- Logical fragmentation
 28                   OR ( avg_page_space_used_in_percent < 60 )
 29                 ) --Page density
 30                 AND page_count > 8 -- We do not want indexes less than 1 extent in size
 31                 AND index_id NOT IN ( 0 )
 32 --Only clustered and nonclustered indexes
 33 
 34 SELECT   'ALTER INDEX ' + ind .[name] + ' ON ' + sc. [name] + '.'
 35         + OBJECT_NAME ( objectid) + ' REBUILD'
 36 FROM     @tablevar tv
 37         INNER JOIN sys. indexes ind ON tv .objectid = ind .[object_id]
 38                                       AND tv . index_id = ind . index_id
 39         INNER JOIN sys. objects ob ON tv .objectid = ob .[object_id]
 40         INNER JOIN sys. schemas sc ON sc .schema_id = ob .schema_id
 41 
 42 
 43 ( 2 行受影响 )
 44 
 45 ALTER INDEX PK_ST_OperationLOG ON dbo . ST_OperationLOG REBUILD
 46 ALTER INDEX PK_CT_Append ON dbo . CT_Append REBUILD
 47 
 48 ( 2 行受影响 )
 49 
 50 ------------------------------------------------------------------
 51 --Reorganize the following indexes in the AdventureWorks database
 52 USE AdventureWorks
 53 GO
 54 
 55 SELECT   OBJECT_NAME ( [object_id]) AS 'Table Name' ,
 56         index_id AS 'Index ID'
 57 FROM     sys . dm_db_index_physical_stats( DB_ID ('AdventureWorks' ), NULL -- NULL to view all tables
 58 , NULL -- NULL to view all indexes; otherwise, input index number
 59 , NULL -- NULL to view all partitions of an index
 60 , 'DETAILED' ) --We want all information
 61 WHERE   ( ( avg_fragmentation_in_percent > 10
 62             AND avg_fragmentation_in_percent < 15
 63           ) -- Logical fragmentation
 64           OR ( avg_page_space_used_in_percent < 75
 65                AND avg_page_space_used_in_percent > 60
 66              )
 67         ) --Page density
 68         AND page_count > 8 -- We do not want indexes less than 1 extent in size
 69         AND index_id NOT IN ( 0 )
 70 --Only clustered and nonclustered indexes
 71 
 72 --Rebuild the following indexes in the AdventureWorks database
 73 USE AdventureWorks
 74 GO
 75 
 76 SELECT   OBJECT_NAME ( [object_id]) AS 'Table Name' ,
 77         index_id AS 'Index ID'
 78 FROM     sys . dm_db_index_physical_stats( DB_ID ('AdventureWorks' ), NULL -- NULL to view all tables
 79 , NULL -- NULL to view all indexes; otherwise, input index number
 80 , NULL -- NULL to view all partitions of an index
 81 , 'DETAILED' ) --We want all information
 82 WHERE   ( ( avg_fragmentation_in_percent > 15 ) -- Logical fragmentation
 83           OR ( avg_page_space_used_in_percent < 60 )
 84         ) --Page density
 85         AND page_count > 8 -- We do not want indexes less than 1 extent in size
 86         AND index_id NOT IN ( 0 ) --Only clustered and nonclustered indexes
 87 -------------------------------------------------------------------------
 88 SELECT   page_latch_wait_count --page latch counts
 89         ,
 90         page_latch_wait_in_ms --page latch wait times
 91         ,
 92         row_lock_wait_in_ms --row lock wait times
 93         ,
 94         page_lock_wait_in_ms --page lock wait times
 95         ,
 96         row_lock_count --row lock counts
 97         ,
 98         page_lock_count --page lock counts
 99         ,
100         page_io_latch_wait_count --I/O wait counts
101         ,
102         page_io_latch_wait_in_ms --I/O wait times
103 FROM     sys . dm_db_index_operational_stats( DB_ID ('AdventureWorks' ),
104                                           OBJECT_ID ('HumanResources.Employee' ),
105                                           NULL -- NULL to view all indexes; otherwise, input index number
106 , NULL -- NULL to view all partitions of an index
107 )

 

posted @ 2013-12-19 21:45  桦仔  阅读(222)  评论(0编辑  收藏  举报