<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] # 塊存儲 SSTable 當 MemTable 的大小達到某個閾值后,OceanBase 數據庫會將 MemTable 中的數據轉存于磁盤上,轉儲后的結構稱之為 SSTable。 ## 宏塊和微塊 OceanBase 數據庫將磁盤切分為大小為 2MB 的定長數據塊,稱之為宏塊(Macro Block),宏塊是數據文件寫 IO 的基本單位,一個 SSTable 就由若干個宏塊構成。在宏塊內部數據被組織為多個大小為 16KB 左右的變長數據塊,稱之為微塊(Micro Block),微塊中包含若干數據行(Row),微塊是數據文件讀 IO 的最小單位。 宏塊是定長的,大小為固定的 2MB,長度不可以被調整;微塊是變長的,默認值為 16KB,指的是數據被壓縮前的大小,數據壓縮后通常大小會比指定的微塊長度更小,同時 OceanBase 數據庫在進行 IO 讀取時,會按照 4KB 來做 IO 對齊,因此一次 IO 讀的長度并不一定與微塊長度完全一致。微塊長度可以被修改,通過以下的語句可以對于不同的表設置不同的微塊長度: ~~~ ALTER TABLE mytest SET block_size = 131072; ~~~ 一般來說微塊長度越大,數據的壓縮比會越高,但相應的一次 IO 讀的代價也會越大;微塊長度越小,數據的壓縮比會越低,但相應的一次 IO 讀的代價會更小。微塊的默認大小為 16KB。 隨著數據的刪除或者更新,一個宏塊的數據填充可能不滿,當相鄰的幾個宏塊中的所有行可以在一個宏塊中存放時,相鄰的多個宏塊會被合并成一個宏塊。 ## 編碼與壓縮 OceanBase 數據庫通過數據編碼壓縮技術實現高壓縮。數據編碼是基于數據庫關系表中不同字段的值域和類型信息,所產生的一系列的編碼方式,它比通用的壓縮算法更懂數據,從而能夠實現更高的壓縮效率。 按列壓縮會比按行壓縮更有效,這是因為關系表從列的方向去看,相鄰字段由于具有相同數據類型和值域范圍,其數據的相似性要遠遠好于從行的維度,所以 OceanBase 數據庫是按照列進數據編碼的。當一列經過編碼后,成為定長存儲時,OceanBase 數據庫會對這一列在微塊內使用列存進行存儲。另外,OceanBase 數據庫的讀寫分離架構使得數據總是批量寫入磁盤,這種模式相比傳統的臟頁回刷磁盤的方式更加適合于數據壓縮,開啟編碼后只會增加一部分數據后臺合并的開銷,對用戶的實時寫入、更新、刪除性能是無損的,并且對部分查詢性能有優化。這是因為編碼后的數據不需要解碼,就可以直接支持查詢,而即使最快速的 lz4 壓縮算法,也需要在數據訪問前將整個數據塊進行解壓。另外,數據編碼使得同一個數據塊中能夠容納更多的數據,IO 的性能也隨之提升。因此數據編碼也是 OceanBase 數據表的默認選項。 OceanBase 數據庫實現了多種數據編碼方法,包括字典編碼、RLE 編碼、常量編碼、差值編碼、前綴編碼、列間編碼等,并根據數據特征自動為每一列選擇最合適的數據編碼,不需要用戶來進行指定。在數據編碼的基礎上進一步對編碼后的數據使用通用壓縮算法進行壓縮。通過編碼和壓縮,使用相同的塊大小(16KB)、以及相同的壓縮算法(lz4),同樣的數據存放在 OceanBase 數據庫中,和其他數據相比要平均節省超過一半的空間,同時沒有損失任何性能。
                  <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>

                              哎呀哎呀视频在线观看