自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

索引存儲(chǔ)關(guān)系到數(shù)據(jù)庫的運(yùn)行效率

數(shù)據(jù)庫
索引就好比是一本書的目錄部分,索引的出現(xiàn)大大簡(jiǎn)便了數(shù)據(jù)庫管理工作,同時(shí)也加快了數(shù)據(jù)庫的操作,本文就為大家介紹索引存儲(chǔ)關(guān)系到數(shù)據(jù)庫的運(yùn)行效率的知識(shí),希望對(duì)大家能夠有所幫助。

導(dǎo)讀:數(shù)據(jù)庫中,索引與表一樣,不僅需要在數(shù)據(jù)字典中保存索引的定義,還需要在表空間中為他分配實(shí)際的存儲(chǔ)空間,并為其設(shè)置存儲(chǔ)參數(shù)。數(shù)據(jù)庫管理員若能夠給索引分配合理的表空間,并且設(shè)置合適的參數(shù)的話,則可以在一定程度上提高數(shù)據(jù)庫的運(yùn)行效率。

  雖然說,在建立索引的過程中,不為其指定具體的存儲(chǔ)參數(shù)也是可行的。索引會(huì)自動(dòng)繼承所處表空間的默認(rèn)存儲(chǔ)參數(shù)。不過,在數(shù)據(jù)庫設(shè)計(jì)過程中,筆者是不建議這么做。因?yàn)檫@不能夠發(fā)揮Oracle數(shù)據(jù)庫高性能的優(yōu)勢(shì)。特別是在一些比較復(fù)雜的數(shù)據(jù)庫設(shè)計(jì)中,一定要根據(jù)實(shí)際情況,合理的索引存儲(chǔ)進(jìn)行配置,以達(dá)到數(shù)據(jù)庫性能優(yōu)化的目的。

  具體的說,數(shù)據(jù)庫管理員可以從如下幾個(gè)方面入手,做好索引的存儲(chǔ)管理。

  第一步:為索引指定存儲(chǔ)的表空間。

  當(dāng)數(shù)據(jù)庫管理員為表或者字段建立索引的時(shí)候,可以選擇是否指定具體的表空間。若沒有具體指定的話,則數(shù)據(jù)庫會(huì)自動(dòng)在用戶的默認(rèn)表空間創(chuàng)建索引段。這里初學(xué)者要注意,索引的存儲(chǔ)默認(rèn)表空間不是跟著其所對(duì)應(yīng)的數(shù)據(jù)庫對(duì)象走,而是跟著用戶走。也就是說,現(xiàn)在有一張員工信息表,要為其建立一個(gè)索引。并不是說這張員工信息表屬于哪個(gè)表空間,這對(duì)應(yīng)的索引默認(rèn)也是哪個(gè)表空間。而這個(gè)索引的默認(rèn)表空間是建立這個(gè)索引的用戶的默認(rèn)表空間。

  索引是對(duì)表中字段進(jìn)行排序的一種手段。在數(shù)據(jù)庫管理員創(chuàng)建索引的時(shí)候,Oracle首先對(duì)建立索引的字段進(jìn)行排序,然后將排序后的字段值和相應(yīng)記錄的Rowid存儲(chǔ)在索引段中。而這個(gè)數(shù)據(jù)存儲(chǔ),就需要用到一定的存儲(chǔ)空間,即我們所為的表空間。若一張表中發(fā)索引比較復(fù)雜,則其索引本身的空間可能比表中數(shù)據(jù)所占用的空間還要大??梢姡瑢?duì)于索引的表空間進(jìn)行管理的必要性。

  在索引的建立過程中,對(duì)于其所存儲(chǔ)的表空間沒有特殊的限制。如不需要像其他數(shù)據(jù)庫一樣,要求把索引與表建立在同一個(gè)表空間或者磁盤上。數(shù)據(jù)庫管理員可以根據(jù)企業(yè)自身的需求,合理的為索引分配存儲(chǔ)空間。

  不過,筆者認(rèn)為,最好能夠把表與索引保存在不同的表空間中。因?yàn)镺racle數(shù)據(jù)庫能夠并行讀取不同磁盤中的數(shù)據(jù),從而達(dá)減少輸入輸入沖突的目的。而現(xiàn)在把索引與其對(duì)應(yīng)的表存放在不同硬盤上的不同表空間中,就可以提高查詢的效率。往往在數(shù)據(jù)庫性能優(yōu)化中,調(diào)整索引與基礎(chǔ)表的表空間位置,這也是我們數(shù)據(jù)庫管理員常用的手段之一。故,筆者建議,最好能夠?yàn)樗饕⒁粋€(gè)獨(dú)立的表空間,跟其對(duì)應(yīng)的表分開存放。若數(shù)據(jù)庫服務(wù)器有多個(gè)磁盤的話,可以考慮分別存放在不同的磁盤上。

  另外,若把索引跟對(duì)應(yīng)的表存儲(chǔ)在不同的表空間中的話,在數(shù)據(jù)庫備份的時(shí)候,要稍加注意。因?yàn)镺racle數(shù)據(jù)庫允許數(shù)據(jù)庫管理員以表空間為單位,對(duì)數(shù)據(jù)庫進(jìn)行備份與還原。此時(shí),若把它們存儲(chǔ)在不同的表空間的話,則對(duì)數(shù)據(jù)表所在的表空間進(jìn)行備份的時(shí)候,就不會(huì)備份索引信息。在還原的時(shí)候,也不會(huì)自動(dòng)把表空間對(duì)應(yīng)的索引進(jìn)行還原。所以,若把索引與表存放在同一個(gè)表空間中,則對(duì)于數(shù)據(jù)庫備份來說,要方便一點(diǎn)。但是,這畢竟是次要的。比起數(shù)據(jù)庫的性能來說,這點(diǎn)困難還是可以克服的。

  第二步:為提高更新性能合理配置空閑空間管理方式。

  索引不僅跟數(shù)據(jù)庫的查詢效率息息相關(guān),而且,還跟數(shù)據(jù)庫的更新有重要的影響。因?yàn)橐獙?duì)數(shù)據(jù)進(jìn)行更新,往往伴隨著對(duì)數(shù)據(jù)進(jìn)行查詢。所以,合理設(shè)置索引空閑空間的處理方式,可以有效的提高數(shù)據(jù)庫的更新性能。

  數(shù)據(jù)庫創(chuàng)建索引的時(shí)候,主要是通過Pctfree參數(shù)來指定為更新操作而預(yù)留的空閑空間百分比。如果數(shù)據(jù)庫管理員把這個(gè)參數(shù)設(shè)置為80%。就表示數(shù)據(jù)塊中的數(shù)據(jù)所占用的空間少于總空閑空間的80% 時(shí),可以直接利用這個(gè)空閑空間來存儲(chǔ)需要更新的數(shù)據(jù)。當(dāng)現(xiàn)有數(shù)據(jù)塊的數(shù)據(jù)超過了這個(gè)比例后,則發(fā)生更新動(dòng)作時(shí),就需要為其分配新的數(shù)據(jù)塊了。

  可見,當(dāng)頻繁的為更新作業(yè)分配數(shù)據(jù)塊的時(shí)候,會(huì)極大的影響數(shù)據(jù)更新的效率;同時(shí),因?yàn)樵黾有碌臄?shù)據(jù)塊,還會(huì)耗用服務(wù)器的硬件資源,如內(nèi)存等等。這無疑會(huì)影響除了更新作業(yè)之外的其他作業(yè),會(huì)對(duì)整個(gè)數(shù)據(jù)庫的運(yùn)行性能產(chǎn)生不利的影響。

  所以,在創(chuàng)建索引的時(shí)候,數(shù)據(jù)庫管理員要合理的配置這個(gè)參數(shù)。具體什么參數(shù)是合適的,沒有一個(gè)嚴(yán)格的標(biāo)準(zhǔn)。這主要是根據(jù)索引對(duì)應(yīng)的表,是否需要進(jìn)行頻繁的更新來決定的。當(dāng)這個(gè)索引所對(duì)應(yīng)的表,可能要進(jìn)行頻繁的變更,則最好能夠?yàn)槠渲付ū容^大的Pctfree參數(shù),以提高數(shù)據(jù)庫的更新性能。如對(duì)于ERP系統(tǒng)中的訂單變更表或者價(jià)格信息表,起碼要把這個(gè)參數(shù)指定為80%,或者更高。相反,對(duì)于系統(tǒng)中不怎么進(jìn)行更新的產(chǎn)品基本信息表,則可以把這個(gè)參數(shù)設(shè)置為50%,或者更低。

  不過,數(shù)據(jù)庫管理員需要注意,并不是說Pctfree參數(shù)設(shè)置的越大越好。這主要是因?yàn)樘煜聸]有白吃的午餐。Pctfree設(shè)置的比較大,并不是說是百利而無一害的。把Pctfree參數(shù)設(shè)置的偏大,是以犧牲存儲(chǔ)空間未代價(jià)的。所以,對(duì)于一些更新很好的表,在為其建立索引的時(shí)候,沒有必要為其指定比較大的Pctfree參數(shù)。我們也可以利用Pctused參數(shù)來進(jìn)行類似的設(shè)置。這個(gè)參數(shù)的用途跟Pctfree大同小異,也是對(duì)索引空閑空間管理的一種方式。

  另外對(duì)于數(shù)據(jù)庫表更新來說,還有一些索引管理手段,可以提高數(shù)據(jù)庫的更新性能。

