亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

sql索引碎片產生的原理 解決碎片的辦法(sql碎片整理)

2020-06-27 15:31:47
字體:
來源:轉載
供稿:網友
本文需要你對索引和SQL中數據的存儲方式有一定了解

在SQL Server中,存儲數據的最小單位是頁,每一頁所能容納的數據為8060字節.而頁的組織方式是通過B樹結構(表上沒有聚集索引則為堆結構,不在本文討論之列)如下圖:

    sql碎片整理,sql索引碎片,解決碎片的辦法

    在聚集索引B樹中,只有葉子節點實際存儲數據,而其他根節點和中間節點僅僅用于存放查找葉子節點的數據.

    每一個葉子節點為一頁,每頁是不可分割的. 而SQL Server向每個頁內存儲數據的最小單位是表的行(Row).當葉子節點中新插入的行或更新的行使得葉子節點無法容納當前更新或者插入的行時,分頁就產生了.在分頁的過程中,就會產生碎片.

 

 

理解外部碎片

    首先,理解外部碎片的這個“外”是相對頁面來說的。外部碎片指的是由于分頁而產生的碎片.比如,我想在現有的聚集索引中插入一行,這行正好導致現有的頁空間無法滿足容納新的行。從而導致了分頁:

   sql碎片整理,sql索引碎片,解決碎片的辦法

     因為在SQL SERVER中,新的頁是隨著數據的增長不斷產生的,而聚集索引要求行之間連續,所以很多情況下分頁后和原來的頁在磁盤上并不連續.

     這就是所謂的外部碎片.

     由于分頁會導致數據在頁之間的移動,所以如果插入更新等操作經常需要導致分頁,則會大大提升IO消耗,造成性能下降.

     而對于查找來說,在有特定搜索條件,比如where子句有很細的限制或者返回無序結果集時,外部碎片并不會對性能產生影響。但如果要返回掃描聚集索引而查找連續頁面時,外部碎片就會產生性能上的影響.

 

 

     在SQL Server中,比頁更大的單位是區(Extent).一個區可以容納8個頁.區作為磁盤分配的物理單元.所以當頁分割如果跨區后,需要多次切區。需要更多的掃描.因為讀取連續數據時會不能預讀,從而造成額外的物理讀,增加磁盤IO.

 

理解內部碎片

    和外部碎片一樣,內部碎片的”內”也是相對頁來說的.下面我們來看一個例子:

    sql碎片整理,sql索引碎片,解決碎片的辦法

    我們創建一個表,這個表每個行由int(4字節),char(999字節)和varchar(0字節組成),所以每行為1003個字節,則8行占用空間1003*8=8024字節加上一些內部開銷,可以容納在一個頁面中:

    sql碎片整理,sql索引碎片,解決碎片的辦法

    當我們隨意更新某行中的col3字段后,造成頁內無法容納下新的數據,從而造成分頁:

    sql碎片整理,sql索引碎片,解決碎片的辦法

   分頁后的示意圖:

   sql碎片整理,sql索引碎片,解決碎片的辦法

    而當分頁時如果新的頁和當前頁物理上不連續,則還會造成外部碎片

 

 

 

內部碎片和外部碎片對于查詢性能的影響

    外部碎片對于性能的影響上面說過,主要是在于需要進行更多的跨區掃描,從而造成更多的IO操作.

    而內部碎片會造成數據行分布在更多的頁中,從而加重了掃描的頁樹,也會降低查詢性能.

    下面通過一個例子看一下,我們人為的為剛才那個表插入一些數據造成內部碎片:

    sql碎片整理,sql索引碎片,解決碎片的辦法

    通過查看碎片,我們發現這時碎片已經達到了一個比較高的程度:

    sql碎片整理,sql索引碎片,解決碎片的辦法

 

    通過查看對碎片整理之前和之后的IO,我們可以看出,IO大大下降了:

    sql碎片整理,sql索引碎片,解決碎片的辦法

 

