<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] # 二級索引 ## 本地索引 分區表的本地索引和非分區表的索引類似,索引的數據結構還是和主表的數據結構保持一對一的關系,但由于主表已經做了分區,主表的“每一個分區”都會有自己單獨的索引數據結構。對每一個索引數據結構來說,里面的鍵(Key)只映射到自己分區中的主表數據,不會映射到其它分區中的主表,因此這種索引被稱為本地索引。 從另一個角度來看,這種模式下索引的數據結構也做了分區處理,因此有時也被稱為本地分區索引(Local Partitioned Index)。本地索引的結構如下圖所示: ![](https://img.kancloud.cn/b4/cb/b4cb171a267e08d6a70d15c2726baf52_884x598.png) 在上圖中,employee 表按照 emp\_id 做了范圍分區,同時也在 emp\_name 上創建了本地索引。 ## 全局索引 和分區表的本地索引相比,分區表的全局索引不再和主表的分區保持一對一的關系,而是將所有主表分區的數據合成一個整體來看,索引中的一個鍵可能會映射到多個主表分區中的數據(當索引鍵有重復值時)。更進一步,全局索引可以定義自己獨立的數據分布模式,既可以選擇非分區模式也可以選擇分區模式;在分區模式中,分區的方式既可以和主表相同也可以和主表不同。因此,全局索引又分為以下兩種形式: * **全局非分區索引(****Global Non-Partitioned Index****)** 索引數據不做分區,保持單一的數據結構,和非分區表的索引類似。但由于主表已經做了分區,因此會出現索引中的某一個鍵映射到不同主表分區的情況,即“**一對多**”的對應關系。全局非分區索引的結構如下圖所示: ![](https://img.kancloud.cn/35/8f/358fcbe6a257689791d795d3db919884_802x676.png) * **全局分區索引(****Global Partitioned Index****)** 索引數據按照指定的方式做分區處理,比如做哈希(Hash)分區或者范圍(Range)分區,將索引數據分散到不同的分區中。但**索引的分區模式是完全獨立的,和主表的分區沒有任何關系**,因此對于每個索引分區來說,里面的某一個鍵都可能映射到不同的主表分區(當索引鍵有重復值時),索引分區和主表分區之間是“多對多”的對應關系。全局分區索引的結構如下圖所示: ![](https://img.kancloud.cn/bd/58/bd585a7a3fde86682b08924b628934d5_782x644.png) 在上圖中,employee 表按照 emp\_id 做了范圍分區,同時在 emp\_name 上做了全局分區索引。可以看到同一個索引分區里的鍵,會指向不同的主表分區。 由于全局索引的分區模式和主表的分區模式完全沒有關系,看上去全局索引更像是另一張獨立的表,因此也會將全局索引叫做索引表,理解起來會更容易一些(和主表相對應)。 **說明** “非”分區表也可以創建全局分區索引。但如果主表沒有分區的必要,通常來說索引也就沒有必要分區了。 在了解了本地索引和全局索引的基本概念之后,我們直接給出什么場景需要全局索引的結論。全局索引主要使用在兩個場景: * 業務上除了主鍵外,還有其他列的組合需要滿足全局唯一性的強需求,這個業務需求僅能通過全局性的唯一索引來實現。 * 業務的查詢無法得到分區鍵的條件謂詞,且業務表沒有高并發的同時寫入,為避免進行全分區的掃描,可以根據查詢條件構建全局索引,使用新的分區。 需要意識到的是,全局索引雖然為全局唯一、數據重新分區帶來了可能,解決了一些業務需要根據不同維度進行查詢的強需求,但是為此付出的代價是每一筆數據的寫入都有可能變成跨機的分布式事務,在高并發的寫入場景下它將極大的影響系統的寫入性能。當業務的查詢可以擁有分區鍵的條件謂詞時,我們依舊推薦構建本地索引,通過數據庫優化器的分區裁剪功能,排除掉不符合條件的分區。這樣的做法為了同時兼顧查詢和寫入的性能,讓系統的總體性能達到一個均衡的狀態。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看