<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 數據庫并行查詢(PX)的參數決定了并行查詢的速度,主要包括并行度和 EXCHANGE 相關參數 。 ## 并行度參數 并行度相關參數主要決定每個 query 并發時的 worker 個數。 <table data-tag="table" id="table-cg4-bq4-5sk" class="table"><colgroup width="144" span="1" data-tag="col" id="col-8v7-cg1-dle" colwidth="1*" colnum="1" colname="col1" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-o1b-xwo-bdw" colwidth="1*" colnum="2" colname="col2" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-bg5-1yb-par" colwidth="1*" colnum="3" colname="col3" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-pu3-223-jng" colwidth="1*" colnum="4" colname="col4" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-d86-g9v-277" colwidth="1*" colnum="5" colname="col5" style="width:20%" class="col"></colgroup><thead id="thead-x5n-jrf-mwm" class="thead"><tr id="tr-u0c-fxb-px1"><th id="td-0a8-l8p-3jj"><p id="p-x59-hcf-k8j"><b>參數名稱</b></p></th><th id="td-82a-og0-x4l"><p id="p-ocg-9qq-zjl"><b>描述</b></p></th><th id="td-qoo-13d-540"><p id="p-8l3-7bz-6zg"><b>取值范圍</b></p></th><th id="td-h9k-aue-j8s"><p id="p-0kl-1h2-s1k"><b>默認值</b></p></th><th id="td-obu-nad-x2p"><p id="p-q68-yfp-1so"><b>配置建議</b></p></th></tr></thead><tbody data-tag="tbody" id="tbody-fih-veo-q6s" class="tbody"><tr data-tag="tr" id="tr-i9g-0bh-pvf" class="tr"><td data-tag="td" id="td-71o-pmq-0b3" class="td"><p id="p-0pt-w0r-xb9">parallel_max_servers</p></td><td data-tag="td" id="td-5p1-dtu-hfc" class="td"><p data-tag="p" id="p-3ot-ayr-ti7" class="p">控制每個服務器最大的并行執行線程個數,所有PX worker 加起來不能超過該值。</p></td><td data-tag="td" id="td-kal-v8l-7lk" class="td"><p id="p-tu8-lrt-pwj">[0, 1800]</p></td><td data-tag="td" id="td-zqa-lse-hy7" class="td"><p id="p-ssw-djs-ukl">10(目前會根據 CPU 個數計算得到,以實際大小為準)</p></td><td data-tag="td" id="td-qhw-lds-ltr" class="td"><p id="p-lwa-0fk-upv">該參數主要是控制 PX 場景下所有 PX worker 總數,建議值為可用 CPU個數的倍數關系。</p></td></tr><tr data-tag="tr" id="tr-5hp-8z6-lh4" class="tr"><td data-tag="td" id="td-pzf-xyi-xhp" class="td"><p data-tag="p" id="p-h5c-2hm-cz5" class="p">parallel_servers_target</p></td><td data-tag="td" id="td-bdq-fkf-7ux" class="td"><p data-tag="p" id="p-euo-ki0-buh" class="p">當 query 準備排隊之前,控制檢查 query 要求的并行度和已統計的 worker 總和是否超過該值。如果超過該值,則 query 需要排隊,否則 query 繼續執行。</p></td><td data-tag="td" id="td-q1q-qvb-vx5" class="td"><p id="p-mpk-77u-y9z">[0, 1800]</p></td><td data-tag="td" id="td-qwe-oty-waw" class="td"><p data-tag="p" id="p-ukh-3b0-l5p" class="p">10(目前會根據 CPU 個數計算得到,以實際大小為準)</p></td><td data-tag="td" id="td-enl-z3m-kea" class="td"><p data-tag="p" id="p-i5w-gbp-nrt" class="p">該參數主要是控制 PX 場景下,當 query 準備進行并行查詢時,如果沒有足夠 worker 處理該 query,決定是否繼續進行還是排隊等待。</p></td></tr></tbody></table> `parallel_max_servers`參數用于控制最大的并發度,`parallel_servers_target`參數用來決策 query 在并行查詢時是否排隊,兩者需要協同工作。如果只使用`parallel_max_servers`設置最大并行度,當查詢過多時,會導致所有 worker 都被調度起來,導致 CPU 等資源緊張,查詢性能下降。在 CPU 等資源有限的情況下,使用`parallel_servers_target`控制 query 進行排隊可以提高整個并發的吞吐量。 可以通過`SHOW VARIABLES`來查看這些參數的值,如下例所示: ~~~ obclient>SHOW VARIABLES LIKE '%paral%'; +-------------------------+-------+ | Variable_name | Value | +-------------------------+-------+ | ob_max_parallel_degree | 32 | | ob_stmt_parallel_degree | 1 | | parallel_max_servers | 5 | | parallel_servers_target | 4 | +-------------------------+-------+ 4 rows in set (0.00 sec) ~~~ **注意** `ob_stmt_parallel_degree`參數不需要設置,對 PX 框架無效。 ## EXCHANGE(Shuffle)參數 EXCHANGE(Shuffle)參數主要用來控制在每個 DFO 之間進行數據傳輸時的參數控制,也就是數據進行 shuffle 時的內存控制。Oceanbase 數據庫將數據傳輸封裝成了叫做 DTL(Data Transfer layer)的模塊。 <table data-tag="table" id="table-2be-zd1-7ic" class="table"><colgroup width="144" span="1" data-tag="col" id="col-kzt-mcm-sdc" colwidth="1*" colnum="1" colname="col1" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-qih-0cl-mzv" colwidth="1*" colnum="2" colname="col2" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-8qt-wkc-z6k" colwidth="1*" colnum="3" colname="col3" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-y55-6o3-rxt" colwidth="1*" colnum="4" colname="col4" style="width:20%" class="col"></colgroup><colgroup width="144" span="1" data-tag="col" id="col-prn-8k0-4r1" colwidth="1*" colnum="5" colname="col5" style="width:20%" class="col"></colgroup><thead id="thead-s0c-yyx-s6j" class="thead"><tr id="tr-wrq-lfv-9sv"><th id="td-ijo-fud-ve0"><p id="p-wiz-w4p-al9"><b>參數名稱</b></p></th><th id="td-56u-o9y-gp9"><p id="p-nv3-e5d-zaj"><b>描述</b></p></th><th id="td-43z-fsa-o8n"><p id="p-63p-8ee-nmv"><b>取值范圍</b></p></th><th id="td-r13-d79-h92"><p id="p-yf7-9r9-agp"><b>默認值</b></p></th><th id="td-fo3-x91-qrx"><p id="p-5mf-rsu-a9l"><b>配置建議</b></p></th></tr></thead><tbody data-tag="tbody" id="tbody-0y9-c8v-52o" class="tbody"><tr data-tag="tr" id="tr-zxw-dcu-wm7" class="tr"><td data-tag="td" id="td-rp1-1ra-dzd" class="td"><p data-tag="p" id="p-sae-3h6-ww8" class="p">dtl_buffer_size</p></td><td data-tag="td" id="td-hxs-u17-0ax" class="td"><p data-tag="p" id="p-xmz-jf8-tkr" class="p">控制 EXCHANGE 算子之間(即transmit 和 receive 之間)發送數據時,每次發送數據的 buffer 的大小。即當數據達到了該值上限才進行發送,減少每行傳輸的代價。</p></td><td data-tag="td" id="td-vsr-ncf-vj1" class="td"><p id="p-666-39c-dr4">[0, 1800]</p></td><td data-tag="td" id="td-po5-5zu-pu3" class="td"><p id="p-yte-208-6k3">10(目前會根據 CPU 個數計算得到,以實際大小為準)</p></td><td data-tag="td" id="td-5u1-kj5-f75" class="td"><p data-tag="p" id="p-03k-950-ebr" class="p">PX 場景下,EXCHANGE 之間發送數據依賴于該參數大小,一般不需要調整該參數,如果是為了減少發送數據次數等可以嘗試進行修改,一般不建議修改該值大小。</p></td></tr></tbody></table> 可以通過`SHOW PARAMETERS`來查看參數的值,如下例所示: ~~~ obclient>SHOW PARAMETERS LIKE '%dtl%'; +-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | +-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ | zone1 | observer | 100.81.152.114 | 36500 | dtl_buffer_size | NULL | 64K | to be removed | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ 1 row in set (0.01 sec) ~~~
                  <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>

                              哎呀哎呀视频在线观看