精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SQL Server使用索引實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)優(yōu)化

數(shù)據(jù)庫(kù) SQL Server 數(shù)據(jù)庫(kù)運(yùn)維
本文將介紹如何在SQL Server中通過(guò)使用索引實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)優(yōu)化,包括如何正確創(chuàng)建索引,在碎片出現(xiàn)后如何處理等內(nèi)容。

一、簡(jiǎn)介

自從你和你的團(tuán)隊(duì)成功的開(kāi)發(fā)和部署了一個(gè)INTERNET網(wǎng)站,已經(jīng)過(guò)去數(shù)月了,這個(gè)網(wǎng)站在很短的時(shí)間內(nèi)吸引了數(shù)千用戶前來(lái)注冊(cè)和使用,因此你有了一個(gè)非常滿意的客戶。包括你和你的團(tuán)隊(duì)、管理層、客戶,每個(gè)人都非常高興。

生活并不總是一帆風(fēng)順的。當(dāng)站點(diǎn)的用戶開(kāi)始日均高速增長(zhǎng)的時(shí)候,問(wèn)題隨即出現(xiàn)了,客戶發(fā)來(lái)郵件開(kāi)始抱怨網(wǎng)站性能太慢,同時(shí)稱網(wǎng)站正在丟失客戶。

你開(kāi)始調(diào)查這個(gè)系統(tǒng),很快你發(fā)現(xiàn)當(dāng)系統(tǒng)訪問(wèn)或更新數(shù)據(jù)的時(shí)候,速度非常慢。打開(kāi)數(shù)據(jù)庫(kù)一看,數(shù)據(jù)庫(kù)的記錄增加的很快,有些表的記錄達(dá)到了成千上萬(wàn)行,測(cè)試團(tuán)隊(duì)在產(chǎn)品數(shù)據(jù)庫(kù)上做了一個(gè)測(cè)試,結(jié)果發(fā)現(xiàn)在測(cè)試服務(wù)器上僅2/3秒就能完成的一個(gè)處理過(guò)程,現(xiàn)在需要5分鐘。”

這個(gè)古老的故事發(fā)生在全球范圍內(nèi)的數(shù)以千計(jì)的系統(tǒng)身上。包括我在內(nèi),幾乎每個(gè)開(kāi)發(fā)人員在他或她的開(kāi)發(fā)過(guò)程中會(huì)碰到同樣的事情。我知道為什么這樣的情形會(huì)發(fā)生,同時(shí)我也知道如何去克服它。

二、閱讀范圍

請(qǐng)注意本一系列文章討論的主要的焦點(diǎn)是“事務(wù)性的SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)性能優(yōu)化”,但大部分優(yōu)化技術(shù)同樣適用于其他的數(shù)據(jù)庫(kù)。

我將要討論的優(yōu)化技術(shù)僅僅適用于軟件開(kāi)發(fā)人員。作為一個(gè)開(kāi)發(fā)者,你需要跟隨我關(guān)注的問(wèn)題,確認(rèn)你已經(jīng)作了所有能做的事情,去優(yōu)化你已經(jīng)寫(xiě)的或?qū)⒁獙?xiě)的數(shù)據(jù)訪問(wèn)代碼。數(shù)據(jù)庫(kù)管理人員(DBA)同樣在優(yōu)化和提高性能上扮演了很重要的角色,但是DBA領(lǐng)域的優(yōu)化將不屬于這篇文章討論的范圍。

三、開(kāi)始優(yōu)化一個(gè)數(shù)據(jù)庫(kù)

當(dāng)基于數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng)放慢的時(shí)候,99%的可能是系統(tǒng)的數(shù)據(jù)訪問(wèn)過(guò)程沒(méi)有優(yōu)化,或者沒(méi)有使用***的方式。所以你需要回顧和優(yōu)化你的數(shù)據(jù)訪問(wèn)/操作過(guò)程,提高系統(tǒng)的全局性能。接下來(lái)我們通過(guò)一步一步的方式開(kāi)始我們的優(yōu)化任務(wù)。

***步:在列上采用正確的索引

有些人可能爭(zhēng)論實(shí)施正確的索引是否是數(shù)據(jù)庫(kù)優(yōu)化過(guò)程的***步。但是我認(rèn)為在數(shù)據(jù)庫(kù)應(yīng)用正確的索引是***位的。原因有2點(diǎn):

1.在一個(gè)產(chǎn)品系統(tǒng)里,它將使你在很快的時(shí)間內(nèi)提高盡可能大的性能。

2.創(chuàng)建數(shù)據(jù)庫(kù)索引不需要你做任何的系統(tǒng)修改,因此不需要任何重新編譯和部署

如果你發(fā)現(xiàn)有當(dāng)前的數(shù)據(jù)庫(kù)沒(méi)有很好的處理索引,你建了索引,結(jié)果就是性能的快速提升。然而,如果索引已經(jīng)處理了,我們進(jìn)入下面的步驟。

什么是索引

我相信你已經(jīng)明白了什么是索引,但是,我仍舊看到很多人對(duì)索引不太清楚。讓我們?cè)僖淮闻靼资裁词撬饕?qǐng)看下面的小故事。