對于碎片的解決辦法

    基本上所有解決辦法都是基于對索引的重建和整理,只是方式不同

    1.刪除索引并重建

       這種方式并不好.在刪除索引期間,索引不可用.會導致阻塞發生。而對于刪除聚集索引,則會導致對應的非聚集索引重建兩次(刪除時重建,建立時再重建).雖然這種方法并不好,但是對于索引的整理最為有效

    2.使用DROP_EXISTING語句重建索引

       為了避免重建兩次索引,使用DROP_EXISTING語句重建索引,因為這個語句是原子性的,不會導致非聚集索引重建兩次,但同樣的,這種方式也會造成阻塞

    3.如前面文章所示,使用ALTER INDEX REBUILD語句重建索引

       使用這個語句同樣也是重建索引,但是通過動態重建索引而不需要卸載并重建索引.是優于前兩種方法的,但依舊會造成阻塞??梢酝ㄟ^ONLINE關鍵字減少鎖,但會造成重建時間加長.

    4.使用ALTER INDEX REORGANIZE

       這種方式不會重建索引,也不會生成新的頁,僅僅是整理,當遇到加鎖的頁時跳過,所以不會造成阻塞。但同時,整理效果會差于前三種.

 

理解填充因子

      重建索引固然可以解決碎片的問題.但是重建索引的代價不僅僅是麻煩,還會造成阻塞。影響使用.而對于數據比較少的情況下,重建索引代價并不大。而當索引本身超過百兆的時候。重建索引的時間將會很讓人蛋疼.

      填充因子的作用正是如此。對于默認值來說,填充因子為0(0和100表示的是一個概念),則表示頁面可以100%使用。所以會遇到前面update或insert時,空間不足導致分頁.通過設置填充因子,可以設置頁面的使用程度:

     sql碎片整理,sql索引碎片,解決碎片的辦法

      下面來看一個例子:

      還是上面那個表.我插入31條數據,則占4頁:

      sql碎片整理,sql索引碎片,解決碎片的辦法

 

     通過設置填充因子,頁被設置到了5頁上:

     sql碎片整理,sql索引碎片,解決碎片的辦法

     這時我再插入一頁,不會造成分頁:

     sql碎片整理,sql索引碎片,解決碎片的辦法

     上面的概念可以如下圖來解釋:

     sql碎片整理,sql索引碎片,解決碎片的辦法

 

 

      可以看出,使用填充因子會減少更新或者插入時的分頁次數,但由于需要更多的頁,則會對應的損失查找性能.

     

