<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          談?wù)凜lickHouse性能情況以及相關(guān)優(yōu)化

          共 3979字,需瀏覽 8分鐘

           ·

          2021-07-30 17:35

          ClickHouse性能情況


          主要分為4個(gè)方面


          1、單個(gè)查詢吞吐量

          場(chǎng)景一:

          如果數(shù)據(jù)被放置在page cache中,則一個(gè)不太復(fù)雜的查詢?cè)趩蝹€(gè)服務(wù)器上大約能夠以2-10GB/s(未壓縮)的速度進(jìn)行處理(對(duì)于簡(jiǎn)單的查詢,速度可以達(dá)到30GB/s)

          場(chǎng)景二:

          如果數(shù)據(jù)沒有在page cache中的話,那么速度將取決于你的磁盤系統(tǒng)和數(shù)據(jù)的壓縮率

          例如:

          a、如果一個(gè)磁盤允許以400MB/s的速度讀取數(shù)據(jù),并且數(shù)據(jù)壓縮率是3,則數(shù)據(jù)的處理速度為1.2GB/s。
          b、這意味著,如果你是在提取一個(gè)10字節(jié)的列,那么它的處理速度大約是1-2億行每秒
          c、對(duì)于分布式處理,處理速度幾乎是線性擴(kuò)展的,但這受限于聚合或排序的結(jié)果不是那么大的情況下


          2、處理短查詢的延時(shí)時(shí)間

          (1)數(shù)據(jù)被page cache緩存的情況下,它的延遲應(yīng)該小于50毫秒(最佳情況下應(yīng)該小于10毫秒),否則,延遲取決于數(shù)據(jù)的查找次數(shù)
          (2)延遲可以通過以下公式計(jì)算得知:查找時(shí)間(10 ms) * 查詢的列的數(shù)量 * 查詢的數(shù)據(jù)塊的數(shù)量


          3、處理大量短查詢

          (1)ClickHouse可以在單個(gè)服務(wù)器上每秒處理數(shù)百個(gè)查詢(在最佳的情況下最多可以處理數(shù)千個(gè))
          (2)但是由于這不適用于分析型場(chǎng)景。建議每秒最多查詢100次


          4、數(shù)據(jù)寫入性能

          (1)建議每次寫入不少于1000行的批量寫入,或每秒不超過一個(gè)寫入請(qǐng)求
          (2)當(dāng)使用tab-separated格式將一份數(shù)據(jù)寫入到MergeTree表中時(shí),寫入速度大約為50到200MB/s
          (3)如果您寫入的數(shù)據(jù)每行為1Kb,那么寫入的速度為50,000到200,000行每秒
          (4)如果您的行更小,那么寫入速度將更高
          (5)如果您的行更小,那么寫入速度將更高

          注意:ClickHouse并非無所不能,查詢語句需要不斷的調(diào)優(yōu),可能與查詢條件有關(guān),不同的查詢條件表是左join還是右join也是很有講究的

          補(bǔ)充問題:

          mysql與ClickHouse性能寫入?yún)^(qū)別?

          mysql:

          (1)MySQL單條SQL是單線程的,只能跑滿一個(gè)core
          (2)IO方面,MySQL是行存儲(chǔ),MySQL需要大量隨機(jī)IO

          ClickHouse:

          (1)ClickHouse相反,有多少CPU,吃多少資源,所以飛快
          (2)ClickHouse不支持事務(wù),不存在隔離級(jí)別。ClickHouse的定位是分析性數(shù)據(jù)庫,而不是嚴(yán)格的關(guān)系型數(shù)據(jù)庫
          (3)IO方面,ClickHouse是列存儲(chǔ),后者在count()這類操作天然有優(yōu)勢(shì),ClickHouse基本是順序IO

          思考:

          據(jù)導(dǎo)入的時(shí)候,數(shù)據(jù)肯定緩存在內(nèi)存里了,這個(gè)的確,但是ClickHouse基本上是順序IO。對(duì)IO基本沒有太高要求,當(dāng)然,磁盤越快,上層處理越快,但是99%的情況是,CPU先跑滿了(數(shù)據(jù)庫里太少見了,大多數(shù)都是IO不夠用)




          二、ClickHouse相關(guān)優(yōu)化

          (1)關(guān)閉虛擬內(nèi)存,物理內(nèi)存和虛擬內(nèi)存的數(shù)據(jù)交換,會(huì)導(dǎo)致查詢變慢

          (2)為每一個(gè)賬戶添加join_use_nulls配置,左表中的一條記錄在右表中不存在,右表的相應(yīng)字段會(huì)返回該字段相應(yīng)數(shù)據(jù)類型的默認(rèn)值,而不是標(biāo)準(zhǔn)SQL中的Null值

          (3)JOIN操作時(shí)一定要把數(shù)據(jù)量小的表放在右邊,ClickHouse中無論是Left Join 、Right Join還是Inner Join永遠(yuǎn)都是拿著右表中的每一條記錄到左表中查找該記錄是否存在,所以右表必須是小表

          (4)批量寫入數(shù)據(jù)時(shí),必須控制每個(gè)批次的數(shù)據(jù)中涉及到的分區(qū)的數(shù)量,在寫入之前最好對(duì)需要導(dǎo)入的數(shù)據(jù)進(jìn)行排序。無序的數(shù)據(jù)或者涉及的分區(qū)太多,會(huì)導(dǎo)致ClickHouse無法及時(shí)對(duì)新導(dǎo)入的數(shù)據(jù)進(jìn)行合并,從而影響查詢性能

          (5)盡量減少JOIN時(shí)的左右表的數(shù)據(jù)量,必要時(shí)可以提前對(duì)某張表進(jìn)行聚合操作,減少數(shù)據(jù)條數(shù)。有些時(shí)候,先GROUP BY再JOIN比先JOIN再GROUP BY查詢時(shí)間更短

          (6)ClickHouse的分布式表性能性價(jià)比不如物理表高,建表分區(qū)字段值不宜過多,防止數(shù)據(jù)導(dǎo)入過程磁盤可能會(huì)被打滿

          (7)CPU一般在50%左右會(huì)出現(xiàn)查詢波動(dòng),達(dá)到70%會(huì)出現(xiàn)大范圍的查詢超時(shí),CPU是最關(guān)鍵的指標(biāo),要非常關(guān)注


          三、ClickHouse有哪些優(yōu)缺點(diǎn)?

          優(yōu)點(diǎn):

          (1)為了高效的使用CPU,數(shù)據(jù)不僅僅按列存儲(chǔ),同時(shí)還按向量進(jìn)行處理
          (2)數(shù)據(jù)壓縮空間大,減少IO;處理單查詢高吞吐量每臺(tái)服務(wù)器每秒最多數(shù)十億行
          (3)索引非B樹結(jié)構(gòu),不需要滿足最左原則;只要過濾條件在索引列中包含即可;即使在使用的數(shù)據(jù)不在索引中,由于各種并行處理機(jī)制ClickHouse全表掃描的速度也很快
          (4)寫入速度非常快,50-200M/s,對(duì)于大量的數(shù)據(jù)更新非常適用

          缺點(diǎn):

          (1)不支持事務(wù),不支持真正的刪除/更新
          (2)不支持高并發(fā),官方建議qps為100,可以通過修改配置文件增加連接數(shù),但是在服務(wù)器足夠好的情況下
          (3)不支持真正的刪除/更新支持 不支持事務(wù)(期待后續(xù)版本支持)
          (4)不支持二級(jí)索引
          (5)有限的SQL支持,join實(shí)現(xiàn)與眾不同
          (6)不支持窗口功能
          (7)元數(shù)據(jù)管理需要人工干預(yù)維護(hù)
          (8)SQL滿足日常使用80%以上的語法,join寫法比較特殊;最新版已支持類似SQL的join,但性能不好
          (9)ClickHouse快是因?yàn)椴捎昧瞬⑿刑幚頇C(jī)制,即使一個(gè)查詢,也會(huì)用服務(wù)器一半的CPU去執(zhí)行,所以ClickHouse不能支持高并發(fā)的使用場(chǎng)景,默認(rèn)單查詢使用CPU核數(shù)為服務(wù)器核數(shù)的一半,安裝時(shí)會(huì)自動(dòng)識(shí)別服務(wù)器核數(shù),可以通過配置文件修改該參數(shù)


          四、ClickHouse的特性有哪些?

          (1)真正的列式數(shù)據(jù)庫管理系統(tǒng)

          概述:
          除了數(shù)據(jù)本身外不應(yīng)該存在其他額外的數(shù)據(jù)意味著為了避免在值旁邊存儲(chǔ)它們的長(zhǎng)度?number?,你必須支持固定長(zhǎng)度數(shù)值類型?
          例如:
          a、10億個(gè)UInt8類型的數(shù)據(jù)在未壓縮的情況下大約消耗1GB左右的空間,如果不是這樣的話,這將對(duì)CPU的使用產(chǎn)生強(qiáng)烈影響
          b、即使是在未壓縮的情況下,緊湊的存儲(chǔ)數(shù)據(jù)也是非常重要的,因?yàn)榻鈮嚎s的速度主要取決于未壓縮數(shù)據(jù)的大小

          注意:
          a、在一些其他系統(tǒng)中也可以將不同的列分別進(jìn)行存儲(chǔ),但由于對(duì)其他場(chǎng)景進(jìn)行的優(yōu)化,使其無法有效的處理分析查詢。例如:HBase,BigTable,Cassandra,HyperTable
          b、在這些系統(tǒng)中,你可以得到每秒數(shù)十萬的吞吐能力,但是無法得到每秒幾億行的吞吐能力

          說明:
          a、ClickHouse不單單是一個(gè)數(shù)據(jù)庫, 它是一個(gè)數(shù)據(jù)庫管理系統(tǒng)
          b、它允許在運(yùn)行時(shí)創(chuàng)建表和數(shù)據(jù)庫、加載數(shù)據(jù)和運(yùn)行查詢,而無需重新配置或重啟服務(wù)


          (2)數(shù)據(jù)壓縮?

          a、一些列式數(shù)據(jù)庫管理系統(tǒng)中(例如:InfiniDB CE 和 MonetDB) 并沒有使用數(shù)據(jù)壓縮
          b、但是, 若想達(dá)到比較優(yōu)異的性能,數(shù)據(jù)壓縮確實(shí)起到了至關(guān)重要的作用。


          (3)數(shù)據(jù)的磁盤存儲(chǔ)?

          a、許多的列式數(shù)據(jù)庫(如 SAP HANA, Google PowerDrill)只能在內(nèi)存中工作,這種方式會(huì)造成比實(shí)際更多的設(shè)備預(yù)算
          b、ClickHouse被設(shè)計(jì)用于工作在傳統(tǒng)磁盤上的系統(tǒng),它提供每GB更低的存儲(chǔ)成本,但如果有可以使用SSD和內(nèi)存,它也會(huì)合理的利用這些資源


          (4)多核心并行處理?

          ClickHouse會(huì)使用服務(wù)器上一切可用的資源,從而以最自然的方式并行處理大型查詢


          (5)多服務(wù)器分布式處理?

          a、列式數(shù)據(jù)庫管理系統(tǒng)中,幾乎沒有一個(gè)支持分布式的查詢處理
          b、在ClickHouse中,數(shù)據(jù)可以保存在不同的shard上,每一個(gè)shard都由一組用于容錯(cuò)的replica組成,查詢可以并行地在所有shard上進(jìn)行處理。這些對(duì)用戶來說是透明的


          (6)支持SQL?

          a、ClickHouse支持基于SQL的聲明式查詢語言,該語言大部分情況下是與SQL標(biāo)準(zhǔn)兼容的
          b、支持的查詢包括 GROUP BY,ORDER BY,IN,JOIN以及非相關(guān)子查詢
          c、不支持窗口函數(shù)和相關(guān)子查詢


          (7)向量引擎?

          為了高效的使用CPU,數(shù)據(jù)不僅僅按列存儲(chǔ),同時(shí)還按向量(列的一部分)進(jìn)行處理,這樣可以更加高效地使用CPU


          (8)實(shí)時(shí)的數(shù)據(jù)更新?

          a、ClickHouse支持在表中定義主鍵
          b、為了使查詢能夠快速在主鍵中進(jìn)行范圍查找,數(shù)據(jù)總是以增量的方式有序的存儲(chǔ)在MergeTree中
          c、因此,數(shù)據(jù)可以持續(xù)不斷地高效的寫入到表中,并且寫入的過程中不會(huì)存在任何加鎖的行為


          (9)索引

          按照主鍵對(duì)數(shù)據(jù)進(jìn)行排序,這將幫助ClickHouse在幾十毫秒以內(nèi)完成對(duì)數(shù)據(jù)特定值或范圍的查找


          (10)適合在線查詢

          在線查詢意味著在沒有對(duì)數(shù)據(jù)做任何預(yù)處理的情況下以極低的延遲處理查詢并將結(jié)果加載到用戶的頁面中


          (11)支持近似計(jì)算?

          ClickHouse提供各種各樣在允許犧牲數(shù)據(jù)精度的情況下對(duì)查詢進(jìn)行加速的方法:
          a、用于近似計(jì)算的各類聚合函數(shù),如:distinct values, medians, quantiles
          b、基于數(shù)據(jù)的部分樣本進(jìn)行近似查詢。這時(shí),僅會(huì)從磁盤檢索少部分比例的數(shù)據(jù)
          c、不使用全部的聚合條件,通過隨機(jī)選擇有限個(gè)數(shù)據(jù)聚合條件進(jìn)行聚合。這在數(shù)據(jù)聚合條件滿足某些分布條件下,在提供相當(dāng)準(zhǔn)確的聚合結(jié)果的同時(shí)降低了計(jì)算資源的使用


          (12)支持?jǐn)?shù)據(jù)復(fù)制和數(shù)據(jù)完整性?

          a、ClickHouse使用異步的多主復(fù)制技術(shù)
          b、當(dāng)數(shù)據(jù)被寫入任何一個(gè)可用副本后,系統(tǒng)會(huì)在后臺(tái)將數(shù)據(jù)分發(fā)給其他副本,以保證系統(tǒng)在不同副本上保持相同的數(shù)據(jù)
          c、在大多數(shù)情況下ClickHouse能在故障后自動(dòng)恢復(fù),在一些少數(shù)的復(fù)雜情況下需要手動(dòng)恢復(fù)。
          瀏覽 150
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91人妻人人澡人人爽 | 久久青草视频 | 五月天婷婷国产 | 国内精品在线观看小视频 | 国产精品嫩草影院久久久 |