很久以前,在一個(gè)古城市里有一個(gè)很大的圖書(shū)館,里面有數(shù)以千計(jì)的圖書(shū),圖書(shū)凌亂的存放在書(shū)架上。因此,一旦有讀者向圖書(shū)員索要一本圖書(shū),圖書(shū)員除了一本一本的檢查圖書(shū),看是否匹配讀者索要的圖書(shū),其它沒(méi)有更好的辦法。發(fā)現(xiàn)一本渴望的圖書(shū)往往需要花費(fèi)圖書(shū)員數(shù)個(gè)小時(shí)。同時(shí)讀者也不得不等很長(zhǎng)的時(shí)間。

[這看起來(lái)象一個(gè)沒(méi)有主鍵的表,當(dāng)在表里進(jìn)行搜索數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫(kù)引擎需要遍歷全部的數(shù)據(jù)來(lái)查找相關(guān)的記錄,所以運(yùn)行起來(lái)非常慢。]

當(dāng)讀者和圖書(shū)每天都在大量增加的時(shí)候,圖書(shū)員的工作越來(lái)越繁重。有一天,有一個(gè)智者來(lái)到圖書(shū)館,看到圖書(shū)員的繁重的工作,建議他給每一本書(shū)編號(hào),同時(shí)按順序碼放在書(shū)架上。“我可以從中得得什么好處?”圖書(shū)員問(wèn),那個(gè)智者回答到:“如果有讀者通過(guò)給你一個(gè)書(shū)號(hào)來(lái)索要圖書(shū),你很快就能發(fā)現(xiàn)在哪個(gè)書(shū)架上存放了包含該書(shū)號(hào)的圖書(shū),然后在這個(gè)書(shū)架上,你同樣能很快的找到需要的圖書(shū)”

[給書(shū)編號(hào)就象在數(shù)據(jù)表里創(chuàng)建一個(gè)主鍵,當(dāng)你在一個(gè)表里創(chuàng)建了一個(gè)主健后,系統(tǒng)就創(chuàng)建了一個(gè)聚集索引樹(shù),所有的包含記錄的數(shù)據(jù)頁(yè)按照主鍵的值在文件系統(tǒng)中進(jìn)行排序.每一個(gè)數(shù)據(jù)頁(yè)內(nèi)部也同樣按照主鍵的值進(jìn)行排序.所以,當(dāng)你向數(shù)據(jù)庫(kù)請(qǐng)求任何一個(gè)數(shù)據(jù)行的時(shí)候,首先數(shù)據(jù)庫(kù)服務(wù)器使用聚焦索引找到合適的頁(yè)(象首先發(fā)現(xiàn)書(shū)架一樣),接著在頁(yè)里查找包含主鍵值的記錄(象在書(shū)架發(fā)現(xiàn)一本書(shū))]

“這正是我所需要的”,興奮的圖書(shū)員開(kāi)始給書(shū)編號(hào),接著把它們排列在不同的書(shū)架上,他花費(fèi)了一天的時(shí)間來(lái)排序.在那天快結(jié)束的時(shí)候,他做了測(cè)試,結(jié)果發(fā)現(xiàn)幾乎不用花費(fèi)時(shí)間就能找到一本書(shū).圖書(shū)員高興極了.

[這正是你創(chuàng)建了主鍵后所發(fā)生的事情.首先,創(chuàng)建了聚焦索引,接著數(shù)據(jù)頁(yè)在物理文件里按照主鍵的值被排序.有一點(diǎn)我想你應(yīng)該很容易理解,因?yàn)閿?shù)據(jù)僅僅只能使用一列的值作為憑證來(lái)排序,所以一個(gè)表只能創(chuàng)建一個(gè)聚焦索引.就象圖書(shū)只能使用一個(gè)標(biāo)準(zhǔn)即書(shū)號(hào)來(lái)排序一樣.]

等一等,問(wèn)題還沒(méi)有被完全解決,在接下來(lái)的時(shí)間里,有個(gè)讀者沒(méi)有圖書(shū)的編號(hào),只有圖書(shū)的名字,他想通過(guò)書(shū)名索要圖書(shū),如何辦呢?可憐的圖書(shū)員只能按照從1到N來(lái)查遍所有已經(jīng)編號(hào)的圖書(shū).如果圖書(shū)存放在67號(hào)書(shū)架上,他可能需要20分鐘,相比早間圖書(shū)沒(méi)有被排序的時(shí)候,他所花費(fèi)的2-3個(gè)小時(shí).這確實(shí)有一個(gè)進(jìn)步.但是和花費(fèi)30秒通過(guò)書(shū)號(hào)查找一本書(shū)比較起來(lái),,20分鐘仍舊是一個(gè)不短的時(shí)間.還有沒(méi)有更好的辦法呢?他問(wèn)那個(gè)智者。

[假設(shè)你有一個(gè)產(chǎn)品表,如果你只有一個(gè)ProductID主鍵而沒(méi)有其它的索引,上述的情況同樣會(huì)發(fā)生,所以,當(dāng)使用產(chǎn)品名字來(lái)搜索的時(shí)候,數(shù)據(jù)引擎只能遍歷文件里所有物理排序的數(shù)據(jù)頁(yè),沒(méi)有其它的辦法.]

那個(gè)智者告訴圖書(shū)員:因?yàn)槟阋呀?jīng)按照書(shū)號(hào)對(duì)圖書(shū)做了排序,你不能使用其它的憑證重新排序,所以,較好的方法是創(chuàng)建一個(gè)包含書(shū)名和與之對(duì)應(yīng)的編號(hào)的目錄或索引,在這個(gè)目錄上,按照?qǐng)D書(shū)的字母順序排序,并使用阿拉伯字母進(jìn)行分組,例如,當(dāng)有人想查找DatabaseManagementSystem這本書(shū)的時(shí)候,你使用下列的規(guī)則就能發(fā)現(xiàn)這本書(shū)

