<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>

                **1\. 查詢sql編寫規范** (1)當多表聯查時,查詢的數據僅從其中一張表出時,可考慮使用IN操作而不是JOIN。 (2)多表查詢性能較差,多表Join時要滿足小表在右的原則,右表關聯時被加載到內存中與左表進行比較,ClickHouse中無論是Left Join 、Right Join還是Inner Join永遠都是拿著右表中的每一條記錄到左表中查找該記錄是否存在,所以右表必須是小表。 (3)將一些需要關聯分析的業務創建成字典表進行join操作,前提是字典表不宜太大,因為字典表會常駐內存。 (4)禁?業務select \*?,列存數據,每減少一個字段會減少大量的數據掃描,提升查詢效率。 (5)建議使用 limit 限制返回數據條數使用limit返回指定的結果集數量,不會進行向下掃描,大大提升了查詢效率。 (6)查詢時如果可以建議帶上分區鍵查詢,可以有效減少數據掃描量,提升查詢效率。 (7)CK的稀疏索引使得點查詢(即kv類型的查詢)性能不佳,千萬不要把它簡單當做關系型數據庫進行查詢。 (8)使用Global優化分布式子查詢,避免出現查詢指數級放大。 (9)使用 uniqCombined 替代 distinctuniqCombined 對去重進行了優化,通過近似去重提升十倍查詢性能。 (10)盡量不去使用字符串類型,時間類型最終會轉換成數值類型進行處理,數值類型在執行效率和存儲上遠好過字符串。 (11)ClickHouse的分布式表性能性價比不如物理表高,建表分區字段值不宜過多,防止數據導入過程磁盤可能會被打滿。 (12)不要在唯一列或大基數列上進行分組或去重操作,基數太大會消耗過多的io和內存。 (13)CPU一般在50%左右會出現查詢波動,達到70%會出現大范圍的查詢超時,CPU是最關鍵的指標,要非常關注。 **2. 數據寫入注意事項** (1)不適合高并發寫入,最好還是從異步化隊列寫入,batch insert 5w-10w 起步,盡量不要執行單條或插入操作,會產生大量小分區文件,給后臺merge任務帶來巨大壓力。 (2)幾乎完全不支持update/delete,也不支持事務。 (3)建議表要指定分區鍵,尤其是數據量大的表,插入/查詢/合并都是以分區為單位,合理的分區可以提升整體性能。 (4)分區不建議太多,如果分區太多,會因需要打開的文件描述符過多導致查詢效率不佳。 (5)數據在寫入ClickHouse前預先的對數據進行分組,避免一次插入的數據屬于多個分區。 (6)注意MerTree 主鍵允許存在重復數據(ReplacingMergeTree可以在分區內去重)。 **3. 建表規范** (1)本地表命名格式:{tab\_name}\_local,分布式表命名格式:{tab\_name}\_shard 。 (2)物化視圖命名規范:{tabl\_name\_xxx}\_mv 。 (3)盡量不要使用Nullable類型,該類型對性能有一定影響,且不能包含在索引中。 (4)合理設置分區,所有本地表使用order by關鍵字指定分區字段,建議采用日期作為一級分區。默認 order by 字段作為主鍵。 (5)如果表中不是必須保留全量歷史數據,建議指定TTL,可以免去手動過期歷史數據的麻煩。 (6)所有復制引擎表建表指定 use\_minimalistic\_part\_header\_in\_zookeeper=1。 ?本地ReplicatedMergeTree表建表模板如下所示: ~~~sql CREATE TABLE IF NOT EXISTS ads. ads_af_city_complaint_1d _local ON cluster ycdata_3shards_3replicas (`id` UInt64 COMMENT '序號', `order_id` UInt64 COMMENT '訂單號', `gross_weight` UInt64 COMMENT '權重', `create_time` Date COMMENT '創建時間', `event` String COMMENT '事件') ENGINE = ReplicatedMergeTree('/clickhouse/table/{shared}/ads_af_city_complaint_1d _local', '{replica}') PARTITION BY create_time ORDER BY id TTL create_time + toIntervalDay(90) SETTINGS index_granularity = 8192, use_minimalistic_part_header_in_zookeeper = 1; ~~~ **解釋:** * TTL 定義了數據保留策略為90天。 * {shared},{replica}無需替換為一個具體值。 * ycdata\_3shards\_3replicas為clickhouse是集群名稱。
                  <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>

                              哎呀哎呀视频在线观看