如在企業(yè)導(dǎo)入基礎(chǔ)數(shù)據(jù)的時(shí)候,若某需要在某張表中插入大量數(shù)據(jù),則此時(shí)最好能夠把這張表中的索引先取消掉。因?yàn)楦鶕?jù)索引的工作機(jī)制,每在數(shù)據(jù)庫表中插入一條記錄的時(shí)候,數(shù)據(jù)庫都要根據(jù)插入的數(shù)據(jù),更改索引。若插入的記入比較多,而這張表的索引也比較復(fù)雜的話,則數(shù)據(jù)更新的效率就會(huì)比較慢。為了提高數(shù)據(jù)表導(dǎo)入的效率,最好能夠在這個(gè)工作之前先把索引都禁用掉。等到導(dǎo)入完畢后,再重新啟用索引。

  第三步:為索引指定區(qū)分配方式。

  在索引創(chuàng)建過程中,雖然可以通過Storage語句來指定存儲(chǔ)空間的區(qū)分配方式。但是,筆者覺得這個(gè)沒有多大的實(shí)際意義。一方面起指定的參數(shù)比較少,只能夠指定創(chuàng)建索引時(shí)分配的第一個(gè)區(qū)的大小。另一方面,這對(duì)于提高數(shù)據(jù)庫的性能、索引的管理效率,沒有多大的效果。

  所以,筆者在創(chuàng)建索引的過程中,基本上是不用Storage語句來指定其存儲(chǔ)空間的區(qū)分配方式?;蛟S其他數(shù)據(jù)庫管理員有不同的見解,大家可以討論討論。

  總之,筆者認(rèn)為對(duì)索引進(jìn)行優(yōu)化的時(shí)候,主要是涉及到前面兩個(gè)方面。一是要把索引跟其對(duì)應(yīng)的表存儲(chǔ)在不同硬盤的不同表空間上。二是若索引所對(duì)應(yīng)的表可能涉及到比較頻繁的更新的話,則可以考慮把Pctfree參數(shù)設(shè)置的高一點(diǎn)。