1.在書(shū)名目錄里跳到D章,找到包含你的書(shū)名的圖書(shū).

2.得到這本書(shū)的書(shū)號(hào),然后用書(shū)號(hào)去查找這本書(shū)

“你真是一個(gè)天才”,圖書(shū)員喊到,他立即花費(fèi)了一些時(shí)間創(chuàng)建了書(shū)名的目錄,通過(guò)一個(gè)快速的測(cè)試,他發(fā)現(xiàn)使用書(shū)名來(lái)查詢僅僅需要1分鐘,其中30秒查找書(shū)的編號(hào),30秒用編號(hào)來(lái)找書(shū).

圖書(shū)員想到,讀者還可能使用其它的憑證來(lái)查找圖書(shū),例如作者的名字,所以他為作者創(chuàng)建了同樣的目錄.在創(chuàng)建了這些目錄后,圖書(shū)員可以使用這些憑證在1分鐘內(nèi)找到圖書(shū).圖書(shū)員的繁重的工作終于結(jié)束了,許多讀者也因?yàn)楹芸斓牟檎业綀D書(shū)而聚集在圖書(shū)館,圖書(shū)館變的非常熱鬧起來(lái).

圖書(shū)員隨后開(kāi)始過(guò)著他的快樂(lè)的生活,故事結(jié)束了.

到這里,現(xiàn)在我確信你已經(jīng)明白了什么是索引,為什么它們?nèi)绱酥匾约八鼈兊膬?nèi)部工作原理,,例如,我們有一個(gè)已創(chuàng)建聚焦索引的產(chǎn)品表Products,因?yàn)楫?dāng)創(chuàng)建了主鍵的時(shí)候,隨即就創(chuàng)建了聚焦索引。我門(mén)應(yīng)當(dāng)在Productname列創(chuàng)建一個(gè)非聚焦索引,一旦我們這樣作了,數(shù)據(jù)庫(kù)引擎就為非聚焦索引創(chuàng)建一個(gè)索引樹(shù),象故事里的書(shū)名目錄,按照產(chǎn)品的名字在索引頁(yè)里排序。每個(gè)索引頁(yè)包含一定范圍的產(chǎn)品名字和與之對(duì)應(yīng)的ProductID,所以當(dāng)使用產(chǎn)品名字作為憑證搜索的時(shí)候,數(shù)據(jù)庫(kù)引擎首先查詢產(chǎn)品名字的非聚焦索引樹(shù)來(lái)發(fā)現(xiàn)這本書(shū)的主鍵productID,一旦發(fā)現(xiàn),數(shù)據(jù)庫(kù)引擎就使用主鍵ProductID來(lái)搜索聚焦索引樹(shù),從而并得到正確的結(jié)果。

索引樹(shù)的工作原理如下圖:

索引樹(shù)工作原理圖

上圖被稱做為B+樹(shù),中間的節(jié)點(diǎn)包含一定數(shù)量的值,指示數(shù)據(jù)庫(kù)引擎當(dāng)從跟節(jié)點(diǎn)搜索一個(gè)索引值的時(shí)候如何遍歷.如果這是一個(gè)聚焦索引樹(shù),頁(yè)節(jié)點(diǎn)是物理數(shù)據(jù)頁(yè).如果是非聚焦索引樹(shù),頁(yè)節(jié)點(diǎn)包含包含索引值和與之對(duì)應(yīng)的聚焦索引值.

通常,在索引樹(shù)里發(fā)現(xiàn)需要的值并且轉(zhuǎn)到目標(biāo)數(shù)據(jù)記錄,對(duì)于數(shù)據(jù)庫(kù)引擎來(lái)說(shuō)花費(fèi)的時(shí)間是很短的,所以,在數(shù)據(jù)庫(kù)應(yīng)用索引極大的提高了數(shù)據(jù)的檢索操作.

請(qǐng)跟隨下列的步驟確保正確的索引包含在你的數(shù)據(jù)庫(kù)里。

確保數(shù)據(jù)庫(kù)的每個(gè)表有一個(gè)主健

這么做會(huì)確保每個(gè)表有一個(gè)聚焦索引,通過(guò)主健的值,表的數(shù)據(jù)頁(yè)通按物理順序排列在磁盤(pán)上。所以,任何使用主健的數(shù)據(jù)檢索操作,任何在主健字段的排序操作都能非常迅速的檢索數(shù)據(jù)。

在這些列上創(chuàng)建非聚焦索引

經(jīng)常被作為搜索憑證的列

用來(lái)聯(lián)合其它表的列

用來(lái)作為外健的列

用來(lái)排序的列

高選擇性列

Xml類(lèi)型

下面是一個(gè)創(chuàng)建索引的命令的例子

CREATEINDEX

NCLIX_OrderDetails_ProductIDON

dbo.OrderDetails(ProductID)

你也可以使用SQL Server控制臺(tái)在需要的列上創(chuàng)建索引

SQL Server控制臺(tái)

第二步:創(chuàng)建正確的復(fù)合索引

現(xiàn)在,你是否已經(jīng)在數(shù)據(jù)庫(kù)創(chuàng)建了所有的適合的索引?假設(shè),在一個(gè)Sales表(SelesID,SalesDate,SalesPersonID,ProductID,Qty),你已經(jīng)在外鍵(ProductID)創(chuàng)建了索引,如果ProductID是一個(gè)高選擇性列,任何在where語(yǔ)句里使用索引列(ProductID)的檢索數(shù)據(jù)的SELECT查詢都會(huì)運(yùn)行的非常快嗎?