如何設置填充因子的值

    如何設置填充因子的值并沒有一個公式或者理念可以準確的設置。使用填充因子雖然可以減少更新或者插入時的分頁,但同時因為需要更多的頁,所以降低了查詢的性能和占用更多的磁盤空間.如何設置這個值進行trade-off需要根據具體的情況來看.

    具體情況要根據對于表的讀寫比例來看,我這里給出我認為比較合適的值:

    1.當讀寫比例大于100:1時,不要設置填充因子,100%填充

    2.當寫的次數大于讀的次數時,設置50%-70%填充

    3.當讀寫比例位于兩者之間時80%-90%填充

    上面的數據僅僅是我的看法,具體設置的數據還要根據具體情況進行測試才能找到最優.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人免费大片| 色综合影院在线| 97国产suv精品一区二区62| 欧美xxxx14xxxxx性爽| 国产中文字幕日韩| 91探花福利精品国产自产在线| 成人啪啪免费看| 欧美乱人伦中文字幕在线| 亚洲一级免费视频| 中文字幕日韩精品有码视频| 久久艹在线视频| 亚洲自拍高清视频网站| 亚洲精品一区久久久久久| 在线观看精品自拍私拍| 日本午夜人人精品| 欧美电影《睫毛膏》| 国产精品久久一区| 国产精品入口福利| 亚洲精品免费网站| 97碰在线观看| 26uuu另类亚洲欧美日本老年| 久久99视频免费| 国产亚洲欧美日韩精品| 亚洲精品日韩久久久| 日韩专区在线观看| 欧美体内谢she精2性欧美| 亚洲视频在线播放| 国产精品视频白浆免费视频| 久久精品国产亚洲精品2020| 在线免费看av不卡| 国产精品视频区1| 激情成人中文字幕| 中文字幕国产亚洲| 亚洲欧美一区二区精品久久久| 55夜色66夜色国产精品视频| 亚洲第一精品久久忘忧草社区| 国产精品一区久久久| 国产精品69久久久久| 欧美性一区二区三区| 亚洲va久久久噜噜噜久久天堂| 亚洲美女又黄又爽在线观看| 国产成人精品免费视频| 欧美性理论片在线观看片免费| 欧美日韩亚洲系列| 久久深夜福利免费观看| 成人福利在线观看| 日本韩国在线不卡| 精品国产户外野外| 伊人av综合网| 国产日韩在线一区| 亚洲综合日韩中文字幕v在线| 亚洲免费电影在线观看| 国产精品福利在线观看网址| 久久久亚洲影院| 色综合久久中文字幕综合网小说| 久久久综合免费视频| 97在线看免费观看视频在线观看| 日本韩国在线不卡| 久久亚洲精品小早川怜子66| 久久影院资源网| 日韩乱码在线视频| 欧美一区二区影院| 亚洲视频在线观看| 亚洲电影成人av99爱色| 午夜精品久久久久久久男人的天堂| 色综合伊人色综合网| 亚洲男人天堂网| 国产成人a亚洲精品| 日韩av影视在线| 日韩中文有码在线视频| 国产91在线高潮白浆在线观看| 欧美丰满片xxx777| 日韩一区二区三区在线播放| 欧美理论电影在线播放| 国产精品草莓在线免费观看| 欧美性xxxx在线播放| 91精品综合视频| 久久午夜a级毛片| 国产一区二区三区欧美| 国内精品免费午夜毛片| 4388成人网| 欧美日韩在线视频一区| 欧美精品videossex88| 亚洲综合成人婷婷小说| 欧美成人免费在线视频| 久久久噜噜噜久久| 国内精品久久久久久影视8| 成人黄色短视频在线观看| 亚洲欧洲一区二区三区在线观看| 伊人伊人伊人久久| 91亚洲国产精品| 色悠悠国产精品| 亚洲欧美在线x视频| 国产成人一区三区| 日本精品久久久| 成人精品网站在线观看| 奇门遁甲1982国语版免费观看高清| 91中文精品字幕在线视频| 国产日韩欧美一二三区| 久久久久久久久综合| 亚洲第一网站男人都懂| 国产一区二区三区在线观看网站| 国产精品视频免费观看www| 日本国产欧美一区二区三区| 国产一区二区三区精品久久久| 日产精品99久久久久久| 久久久亚洲天堂| 亚洲精品美女久久| 国产精品一区二区三区免费视频| 久久综合久久八八| 国产婷婷成人久久av免费高清| 欧美性视频在线| 欧美日韩福利电影| 国产这里只有精品| 成人精品福利视频| 国产欧美精品久久久| 国产精品免费看久久久香蕉| 国产盗摄xxxx视频xxx69| 亚洲天堂男人天堂女人天堂| 欧美另类老肥妇| 国产色综合天天综合网| 亚洲色图15p| 综合网日日天干夜夜久久| 欧美高清在线视频观看不卡| 亚洲欧洲美洲在线综合| 亚洲国产私拍精品国模在线观看| 国产ts一区二区| 欲色天天网综合久久| 日韩av电影免费观看高清| 日韩欧美精品中文字幕| 69av在线播放| 久久精品99无色码中文字幕| 日韩欧美中文字幕在线播放| 国产日本欧美一区二区三区在线| 久久久精品中文字幕| 亚洲欧美日韩国产中文专区| 精品香蕉一区二区三区| 亚洲free性xxxx护士hd| 欧美精品videosex性欧美| 国产日产欧美精品| 国产精品青草久久久久福利99| 亚洲国产精久久久久久久| 国产在线999| 日韩中文av在线| 欧美午夜片欧美片在线观看| 国产精品一二三视频| 久久亚洲电影天堂| 亚洲欧美国产一本综合首页| 在线成人激情视频| 国产精品96久久久久久又黄又硬| 精品无人区乱码1区2区3区在线| 欧美激情一区二区三区在线视频观看| 欧美日韩亚洲国产一区| 国产精品女人网站| 久久精品91久久香蕉加勒比| 97久久精品人人澡人人爽缅北| 精品亚洲aⅴ在线观看| 26uuu国产精品视频| 午夜精品免费视频| 永久免费精品影视网站| 欧美一级高清免费播放| 久久久伊人日本| 亚洲精品国产综合区久久久久久久| 亚洲国产精品高清久久久|