<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        SQLServer重建索引RebuildIndex

        來源:懂視網 責編:小采 時間:2020-11-09 16:12:23
        文檔

        SQLServer重建索引RebuildIndex

        SQLServer重建索引RebuildIndex:重建索引是為了減少數據碎片。數據碎片會導致 SQL Server 進行不必要的數據讀,降低 SQL Server 的性能。重建索引也會同時更新列統計,而如果查詢所使用的列缺少或遺漏統計信息,這可能導致 SQL Server 內部的優化器選擇比預期效率低的查詢計劃。 如果您重建
        推薦度:
        導讀SQLServer重建索引RebuildIndex:重建索引是為了減少數據碎片。數據碎片會導致 SQL Server 進行不必要的數據讀,降低 SQL Server 的性能。重建索引也會同時更新列統計,而如果查詢所使用的列缺少或遺漏統計信息,這可能導致 SQL Server 內部的優化器選擇比預期效率低的查詢計劃。 如果您重建

        重建索引是為了減少數據碎片。數據碎片會導致 SQL Server 進行不必要的數據讀,降低 SQL Server 的性能。重建索引也會同時更新列統計,而如果查詢所使用的列缺少或遺漏統計信息,這可能導致 SQL Server 內部的優化器選擇比預期效率低的查詢計劃。 如果您重建

        重建索引是為了減少數據碎片。數據碎片會導致SQL Server進行不必要的數據讀,降低SQL Server的性能。重建索引也會同時更新列統計,而如果查詢所使用的列缺少或遺漏統計信息,這可能導致SQL Server內部的優化器選擇比預期效率低的查詢計劃。

        如果您重建了某張表上的聚集索引,該表上的非聚集索引也同時會被更新。

        要更新索引,您可以使用Maintenance Wizard(相關內容您可以參考http://msdn.microsoft.com/en-us/library/ms180074.aspx),或在SQL Server代理(Agent)中運行如下的自定義代碼來更新某個數據庫中所有表上的索引:

        您可以根據您的需求修改DBREINDEX的參數。

        需要注意的是,重建非聚集索引時該表會暫時加上共享鎖,對用戶不可進行SELECT以外的操作;重建聚集索引時該表會暫時加上排外鎖,不允許任何用戶訪問。因此需要制定好計劃來預防可能的訪問問題。

        REBUILD有一個fill factor參數,如果fill factor設置為100%,這意味著每一個索引頁都是完全滿的,如果fill factor設置為50%意味著每個索引頁都是半滿的。對于fill factor 100%,每次新插入或更新一個記錄,由于當前頁沒有空間可用,可能有分頁情況產生。過多的分頁會降低SQL Server的性能。下面具體舉個例子:

        假設您在一張表上建立了一個使用默認fill factor的新索引。當SQL Server創建索引時,它會把索引放置在連續的物理頁上,以使數據順序地被讀,I/O訪問最優化。但當表因INSERT,UPDATE,DELETE等操作增長改變時,分頁發生,SQL Server在磁盤的其他地方分配新的頁,導致新的頁與原物理頁不連續,增加了隨機I/O,訪問索引頁變慢。

        那么fill factor的合適值應該為多少?這取決于表的讀/寫比:

        低更新表(讀/寫比:100比1):100% fill factor

        高更新表(寫超過讀):50%-70% fill factor

        居中:80%-90% fill factor

        過低的fill factor會增加頁的數量,也會導致更多的頁需要被移至緩存,緩存中有用的數據減少。默認的fill factor為0(即100% fill factor),通常這不是個好的選擇,特別是對于聚集索引。

        如果您無法判斷設置什么fill factor,您首先需要確定磁盤的讀/寫比.方法就是使用如下兩個計數器:

        Physical Disk Object: % Disk Read Time 和 Physical Disk Object: % Write Time。另外一個可能有用的計數器就是:SQL Server Access Methods: Pages Splits/Sec。這個計數器測量SQL Server內每秒分頁的次數。如果該數值過高,您需要降低fill factor防止新的分頁。

        如果您想確認您的索引因分頁產生的碎片程度,您可以運行DBCC SHOWCONTIG命令。如果看特定表和特定索引,您可以運行如下代碼:

        結果集中最重要的參數是Scan Density,越接近100%越好。如果Scan Density小于75%,那么您可能需要重建表中的索引。

        對于小于100數據頁,重建索引并不會有明顯的性能改善。這是因為物理硬件緩存,SQL Server緩存和SQL Server預讀機制隱藏了碎片的負面作用。但對于非常大的表,重建索引會使它受益匪淺,因為涉及大量磁盤I/O操作。

        <無> $velocityCount-->
        ALTER INDEX Idx_name ON tblCompany REBUILD
         USE databasename --Enter the name of the database you want to reindex
        DECLARE @TableName VARCHAR(255)
        DECLARE tablecursor CURSOR FOR
         SELECT table_name
         FROM information_schema.tables
         WHERE table_type = 'base table'
        
        OPEN tablecursor
        
        FETCH next FROM tablecursor INTO @TableName
        
        WHILE @@FETCH_STATUS = 0
         BEGIN
         DBCC dbreindex(@TableName, '', 90)
        
         FETCH next FROM tablecursor INTO @TableName
         END
        
        CLOSE tablecursor
        
        DEALLOCATE tablecursor 
         --Script to identify table fragmentation
        --Declare variables
        DECLARE @ID INT,
         @IndexID INT,
         @IndexName VARCHAR(128)
        
        --Set the table and index to be examined
        SELECT @IndexName = 'index_name' --enter name of index
        SET @ID = Object_id('table_name') --enter name of table
        --Get the Index Values
        SELECT @IndexID = indid
        FROM sysindexes
        WHERE id = @ID
         AND name = @IndexName
        
        --Display the fragmentation
        DBCC showcontig (@id, @IndexID) 
        --方法一:
        
         USE adventureworks
        
        go
        
        EXEC Sp_msforeachtable
         @command1="print '?' DBCC DBREINDEX ('?', '', 90)"
        
        go
        
        EXEC Sp_updatestats
        
        go 
        
        --方法二:
        
        USE adventureworks
        
        go
        
        CREATE PROCEDURE Usp_reindex_updatestats
        AS
         DECLARE @MyTable VARCHAR(255)
         DECLARE mycursor CURSOR FOR
         SELECT table_name
         FROM information_schema.tables
         WHERE table_type = 'base table'
         AND table_name NOT LIKE 'sys%'
        
         OPEN mycursor
        
         FETCH next FROM mycursor INTO @MyTable
        
         WHILE @@FETCH_STATUS = 0
         BEGIN
         PRINT 'Reindexing Table: ' + @MyTable
        
         DBCC dbreindex(@MyTable, '', 90)
        
         FETCH next FROM mycursor INTO @MyTable
         END
        
         CLOSE mycursor
        
         DEALLOCATE mycursor
        
         EXEC Sp_updatestats
        
        go 

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        SQLServer重建索引RebuildIndex

        SQLServer重建索引RebuildIndex:重建索引是為了減少數據碎片。數據碎片會導致 SQL Server 進行不必要的數據讀,降低 SQL Server 的性能。重建索引也會同時更新列統計,而如果查詢所使用的列缺少或遺漏統計信息,這可能導致 SQL Server 內部的優化器選擇比預期效率低的查詢計劃。 如果您重建
        推薦度:
        標簽: sql server index
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩精品无码专区免费播放| 亚洲色WWW成人永久网址| 亚洲美女免费视频| 国产成人一区二区三区视频免费| 亚洲人成人网站色www| 国产做国产爱免费视频| 亚洲AV乱码一区二区三区林ゆな| 日韩亚洲Av人人夜夜澡人人爽| 99久久国产精品免费一区二区| 成人a视频片在线观看免费| 亚洲中文字幕一二三四区| 国产精品免费久久久久电影网| 国产成人免费在线| 成人看的午夜免费毛片| 亚洲AV无码一区二区三区牲色 | 在线观看免费亚洲| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 免费黄色网址入口| 国产精品亚洲综合网站| 成人亚洲性情网站WWW在线观看| 亚洲免费黄色网址| 日韩精品无码免费一区二区三区 | 毛片免费在线视频| 亚洲免费网站观看视频| 99久久国产热无码精品免费| 国产成人亚洲合集青青草原精品| 免费无码又爽又刺激高潮视频 | WWW亚洲色大成网络.COM| 成年女人色毛片免费看| 亚洲日韩在线中文字幕综合| 丁香五月亚洲综合深深爱| 18禁美女黄网站色大片免费观看 | 免费永久在线观看黄网站| 亚洲综合国产成人丁香五月激情 | 84pao强力永久免费高清| 亚洲成av人片在线天堂无| 国产精品亚洲产品一区二区三区 | 在线播放免费人成视频在线观看| 黄色三级三级免费看| 亚洲日本中文字幕区| 99精品视频在线视频免费观看 |