對(duì),相對(duì)沒(méi)有在外鍵創(chuàng)建索引的情況(這需要全部數(shù)據(jù)頁(yè)的遍歷)來(lái)說(shuō),這是非常快的,但是,還有進(jìn)一步提升的空間.

讓我們假設(shè):Sales表包含10,000行數(shù)據(jù),下面的SQL語(yǔ)句選擇400行。

SELECTSalesDate,SalesPersonIDFROMSalesWHEREProductID=112

首先讓我們弄明白在數(shù)據(jù)庫(kù)引擎怎么執(zhí)行SQL語(yǔ)句的:

1.Sales表有在ProductID列一個(gè)非聚焦索引,所以,首先查詢非聚焦索引樹(shù),發(fā)現(xiàn)包含ProductID=112的入口。

2.包含ProductID=112入口的索引頁(yè)同樣同樣也包含了聚焦索引的值(所有的主健的值,即SalesID)

3.對(duì)于每一個(gè)主健(共400個(gè)),數(shù)據(jù)庫(kù)引擎進(jìn)入聚焦索引樹(shù)來(lái)發(fā)現(xiàn)正確的行的位置

4.對(duì)于每一個(gè)主健,一旦發(fā)現(xiàn)正確的行的位置,數(shù)據(jù)庫(kù)引擎會(huì)從匹配的行得到SalesDate和SalesPersonID的列的值。

請(qǐng)注意,在上述的步驟中,對(duì)于每一個(gè)ProductID=112的主鍵入口(共400個(gè)),數(shù)據(jù)庫(kù)引擎必須搜索聚焦索引樹(shù)400次,來(lái)檢索附加的列(SalesDate,SalesPersonID)。

讓我們猜想一下,如果非聚焦索引不但包含了聚焦索引的值(主健),同時(shí)還包含查詢里標(biāo)注的其他的2個(gè)列(SalesDate,SalesPersonID)的值,數(shù)據(jù)庫(kù)引擎就不用執(zhí)行上述的第3步和第4步,只須進(jìn)入ProductID的列的非聚焦索引樹(shù),從索引頁(yè)上讀取3個(gè)列的值,這樣運(yùn)行的速度不是更快嗎?

幸運(yùn)的是,有一種辦法來(lái)實(shí)施這種特點(diǎn),這就是復(fù)合索引。你可以在表的列上創(chuàng)建復(fù)合索引,標(biāo)明哪些列是和聚焦索引一起的應(yīng)該附加存儲(chǔ)的列。下面是一個(gè)在表Sales表的列ProductID創(chuàng)建復(fù)合索引的例子。

CREATEINDEXNCLIX_Sales_ProductID--Indexname

ONdbo.Sales(ProductID)--Columnonwhichindexistobecreated

INCLUDE(SalesDate,SalesPersonID)--Additionalcolumnvaluestoinclude

請(qǐng)注意,創(chuàng)建復(fù)合索引應(yīng)當(dāng)包含少數(shù)幾個(gè)列,并且這些列經(jīng)常在select查詢里使用。在復(fù)合索引里包含太多的列不僅不會(huì)給你帶來(lái)太多好處。而且由于使用相當(dāng)多的內(nèi)存來(lái)存儲(chǔ)復(fù)合索引的列的值,其后果是內(nèi)存溢出和性能降低。

當(dāng)創(chuàng)建復(fù)合索引的時(shí)候,盡量使用DatabaseTuningAdvisor(數(shù)據(jù)庫(kù)優(yōu)化顧問(wèn))的幫助。

我們知道,一旦一個(gè)SQL開(kāi)始運(yùn)行,SQLSERVER引擎優(yōu)化器基于以下幾點(diǎn)動(dòng)態(tài)的產(chǎn)生不同的檢索計(jì)劃。

數(shù)據(jù)量

統(tǒng)計(jì)

索引變化

TSQL的參數(shù)值

服務(wù)器的負(fù)載

這意味著:對(duì)于一個(gè)特殊的SQL語(yǔ)句,在產(chǎn)品服務(wù)器上的執(zhí)行計(jì)劃可能和在測(cè)試服務(wù)器上的執(zhí)行計(jì)劃不近相同,甚至表和索引結(jié)構(gòu)一樣。這同樣也表明,一個(gè)在測(cè)試服務(wù)器上創(chuàng)建的索引可能會(huì)加速測(cè)試服務(wù)器上的性能,但是在產(chǎn)品服務(wù)器上的同樣的索引可能不會(huì)帶給你任何益處。為什么?因?yàn)樵跍y(cè)試環(huán)境下的SQLSEVVER執(zhí)行計(jì)劃可能使用創(chuàng)建的索引,因此給你很好的性能,但是,在產(chǎn)品服務(wù)器上的執(zhí)行計(jì)劃可能出于下列的原因而根本不使用新創(chuàng)建的索引。例如:一個(gè)非聚焦索引列在產(chǎn)品服務(wù)器上不是高選擇性列,而在測(cè)試服務(wù)器上是高選擇性列.

所以,當(dāng)創(chuàng)建索引的時(shí)候,我們需要弄明白這一點(diǎn):索引是執(zhí)行引擎用來(lái)提高速度的。但是我們?cè)撊绾稳プ瞿?