【編輯推薦】

  1. 由淺入深講解MySQL數(shù)據(jù)庫索引的選擇性
  2. Oracle數(shù)據(jù)庫索引創(chuàng)建要做到三個(gè)適當(dāng)
  3. SQL Server數(shù)據(jù)庫索引的正確選擇方案描述
  4. 數(shù)據(jù)庫索引,你該了解的幾件事

 

責(zé)任編輯:迎迎 來源: IT專家網(wǎng)
相關(guān)推薦

2011-03-01 16:30:55

Oracle

2018-05-22 08:34:41

5G通信互聯(lián)網(wǎng)

2014-02-21 17:37:48

2010-04-07 17:45:22

Oracle位圖索引

2011-04-11 16:50:13

Oracle數(shù)據(jù)庫索引

2020-04-25 20:01:15

數(shù)字貨幣微信支付寶

2009-02-01 13:33:13

Oracle數(shù)據(jù)庫配置

2009-11-02 18:07:58

Oracle數(shù)據(jù)庫

2009-03-06 08:46:14

索引Oracle

2023-08-28 10:42:22

數(shù)據(jù)庫Oracle

2017-05-18 16:00:55

2018-07-30 10:16:19

存儲(chǔ)關(guān)聯(lián)數(shù)據(jù)

2011-08-29 10:55:03

SQL Server分頁存儲(chǔ)過程優(yōu)化效率分

2010-10-27 14:15:44

Oracle數(shù)據(jù)庫效率

2011-03-16 08:54:45

Oracle數(shù)據(jù)庫索引

2009-07-07 17:43:33

JSP系統(tǒng)

2011-10-11 17:07:12

數(shù)據(jù)庫Internet文件數(shù)據(jù)庫

2011-05-18 09:39:19

Oracle數(shù)據(jù)庫性能優(yōu)化

2017-02-08 11:00:50

數(shù)據(jù)庫索引類型

2010-05-21 12:15:52

點(diǎn)贊
收藏

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