zoukankan      html  css  js  c++  java
  • 怎样检查fragmentation

    可以运行下面SQL语句:

    SELECT dbschemas.[name] AS 'Schema', 
     dbtables.[name] AS 'Table', 
     dbindexes.[name] AS 'Index',
     indexstats.index_type_desc,
     indexstats.avg_fragmentation_in_percent,
     indexstats.page_count
    FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
    INNER JOIN sys.tables dbtables ON (dbtables.[object_id] = indexstats.[object_id])
    INNER JOIN sys.schemas dbschemas ON (dbtables.[schema_id] = dbschemas.[schema_id])
    INNER JOIN sys.indexes AS dbindexes ON (dbindexes.[object_id] = indexstats.[object_id]
    AND indexstats.index_id = dbindexes.index_id)
    WHERE indexstats.database_id = DB_ID()
    ORDER BY indexstats.avg_fragmentation_in_percent DESC
    View Code

     
    参考运行后这个avg_fragmentation_in_percent值,肯定是越小越好:

     

    以下内容于2014-10-07 13:15分更新:
    Insus.NET 写了一个存储过程,把avg_fragmentation_in_percent值大于或等于30的,rebuild索引:

    CREATE PROCEDURE [dbo].[usp_RebuildIndex]
    AS
    BEGIN
        IF OBJECT_ID('#t') IS NOT NULL
            DROP TABLE #t
        CREATE TABLE #t
        (
        [ID] INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
        [Table] NVARCHAR(128) NOT NULL,
        [Index] NVARCHAR(128) NOT NULL
        )
    
        INSERT INTO #t ([Table],[Index]) SELECT  dbtables.[name],dbindexes.[name] 
        FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
        INNER JOIN sys.tables dbtables ON (dbtables.[object_id] = indexstats.[object_id])
        INNER JOIN sys.schemas dbschemas ON (dbtables.[schema_id] = dbschemas.[schema_id])
        INNER JOIN sys.indexes AS dbindexes ON (dbindexes.[object_id] = indexstats.[object_id]
        AND indexstats.index_id = dbindexes.index_id)
        WHERE indexstats.database_id = DB_ID() AND dbindexes.[name] IS NOT NULL AND indexstats.avg_fragmentation_in_percent >= 30
    
        DECLARE @r INT = 1, @rs INT = 0
        SELECT @rs = MAX([ID]) FROM #t
    
        WHILE @r <= @rs
        BEGIN
            DECLARE @table NVARCHAR(128), @index NVARCHAR(128)
            SELECT @table = [Table],@index = [Index] FROM #t WHERE [ID] = @r
    
            EXECUTE('ALTER INDEX '+@index +' ON '+ @table +' REBUILD;')
    
            SET @r = @r + 1
        END
    END
    GO
    View Code
  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/insus/p/4008375.html
Copyright © 2011-2022 走看看