答案是我們必須在測(cè)試服務(wù)器上模擬產(chǎn)品服務(wù)器的負(fù)載,接著創(chuàng)建索引,以及測(cè)試他們。只有這樣,在測(cè)試服務(wù)器上能提高性能的索引,才能更有可能在產(chǎn)品服務(wù)器上提高性能。

這么做應(yīng)該很困難,但幸運(yùn)的是,我們有一些好用的工具去實(shí)現(xiàn)它,請(qǐng)跟隨下面的指導(dǎo):

1:使用SQLprofiler捕獲產(chǎn)品服務(wù)器上的痕跡。使用Tuningtemplate(我知道,有人建議不要在產(chǎn)品服務(wù)器上使用SQLprofiler,但有些時(shí)候,你不得不在產(chǎn)品服務(wù)器上診斷性能問(wèn)題的時(shí)候使用它),如果你不熟悉這個(gè)工具,或者你想了解更多的關(guān)于SQLprofiler的知識(shí),請(qǐng)閱讀http://msdn.microsoft.com/en-us/library/ms181091.aspx

2.利用上一步產(chǎn)生的跟蹤文件,用數(shù)據(jù)庫(kù)優(yōu)化顧問(wèn)在測(cè)試數(shù)據(jù)庫(kù)創(chuàng)建相似的負(fù)載,從優(yōu)化顧問(wèn)得到一些建議,特別是創(chuàng)建索引的建議,你很可能從優(yōu)化顧問(wèn)那里獲得比較實(shí)際的建議。因?yàn)閮?yōu)化顧問(wèn)使用產(chǎn)品服務(wù)器產(chǎn)生的跟蹤文件來(lái)裝載測(cè)試服務(wù)器,所以能產(chǎn)生最可能好的索引建議。如果你不熟悉優(yōu)化顧問(wèn)工具,或者你想了解更多的關(guān)于使用優(yōu)化顧問(wèn)的的資料,請(qǐng)閱讀:http://msdn.microsoft.com/en-us/library/ms166575.aspx.

第三步:如果有碎片發(fā)生,重新整理它

到了這里,如果你已經(jīng)在表里創(chuàng)建了所有正確的索引,但是,你可能還沒(méi)有獲得所希望的良好的性能。什么原因呢?有一種可能是出現(xiàn)了索引碎片。

1、什么是索引碎片

索引碎片是這樣一種情形:由于在表里大量的插入、修改、刪除操作而使索引頁(yè)分裂。如果索引有了高的碎片,有兩種情況,一種情況是掃描索引需要花費(fèi)很多的時(shí)間,另一種情況是在查詢的時(shí)候索引根本不使用索引,都會(huì)導(dǎo)致性能降低。

有2種類(lèi)型的碎片:

內(nèi)部破碎:由于索引頁(yè)里的數(shù)據(jù)插入或修改操作而發(fā)生,以數(shù)據(jù)作為稀疏矩陣的形式的分布而結(jié)束,這將導(dǎo)致數(shù)據(jù)頁(yè)的增加,從而增加查詢時(shí)間。

外部破碎:由于索引/數(shù)據(jù)頁(yè)的數(shù)據(jù)插入或修改而發(fā)生,以頁(yè)碼分離和在文件系統(tǒng)里不連貫的新的索引頁(yè)的分配而結(jié)束,數(shù)據(jù)庫(kù)服務(wù)器不能利用預(yù)讀操作的優(yōu)點(diǎn),因?yàn)椋合乱粋€(gè)相關(guān)聯(lián)的數(shù)據(jù)頁(yè)不臨近,而且這些相關(guān)連的下面的頁(yè)碼可能在數(shù)據(jù)文件的任何地方。

2、如何知道索引破碎是否已經(jīng)發(fā)生?

在數(shù)據(jù)庫(kù)執(zhí)行下面的SQL語(yǔ)句(下面的語(yǔ)句在SQLserver2005及以后的版本運(yùn)行正常,以你的目標(biāo)數(shù)據(jù)庫(kù)的名字取代AdventureWorks’)

SELECTobject_name(dt.object_id)Tablename,si.name

IndexName,dt.avg_fragmentation_in_percentAS

ExternalFragmentation,dt.avg_page_space_used_in_percentAS

InternalFragmentation

FROM

(

SELECTobject_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent

FROMsys.dm_db_index_physical_stats(db_id('AdventureWorks'),null,null,null,'DETAILED'

)

WHEREindex_id<>0)ASdtINNERJOINsys.indexessiONsi.object_id=dt.object_id

ANDsi.index_id=dt.index_idANDdt.avg_fragmentation_in_percent>10

ANDdt.avg_page_space_used_in_percent<75ORDERBYavg_fragmentation_in_percentDESC

上面的查詢顯示的AdventureWorks’數(shù)據(jù)庫(kù)的索引碎片信息如下:

數(shù)據(jù)庫(kù)控制臺(tái)

分析上面的結(jié)果,你就能發(fā)現(xiàn)在哪里出現(xiàn)了索引碎片,應(yīng)用下面的規(guī)則:

ExternalFragmentation的值>10,預(yù)示對(duì)應(yīng)的索引出現(xiàn)外部碎片。InternalFragmentation的值<75,預(yù)示對(duì)應(yīng)的索引出現(xiàn)內(nèi)部碎片

3、怎樣重新整理索引碎片

有2種方式:

索引重組:執(zhí)行下面的命令:

ALTERINDEXALLONTableNameRECOGNIZE

