<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] # 數據分布 從數據分布的角度看,OceanBase 數據庫是數據庫分區表在分布式系統的實現,語法和使用兼容傳統的數據庫分區表。當表格的容量或者服務能力不足時,只需要通過 OceanBase 管理命令增加更多表格分區即可。 ## 分布式分區表 傳統數據庫支持分區表,常見的分區方式包括 Hash 分區、Range 分區、List 分區,且支持二級組合分區。OceanBase 數據庫沿用了分區表的使用方式,但是分區可以均勻分布在數據庫任意節點上。OceanBase 數據庫以分布式分區表數據模型為基礎,一方面,數據存儲和處理能力能夠水平擴展,享受分布式技術的紅利,另一方面,使用者不感知后端的分布式架構,可以像使用單機數據庫一樣使用分布式數據庫,具有完整的全局索引和全局約束。 ## 分區類型 OceanBase 數據庫支持多種分區策略,可以將數據按照符合應用需要的方式分成多個分區,支持的分區方式有 Hash、Range、List 三種分區方式。OceanBase 數據庫還支持**一級分區**和**二級分區**兩種分區模式。一級分區允許分區表以某種**分區策略設置一組分區鍵**,數據按照一個維度進行劃分。二級分區是**一種組合分區方式**,在一級分區的基礎上,每一個一級分區還可以再選擇一種分區策略和另一組分區鍵,將數據再次進行劃分。 OceanBase 數據庫對分區鍵的選擇有要求,如果表格設置了 Primary Keys,那么分區鍵必須是 Primary Keys 中的列,如果表格沒有設置 Primary Keys,那么分區鍵沒有要求。 **Hash 分區** Hash 分區需要指定分區鍵和分區個數。通過 Hash 的分區表達式計算得到一個 int 類型的結果,這個結果再和分區個數取模得到具體這行數據屬于哪個分區。通常用于給定分區鍵的點查詢,例如按照用戶 ID 來分區。Hash 分區通常能消除熱點查詢。 下面的例子創建了 t1 表,選擇 c1 列作為分區鍵進行 Hash 分區,分區個數是 5 個。 ~~~ create table t1 (c1 int, c2 int) partition by hash(c1) partitions 5 ~~~ **Range 分區** Range 分區是按照分區表達式的范圍來劃分分區。通常用于對分區鍵需要按照范圍的查詢。例如通過按照時間字段進行范圍分區,還有價格區間等一些分區方式。 下面的例子創建了 t2 表,選擇 c1 列作為分區鍵進行 Range 分區,分成 3 個分區 p0、p1、p2,分區范圍分別是 (min, 100), \[100, 500), \[500, max)。 ~~~ CREATE TABLE t2 (c1 NUMBER, c2 NUMBER) PARTITION BY RANGE(c1) ( PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(500), PARTITION p2 VALUES LESS THAN(MAXVALUE) ); ~~~ **List 分區** List 分區是根據枚舉類型的值來劃分分區的。主要用于枚舉類型。 下面的例子創建了 t3 表,選擇 c1 列作為分區鍵進行 List 分區,當某一行的 c1 = 1 or c1 = 2 or c1 = 3 的時候,那么這一行屬于分區 p0,當 c1 = 5 or c1 = 6 的時候,那么這一行屬于分區 p1。除此之外都所有行都屬于 p2。 ~~~ CREATE TABLE t3 (c1 NUMBER, c2 NUMBER) PARTITION BY RANGE(c1) ( PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (5, 6), PARTITION p2 VALUES IN (DEFAULT) ); ~~~ **二級分區** 按照兩個維度來把數據拆分成分區。 最常用的地方就是類似用戶賬單領域,會按照 user_id 做 hash 分區,按照賬單創建時間做 range 分區。所有二級分區的組合方式有 hash + hash, hash + range, hash + list, range + hash, range + range, range + list, list + hash, list + range, list + list。
                  <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>

                              哎呀哎呀视频在线观看