真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談索引系列之本地索引與全局索引

分區(qū)表按照類型可以分為范圍分區(qū)(Range)、列表分區(qū)(List)以及哈希分區(qū)(Hash),表被分區(qū)后,其對應的索引也會與普通表的索引有所不同。

成都創(chuàng)新互聯(lián)公司于2013年開始,先為鄂托克前等服務建站,鄂托克前等地企業(yè),進行企業(yè)商務咨詢服務。為鄂托克前企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

基本概念   

    對于分區(qū)表上的索引可以分為兩類:本地索引和全局索引。其中全局索引又可以分為分區(qū)索引和未分區(qū)索引,而本地索引必須為分區(qū)索引。因此若某個索引未分區(qū),可以直接斷定其為全局索引;若已分區(qū),在根據(jù)具體情況進行判斷。官方截圖如下:
     淺談索引系列之本地索引與全局索引
        本文重點說明Local Partitioned Index(為配合上圖此處才這么寫,可以簡寫為Local Index,因為Local Index一定是分區(qū)的)和Global Partitioned Index的基本概念原理以及其對應使用的場景。
        本地索引的分區(qū)機制與表的分區(qū)機制一樣:其分區(qū)鍵與分區(qū)表的分區(qū)鍵相同,同樣分區(qū)個數(shù)與基表分區(qū)個數(shù)也相同,因此本地索引分區(qū)情況與基表一模一樣。
        全局分區(qū)索引分區(qū)鍵以及分區(qū)個數(shù)與基表可能不同,另外全局分區(qū)索引必須為前綴索引,即其索引分區(qū)鍵必須為索引的前幾列。
       用文字描述比較枯燥,難于理解,下圖比較形象的說明了兩者以及兩者的區(qū)別。
          Local Index                                                                               global Partition Index
       淺談索引系列之本地索引與全局索引            淺談索引系列之本地索引與全局索引

應用場景

          那么本地索引和全局分區(qū)索引或全局索引究竟適用于什么場景呢?,下面以本地索引和全局索引(非分區(qū))為例進行說明:
1. 新建測試以ID為分區(qū)鍵的范圍分區(qū)表T_PARTITION,具體表結(jié)構(gòu)如下:
         desc t_partition;
         Name                                      Null?    Type
          ----------------------------------------- -------- ----------------------------
         ID                                                  NUMBER
         DATA                                              VARCHAR2(100)

       T_PARTITION以列ID間隔100分別創(chuàng)建了10個分區(qū),如下

點擊(此處)折疊或打開

  1. SQL> SELECT count(*) FROM user_tab_partitions WHERE table_name='T_PARTITION';
      COUNT(*)
    ----------
          1000
      T_PARTITION的數(shù)據(jù)量情況如下:

點擊(此處)折疊或打開

  1. SQL> SELECT count(*) FROM t_partition;

  2.   COUNT(*)
  3. ----------
  4.   11030039
 2.在DATA列分別創(chuàng)建一個本地索引一個全局索引。
         本地索引: 

點擊(此處)折疊或打開

  1. create index ind_l_data on t_partition(data) local;
  2. Index created.
        創(chuàng)建完成后,通過以下語句檢查索引的具體情況,通過輸出可以看到:如同前面說的一樣本地索引與基表分區(qū)情況一樣。

點擊(此處)折疊或打開

  1. SELECT table_name,locality,alignment FROM user_part_indexes WHERE index_name='IND_L_DATA';
  2. TABLE_NAME          LOCALITY    ALIGNMENT
  3. ----------------    ----------- ------------
  4. T_PARTITION         LOCAL       NON_PREFIXED

  5. SELECT count(*) FROM user_ind_partitions t WHERE index_name='IND_L_DATA';
      COUNT(*)
    ----------
          1000
          全局分區(qū)索引:

點擊(此處)折疊或打開

  1. drop index ind_l_data;
  2. create index ind_g_data on test_partition(data);
  3. Index created.
  3.比較本地索引以及全局索引
      分為兩種情況比較,一種情況查詢謂詞中帶有基表的分區(qū)鍵,另外一種不帶基表分區(qū)鍵,先看條件不帶分區(qū)鍵的情況:
     本地索引:
      淺談索引系列之本地索引與全局索引
    全局索引:
     淺談索引系列之本地索引與全局索引
    通過上面兩個圖輸出的統(tǒng)計信息,可以看到邏輯讀(consistent gets)全局索引明顯要比本地索引邏輯讀少,全局索引的效率更高。
    下面再觀察一下謂詞中帶有分區(qū)鍵的情況:
     本地索引:
     淺談索引系列之本地索引與全局索引
    全局索引:
    淺談索引系列之本地索引與全局索引
    相差不大,相對來說本地索引性能比全局索引性能更好一下。
   全局索引和本地索引各自有各自的特點,使用場景不同,DBA應根據(jù)具體的業(yè)務情況創(chuàng)建相應的索引,另外從Oracle官方可以找到關(guān)于本地索引和全局索引的一點點建議:
   淺談索引系列之本地索引與全局索引
    淺談索引系列之本地索引與全局索引   
   由此推斷:全局索引多用于OLTP系統(tǒng),而本地索引都用于OLAP系統(tǒng)。
 

維護注意事項

    1.本地索引可以為前綴索引和非前綴索引,全局索引必須為前綴索引。如下我們?nèi)炙饕齽?chuàng)建在data列,通過id列分區(qū),系統(tǒng)報錯GLOBAL partitioned index must be prefixed.
   淺談索引系列之本地索引與全局索引
   2.只要查詢條件中包含了基表的分區(qū)鍵,非前綴、前綴索引都支持分區(qū)消除。
   
    3.本地索引由Oracle自動管理,當有添加、刪除、合并分區(qū)、截斷分區(qū)數(shù)據(jù)等操作,本地索引自動更新,但全局索引不會自動更新,一旦有上述操作請記得添加update global indexes語句,若不添加索引就會變得不可用。
    本地索引:
     淺談索引系列之本地索引與全局索引
    全局索引:
      淺談索引系列之本地索引與全局索引
       可以看到若不添加update global indexes,全局索引狀態(tài)會變?yōu)椴豢捎茫虼嗽谌粘>S護全局索引過程中請注意此問題。
    
    
      

新聞標題:淺談索引系列之本地索引與全局索引
網(wǎng)頁鏈接:http://weahome.cn/article/jdpjge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部