索引重建:

ALTERINDEXALLONTableNameREBUILDWITH(FILLFACTOR=90,ONLINE=ON)

通過(guò)使用具體索引的名字代替ALL,你能重組或重建單個(gè)的索引。你也可以使用數(shù)據(jù)庫(kù)控制臺(tái)來(lái)重建/重組索引

重建索引

4、什么時(shí)候重組和重建索引?

當(dāng)外部碎片的值在10-15,內(nèi)部碎片的值在60-75,對(duì)于這樣的索引,你應(yīng)該重組索引。否則,你應(yīng)該重建索引。

關(guān)于索引重建的一個(gè)重要的事情是:一旦在一個(gè)特定的表上重建索引,表就會(huì)被鎖定(重組的時(shí)候不會(huì)發(fā)生)。所以,對(duì)于一個(gè)產(chǎn)品數(shù)據(jù)庫(kù)的一個(gè)大的表,因?yàn)樵谝粋€(gè)大表上的索引重建往往需要花費(fèi)數(shù)個(gè)小時(shí),我們不希望這種鎖定。幸運(yùn)的是,在SQL2005有一個(gè)解決方法,你可以在重建一個(gè)表的索引的時(shí)候,把ONLINE選項(xiàng)的值設(shè)為ON,這樣會(huì)使重建索引和表上的數(shù)據(jù)事務(wù)同樣進(jìn)行。

四、實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)結(jié)束語(yǔ)

在數(shù)據(jù)表里的所有適合創(chuàng)建索引的字段上創(chuàng)建索引,這是非常誘惑人的。但是如果你正在從事一個(gè)事務(wù)數(shù)據(jù)庫(kù)工作,在每個(gè)字段上創(chuàng)建索引并不是每次都是需要的。事實(shí)上,在一個(gè)OLTP系統(tǒng)上創(chuàng)建大量的索引可能會(huì)降低數(shù)據(jù)庫(kù)的性能。(因?yàn)楫?dāng)很多操作是更新操作的時(shí)候,更新數(shù)據(jù)意味著更新索引)

一個(gè)首要的規(guī)則建議如下:

如果你在從事一個(gè)事務(wù)性數(shù)據(jù)庫(kù),平均不要在一個(gè)表上創(chuàng)建超過(guò)5個(gè)索引,另外,如果你在從事數(shù)據(jù)倉(cāng)庫(kù),平均最高可在一個(gè)表上創(chuàng)建10個(gè)索引。

【編輯推薦】

  1. 淺談如何在SQL Server中生成腳本
  2. SQL Server 2000中的數(shù)據(jù)同步問(wèn)題
  3. SQL Server 05數(shù)據(jù)庫(kù)被置為“可疑”的解決方法
  4. 詳解SQL Server的版本區(qū)別及選擇
  5. SQL Server即將提升實(shí)時(shí)數(shù)據(jù)功能

【責(zé)任編輯:彭凡 Tel:(010)68576606-8058

責(zé)任編輯:彭凡 來(lái)源: ITPUB
相關(guān)推薦

2010-07-22 17:25:23

2010-07-01 14:18:09

SQL Server數(shù)

2009-07-20 16:40:55

JDBC訪問(wèn)SQL S

2011-03-18 14:54:52

SQL Server索引結(jié)構(gòu)

2011-05-20 10:52:50

SQL Server 索引

2011-06-14 10:43:44

索引

2010-07-19 14:31:14

SQL Server

2010-07-06 17:09:45

SQL Server索

2010-07-15 16:42:32

數(shù)據(jù)庫(kù)引擎

2010-07-08 16:52:31

SQL Server索

2010-07-22 13:31:53

2011-08-16 17:31:24

SQL Server訪問(wèn)速度

2010-09-16 13:42:55

SQL SERVER索

2010-07-07 10:25:00

SQL Server索

2010-07-07 09:47:04

SQL Server索

2009-04-16 17:44:46

性能優(yōu)化擴(kuò)展高性能

2011-08-04 16:20:39

SQLServer數(shù)據(jù)索引碎片DBCC ShowCo

2010-07-19 14:37:20

SQL Server

2010-07-08 11:15:37

SQL Server數(shù)

2011-04-02 13:37:05

SQL Server 索引視圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

