新聞中心
以下的文章主要描述的是SQL Server數(shù)據(jù)庫(kù)選擇索引之查詢(xún)VS 的修改性能,在實(shí)際操作中I/O是決定查詢(xún)性能的最為主要的因素。數(shù)據(jù)庫(kù)設(shè)計(jì)者的挑戰(zhàn)是構(gòu)建物理數(shù)據(jù)模型來(lái)提供高效的數(shù)據(jù)訪問(wèn)。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)綏棱,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18980820575
在數(shù)據(jù)庫(kù)表中創(chuàng)建索引允許SQL Server數(shù)據(jù)庫(kù)降低I/O數(shù)來(lái)訪問(wèn)數(shù)據(jù)。在邏輯和物理模型階段定義有用的索引是關(guān)鍵。
SQL Server優(yōu)化器嚴(yán)重依賴(lài)于索引鍵值的分布和索引密度來(lái)決定查詢(xún)使用哪一個(gè)索引。SQL Server數(shù)據(jù)庫(kù)優(yōu)化器能使用查詢(xún)中的多個(gè)索引(通過(guò)索引交叉)降低I/O的數(shù)量來(lái)檢索信息。若缺少索引,優(yōu)化器執(zhí)行表掃描,從IO角度來(lái)講,它花費(fèi)的代價(jià)更高。
盡管索引提供了一種快速訪問(wèn)數(shù)據(jù)的途徑,但它們減緩了數(shù)據(jù)修改語(yǔ)句,因?yàn)楫?dāng)插入、修改和刪除時(shí),需要額外的負(fù)擔(dān)來(lái)維護(hù)索引。
在決策支持系統(tǒng)中(DSS),定義更多的索引能幫助你的查詢(xún)并且不會(huì)帶來(lái)太多的性能問(wèn)題,因?yàn)檫@些數(shù)據(jù)相對(duì)來(lái)講是靜態(tài)的并且不會(huì)頻繁修改。你典型地會(huì)加載數(shù)據(jù)、創(chuàng)建索引。只要你需要索引來(lái)支持用戶(hù)查詢(xún),并且它們能獲得相當(dāng)不錯(cuò)的響應(yīng)時(shí)間,太多的索引的缺點(diǎn)只是不被使用的索引所浪費(fèi)的空間。
另一方面,在OLTP環(huán)境下,太多的索引可能導(dǎo)致相當(dāng)大的性能下降,特別是,假如一個(gè)表中索引數(shù)量超過(guò)4或5個(gè)。仔細(xì)想下,每個(gè)單行插入至少是一個(gè)數(shù)據(jù)頁(yè)的寫(xiě)或者是為表中的每個(gè)索引所進(jìn)行的更多索引頁(yè)寫(xiě)(依賴(lài)于頁(yè)分裂是否發(fā)生)。
若有8個(gè)非聚集索引,單行插入最少將有9次寫(xiě)數(shù)據(jù)庫(kù),所以,對(duì)OLTP環(huán)境,你必須創(chuàng)建盡可能少的索引——典型地需要支持修改和刪除操作的索引和你的關(guān)鍵查詢(xún),以及強(qiáng)制你唯一性約束的索引。
所以在理想世界中,自然的解決方法是,在DSS環(huán)境下創(chuàng)建許多索引,在OLTP環(huán)境下創(chuàng)建少許索引。不幸的是,在真實(shí)世界中,你典型地需要支持DSS和OLTP。你如何來(lái)解決兩種環(huán)境下的對(duì)索引要求的競(jìng)爭(zhēng)?為了滿足DSS和OLTP應(yīng)用的索引需求需要一些平衡技術(shù)。
其中一種方法是分別創(chuàng)建兩個(gè)數(shù)據(jù)庫(kù)——一個(gè)為DSS應(yīng)用另外一個(gè)為OLTP。明顯,這種方法需要一些方法來(lái)保持?jǐn)?shù)據(jù)庫(kù)的同步。這種方法選擇依靠如何更新***的DSS數(shù)據(jù)庫(kù)。假如你更新的時(shí)間總是滯后的,你可以考慮使用dump-and-load機(jī)制,比如Log Shipping 或者周期性地?cái)?shù)據(jù)庫(kù)存儲(chǔ)。如果你的DSS系統(tǒng)要求up-to-the -minute 并發(fā),你可能會(huì)考慮使用replication技術(shù)。
另外一種選擇是在日常工作中只為OLTP提供要求的索引。在忙的時(shí)間創(chuàng)建DSS查詢(xún)和報(bào)表需要的索引。當(dāng)DSS報(bào)表完成后,刪除這些額外的報(bào)表。注意這種方法假定創(chuàng)建額外的索引需要的時(shí)間可以用加速DSS查詢(xún)所獲得時(shí)間得到補(bǔ)償。
所以,小心選擇索引以在數(shù)據(jù)搜索和數(shù)據(jù)修改性能之間提供一個(gè)平衡。應(yīng)用的環(huán)境通常決定著索引的選擇。例如,如果應(yīng)用主要是OLTP類(lèi)型,創(chuàng)建太多的索引可能會(huì)影響系統(tǒng)的性能。另一方面,應(yīng)用可能是一個(gè)DSS類(lèi)型的,在這種情況下,可以創(chuàng)建多一些的索引。
以上的相關(guān)內(nèi)容就是對(duì)SQL Server數(shù)據(jù)庫(kù)選擇索引之查詢(xún)VS 修改性能的介紹,望你能有所收獲。
上述的相關(guān)內(nèi)容就是對(duì)SQL Server數(shù)據(jù)庫(kù)選擇索引之查詢(xún)VS 修改性能的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
【編輯推薦】
- SQL Server數(shù)據(jù)庫(kù)中的9簡(jiǎn)單示例
- 實(shí)現(xiàn)SQL Server數(shù)據(jù)備份可用觸發(fā)器
- SQL Server磁帶備份設(shè)備的性能優(yōu)化過(guò)程
- SQL Server 2000數(shù)據(jù)庫(kù)備份和還原的示例
- SQL Server 2005商業(yè)智能功能淺析
網(wǎng)站標(biāo)題:SQLServer數(shù)據(jù)庫(kù)選擇索引之查詢(xún)VS的修改性能
鏈接URL:http://www.fisionsoft.com.cn/article/cocgdpi.html


咨詢(xún)
建站咨詢(xún)