999精品在线视频| 日本特黄a级片| 四虎国产精品永远| 日韩电影网1区2区| 欧美成年人网站| 国产精品麻豆入口| 国产一区影院| 亚洲高清免费视频| 亚洲成人在线视频网站| 亚洲大尺度视频| 日韩精品电影一区亚洲| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品影院在线观看| 免费又黄又爽又色的视频| 在线看成人短视频| 欧美一级午夜免费电影| 青青在线视频免费| 福利写真视频网站在线| 国产精品另类一区| 美日韩精品免费| 成人av无码一区二区三区| 日韩不卡一区二区三区| 久久久欧美一区二区| 国产一区二区三区视频播放| 久草在线综合| 日韩欧美专区在线| av中文字幕网址| 3d性欧美动漫精品xxxx软件| 亚洲成人福利片| 久久综合亚洲精品| 日本美女在线中文版| 久久久久久久久久久99999| 91亚洲va在线va天堂va国| 无码一区二区三区| 亚洲一区中文| 久久久久久有精品国产| 国产97免费视频| 91一区二区| 一区二区三区www| 四虎影成人精品a片| 黄色欧美在线| 亚洲福利在线视频| 伊人av在线播放| www一区二区三区| 538在线一区二区精品国产| www.天天射.com| 日韩高清成人| 色噜噜狠狠色综合中国| av免费播放网址| 免费高潮视频95在线观看网站| 亚洲综合一区二区三区| 国产精品自拍合集| 深夜国产在线播放| 亚洲一区二区三区不卡国产欧美| 国产精品8888| 91精品久久| 亚洲精品免费看| 黑人巨大国产9丨视频| 好了av在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲欧洲一区二区福利| 日韩在线资源| 亚洲欧洲制服丝袜| 日本丰满少妇黄大片在线观看| 黄色网址在线免费| 亚洲一区二区偷拍精品| 18禁网站免费无遮挡无码中文| av影片在线| 精品久久久久久久久久| 粉嫩虎白女毛片人体| 暖暖成人免费视频| 欧美亚洲国产一区二区三区va| 亚洲36d大奶网| 国产一区二区| 亚洲福利在线看| 少妇av片在线观看| 国产高清欧美| 久久久免费在线观看| 在线免费黄色av| 久久久久久夜| 成人黄色免费网站在线观看| 亚洲国产精品久久久久久6q| av高清久久久| 日韩中文不卡| 26uuu亚洲电影在线观看| 午夜电影久久久| 国产无套粉嫩白浆内谢的出处| 日韩综合av| 欧美zozo另类异族| 谁有免费的黄色网址| 午夜精品一区二区三区国产| 午夜精品久久久久久99热| 国产字幕在线观看| 国产高清成人在线| 欧美日韩精品中文字幕一区二区| 久久久久久久久免费视频| 亚洲国产另类精品专区| 另类小说色综合| www.国产精品一区| 深夜福利国产精品| 日韩精品――中文字幕| 免费不卡在线观看| 国产在线一区二区三区四区| 69久久久久| 午夜不卡av免费| 中文字幕视频三区| 亚洲欧洲美洲国产香蕉| 欧美成人小视频| 69av视频在线观看| 99精品欧美一区二区三区小说| 丝袜足脚交91精品| av资源在线播放| 欧美精品久久99久久在免费线 | 色偷偷88888欧美精品久久久| 久久一区二区三| 美女精品一区二区| 欧美不卡三区| 国产蜜臀在线| 欧美一级电影网站| 99久久99久久精品免费看小说.| 国产中文一区| 91美女片黄在线观| 国产福利小视频在线观看| 亚洲国产精品视频| 杨幂一区二区国产精品| 久久在线免费| 国产成人综合一区二区三区| 天天爽夜夜爽夜夜爽| 亚洲精品五月天| 国产精品自拍视频在线| 欧美日韩国产高清电影| 4444欧美成人kkkk| 天天干视频在线| 亚洲一区二区美女| 欧美xxxx黑人| 中文字幕一区二区av| 国产在线拍揄自揄视频不卡99| 国产日本在线视频| 91极品视觉盛宴| 香蕉视频黄色在线观看| av成人国产| 国产一区免费观看| 男女在线观看视频| 日韩精品一区二区三区在线观看| 国产性生活大片| 狠狠色丁香久久婷婷综合_中| 亚洲日本精品| 青青草国产一区二区三区| 中文字幕精品视频| 国产一区二区三区视频免费观看| 国产精品色眯眯| 久久久久久久久久久久久久久国产| 日韩理论片av| 国产精品99导航| 中文日本在线观看| 欧美乱熟臀69xxxxxx| 日本爱爱小视频| 国产另类ts人妖一区二区| www.-级毛片线天内射视视| 国产精品亚洲欧美一级在线 | 娇小11一12╳yⅹ╳毛片| 久久99最新地址| 亚洲第一页在线视频| 亚洲精品tv| 欧美疯狂做受xxxx高潮| 女人18毛片水真多18精品| 五月天激情综合| 日本黄色特级片| 免费观看在线色综合| 99热这里只有精品7| gogo久久日韩裸体艺术| 97色在线观看| 大片免费播放在线视频| 在线不卡免费欧美| 国产亚洲欧美久久久久| 91蜜桃网址入口| 污污动漫在线观看| 欧美黄免费看| 鲁鲁视频www一区二区| 成人日韩av| 欧美人成在线视频| 国内av一区二区三区| 欧美精品乱码久久久久久按摩| 成年人av电影| 久久亚洲捆绑美女| 手机在线国产视频| 99人久久精品视频最新地址| 色综合666| 成人性生交大片免费看96| 国产精品wwwwww| 蜜乳av一区| 一本色道久久综合亚洲精品小说 | 久久久久久久久久久97| 91麻豆swag| 一本色道久久亚洲综合精品蜜桃 | 草民午夜欧美限制a级福利片| 国产香蕉在线观看| 在线影视一区二区三区| 九九热这里有精品视频| 99re成人在线| 亚洲一区二区三区四区精品| 久久福利影视| www.国产在线视频| 欧美大片aaaa| 免费av在线一区二区| 国产欧美视频在线| 国产91精品久久久久久| 三级资源在线| 色婷婷综合久久久久| 欧洲天堂在线观看| 日韩久久久精品| 亚洲天堂网视频| 欧美日韩综合视频| 青青操国产视频| 国产精品传媒在线| 亚洲国产av一区| 91视频国产资源| 国产伦精品一区二区三区88av| 久久99蜜桃精品| 牛夜精品久久久久久久| 香蕉久久国产| 久久久一本二本三本| 亚洲私拍自拍| 中文字幕日韩精品无码内射| 久久国产亚洲| 亚洲成人自拍视频| 国产成人短视频在线观看| 精品综合在线| 久久久亚洲欧洲日产| 99久久国产免费免费| 欧美亚洲福利| 国产日韩av高清| 日韩免费小视频| 国产成人亚洲综合青青| 97se综合| 欧美与黑人午夜性猛交久久久| av资源中文在线天堂| 欧美精品videosex牲欧美| 亚洲奶水xxxx哺乳期| 蜜臀久久99精品久久久无需会员| 在线免费观看黄色网址| 中文字幕欧美日韩va免费视频| 精品无人乱码| 亚洲小视频在线| 韩国福利在线| 在线观看日韩欧美| 91caoporm在线视频| 日韩在线观看网站| 欧美一区二区三区在线观看免费| 最近中文字幕2019免费| 蜜芽在线免费观看| 九九久久精品一区| 久久大胆人体| 91干在线观看| 久久精品女人天堂av免费观看| 国产福利视频一区二区| 电影一区二区| 亚洲综合一区二区不卡| 日日夜夜精品视频| 国产精品乱码视频| 亚洲精品中文字幕99999| 日韩中文不卡| 亚洲欧洲中文字幕| 国产乱淫av片杨贵妃| 亚洲欧美成人| 91制片厂毛片| 国产一区视频导航| 国模私拍在线观看| 久久精品欧美一区二区三区不卡| 亚洲第一综合网| 亚洲日本韩国一区| 国产在线一区视频| 一本一道久久a久久精品| 中文字幕777| 日韩欧美在线观看一区二区三区| 人人妻人人澡人人爽精品日本| 亚洲精品小视频| 麻豆影视国产在线观看| 久久久久久亚洲精品不卡| 免费观看成人性生生活片 | 欧美精品国产白浆久久久久| 日本一区二区三不卡| 一区二区三区午夜视频| 国产精品无码av在线播放| 免费成人小视频| 日韩精品一区二区三区高清免费| 欧美国产日本韩| 日韩xxx高潮hd| 欧美日韩国产天堂| 天堂在线观看av| 色妞久久福利网| 色在线中文字幕| 成人日韩av在线| 欧美电影免费网站| 一区二区三区日韩视频| 国产亚洲福利| 少妇欧美激情一区二区三区| 久久久99免费| 精品小视频在线观看| 欧美日韩一区成人| 欧美性孕妇孕交| 久久国产精品久久精品| 日韩av中字| 国产精品乱子乱xxxx| 欧美韩日一区| 狠狠爱免费视频| 国产精品456露脸| 国产视频三区四区| 欧美性极品少妇精品网站| 国产高清在线免费| 日韩在线观看免费全| 成人欧美大片| 精品无码久久久久久久动漫| 一区二区三区在线观看免费| www.xxx亚洲| 91亚洲午夜精品久久久久久| 免费一级肉体全黄毛片| 91精品国产91综合久久蜜臀| 国产露出视频在线观看| 98视频在线噜噜噜国产| 综合激情五月婷婷| 中文字幕一区二区三区乱码| 日韩中文字幕区一区有砖一区| 影音先锋黄色资源| 一区二区三区日韩精品| 国产精品一区二区av白丝下载 | 麻豆精品网站| 成人在线电影网站| 亚洲电影第三页| 亚洲av无码乱码在线观看性色| 久久久极品av| 欧美激情福利| 亚洲欧美日本国产有色| 男男成人高潮片免费网站| 69视频在线观看免费| 色偷偷一区二区三区| 欧美成人片在线| 欧美在线亚洲一区| 亚洲人和日本人hd| 国产中文字幕免费观看| 久久网这里都是精品| 久久精品国产成人av| 日韩高清有码在线| 丝袜老师在线| 久久综合给合久久狠狠色| 国产乱码精品| 性欧美13一14内谢| 一本高清dvd不卡在线观看| 欧美午夜黄色| 日本欧美精品在线| 成人在线免费小视频| 少妇一级淫免费播放| 亚洲欧洲日韩在线| 国产人妻精品一区二区三| 九九热精品在线| 91麻豆精品国产91久久久久推荐资源| 成人污网站在线观看| 国产91在线看| 在线天堂中文字幕| 亚洲三级 欧美三级| 国产成人亚洲一区二区三区| 一本久久a久久精品vr综合| 国产乱码精品一区二区三| 日本少妇性高潮| 国产亚洲欧洲黄色| av日韩一区| av无码久久久久久不卡网站| av中文字幕不卡| 一级黄色av片| 久久中文久久字幕| 久久精品福利| 中文字幕日韩电影| 午夜性色福利影院| 国产精品精品久久久久久| 日韩一区三区| 少妇献身老头系列| 欧美色播在线播放| av免费观看一区二区| 99re在线视频上| 亚洲一区成人| 国产三级aaa| 精品成人一区二区三区| 经典三级一区二区| 51xx午夜影福利| xf在线a精品一区二区视频网站| 中文字幕乱码视频| 欧美激情videoshd| 美女精品一区最新中文字幕一区二区三区| 成人性生生活性生交12| 亚洲综合一二区| 国产一级免费在线观看| 91久久精品国产91久久性色tv | 欧美激情资源网| 国精产品一品二品国精品69xx| 国产精品电影久久久久电影网| 综合久久精品| 亚洲自拍偷拍图| 精品国免费一区二区三区| 电影在线观看一区二区| 精品久久久久久无码中文野结衣|