Feidhmíocht fiosrúchán anailíse a thástáil in PostgreSQL, ClickHouse agus clickhousedb_fdw (PostgreSQL)

Sa staidéar seo, bhí mé ag iarraidh a fheiceáil cad iad na feabhsuithe feidhmíochta a d'fhéadfaí a bhaint amach trí úsáid a bhaint as foinse sonraí ClickHouse seachas PostgreSQL. Tá a fhios agam na buntáistí táirgiúlachta a fhaighim as ClickHouse a úsáid. An leanfaidh na sochair seo ar aghaidh má fhaighim rochtain ar ClickHouse ó PostgreSQL ag baint úsáide as Fillteán Sonraí Coigríche (FDW)?

Is iad na timpeallachtaí bunachar sonraí a ndearnadh staidéar orthu ná PostgreSQL v11, clickhousedb_fdw agus bunachar sonraí ClickHouse. I ndeireadh na dála, ó PostgreSQL v11 beimid ag rith fiosruithe SQL éagsúla a sheoltar tríd ár clickhousedb_fdw chuig an mbunachar sonraí ClickHouse. Feicfimid ansin conas a chuirtear feidhmíocht FDW i gcomparáid leis na ceisteanna céanna a bhíonn ar siúl i PostgreSQL dúchais agus ClickHouse dúchais.

Bunachar Sonraí Clickhouse

Is córas bainistíochta bunachar sonraí columnar foinse oscailte é ClickHouse atá in ann feidhmíocht a bhaint amach 100-1000 uair níos tapúla ná cur chuige traidisiúnta bunachar sonraí, atá in ann níos mó ná billiún sraitheanna a phróiseáil i níos lú ná soicind.

Cliceáilhousedb_fdw

clickhousedb_fdw - Is tionscadal foinse oscailte ó Percona é an fillteán sonraí seachtrach don bhunachar sonraí ClickHouse, nó FDW. Seo nasc chuig stór GitHub an tionscadail.

I mí an Mhárta scríobh mé blag a insíonn níos mó duit faoinár FDW.

Mar a fheicfidh tú, cuireann sé seo FDW ar fáil do ClickHouse a cheadaíonn SELECT ón mbunachar sonraí ClickHouse ón bhfreastalaí PostgreSQL v11, agus IONSÁIGH ISTEACH.

Tacaíonn FDW le hardghnéithe mar chomhiomlán agus páirt. Feabhsaíonn sé seo feidhmíocht go suntasach trí úsáid a bhaint as acmhainní an chianfhreastalaí le haghaidh na n-oibríochtaí sin atá dian ar acmhainní.

Timpeallacht tagarmhairc

  • Freastalaí Supermicro:
    • Intel® Xeon® CPU E5-2683 v3 @ 2.00GHz
    • 2 soicéad / 28 croí / 56 snáithe
    • Cuimhne: 256GB RAM
    • Stóráil: Samsung SM863 1.9TB Enterprise SSD
    • Córas comhaid: ext4/xfs
  • OS: Linux sblade01 4.15.0-42-generic #45~16.04.1-Ubuntu
  • PostgreSQL: leagan 11

Tástálacha tagarmharcála

In ionad roinnt tacar sonraí meaisín-ghinte a úsáid don tástáil seo, d’úsáideamar na sonraí “Táirgiúlacht de réir Am Oibreora Tuairiscithe Ama” ó 1987 go 2018. Is féidir leat rochtain a fháil ar na sonraí ag baint úsáide as ár script ar fáil anseo.

Is é méid an bhunachair sonraí ná 85 GB, ag soláthar tábla amháin de 109 colún.

Ceisteanna Tagarmharc

Seo iad na ceisteanna a d’úsáid mé chun comparáid a dhéanamh idir ClickHouse, clickhousedb_fdw agus PostgreSQL.

Q#
Tá Comhiomláin agus Grúpa Le

Q1
ROGHNAIGH Lae na Seachtaine, comhair(*) AS c Ó ontime ÁIT Bliain >= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Lae de Sheachtain ORDÚ AG c DESC;

Q2
ROGHNAIGH Lae na Seachtaine, comhair(*) AS c Ó Ontime ÁIT ÍOSMILLE>10 AGUS Bliain>= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Lae de Sheachtain ORDÚ AG c DESC;

Q3
ROGHNAIGH Bunús, comhaireamh(*) AS c Ó onam ÁIT ÁIT Moill Moill>10 AGUS Bliain >= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Tionscnaimh ORDÚ DE RÉIR c Teorainn DESC 10;

Q4
SELECT Iompróir, comhaireamh () Ón Ama ÓN ÁITEAR Moill Dochair>10 AGUS Bliain = 2007 GRÚPA DE RÉIR Iompróra ORDÚ DE RÉIR chomhairimh() DESC;

Q5
ROGHNACH a. Iompróir, c, c2, c1000/c2 mar c3 Ó ( SELECT Iompróir, comhaireamh () AS c Ó Ontime ÁIT Moill>10 AGUS Bliain=2007 GHRÚPA Ó Iompróir ) Ballraíocht IOMLÁNA ISTEACH ( ROGHNAIGH Iompróir, comhaireamh(*) AS c2 Ó in am ÁIT Bliain=2007 GRÚPA Ó Iompróir)b ar a.Iompróir=b.Iompróir ORDÚ BY c3 DESC;

Q6
ROGHNACH a. Iompróir, c, c2, c1000/c2 mar c3 Ó ( SELECT Iompróir, comhaireamh () AS c Ó onam ÁIT Moill>10 AGUS Bliain >= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Iompróra) Join INMHEÁLA (ROGHNAIGH Iompróir, comhaireamh(*) AS c2 ÓN am on Am ÁIT Bliain >= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Iompróir ) b ar a.Carrier=b. Iompróir ORDÚ AG C3 DESC;

Q7
SELECT Iompróir, meánlíon(DepDelay) * 1000 AS c3 Ó ontime ÁIT Bliain >= 2000 AGUS Bliain <= 2008 GRÚPA DE RÉIR Iompróra;

Q8
ROGHNÚ Bliain, meánlíon (DepMoill) Ó GHRÚPA onam de réir bliana;

Q9
roghnaigh Bliain, comhaireamh(*) mar c1 ó ghrúpa in am de réir bliana;

Q10
SELECT avg(cnt) Ó (SELECT Bliain,Mí,count(*) AS cnt Ó ontime ÁIT DepDel15=1 GRÚPA DE RÉIR Bliana,Mí) a;

Q11
roghnaigh meánlíon(c1) ó (roghnaigh Bliain,Mí,Comhaireamh(*) mar c1 ó ghrúpa in am de réir Bliana,Mí) a;

Q12
ROGHNAIGH OriginCityName, DestCityName, comhaireamh(*) AS c Ó GHRÚPA ontime DE RÉIR OriginCityName, DestCityName ORDÚ DE RÉIR c DESC LIMIT 10;

Q13
ROGHNAIGH OriginCityName, comhaireamh(*) AS c ÓN gHRÚPA ontime DE RÉIR OriginCityName ORDÚ DE RÉIR c Teorainn DESC 10;

Iarratas Tá Joins

Q14
ROGHNAIGH a.Bliain, c1/c2 FROM (roghnaigh Bliain, comhaireamh()1000 mar c1 ó ontime NUAIR A DHÉANFAR DÍOBHÁIL>10 GHRÚPA I LEITH BLIAIN) COMHALTACH ISTEACH (roghnaigh Bliain, comhair(*) mar c2 ó am go ham GRÚPA DE RÉIR Bliain ) b ar a.Bliain=b.Bliana ORDÚ DE RÉIR a.Bliana;

Q15
ROGHNAIGH a.” Bliain”, c1/c2 Ó (roghnaigh “Bliain”, comhaireamh()1000 mar c1 Ó Fontime ÁBHAR “DepMoill”>10 GHRÚPA DE RÉIR “Bliain”) Comhpháirteach ISTIGH (roghnaigh “Bliain”, comhair (*) mar c2 Ó GHRÚPA Cló-ama de réir “Bliain”) b ar a.” Bliain” = b. "Bliain";

Tábla-1: Ceisteanna a úsáidtear sa tagarmharc

Iarratas ar fhorghníomhú

Seo iad torthaí gach ceann de na fiosrúcháin nuair a reáchtáiltear iad i socruithe bunachar sonraí éagsúla: PostgreSQL le agus gan innéacsanna, ClickHouse dúchais agus clickhousedb_fdw. Taispeántar am i milleasoicindí.

Q#
PostgreSQL
PostgreSQL (Innéacsaithe)
Cliceáil Teach
cliceáilhousedb_fdw

Q1
27920
19634
23
57

Q2
35124
17301
50
80

Q3
34046
15618
67
115

Q4
31632
7667
25
37

Q5
47220
8976
27
60

Q6
58233
24368
55
153

Q7
30566
13256
52
91

Q8
38309
60511
112
179

Q9
20674
37979
31
81

Q10
34990
20102
56
148

Q11
30489
51658
37
155

Q12
39357
33742
186
1333

Q13
29912
30709
101
384

Q14
54126
39913
124
1364212

Q15
97258
30211
245
259

Tábla-1: An t-am a thóg sé chun na fiosruithe a úsáideadh sa tagarmharc a chur i gcrích

Féach ar na torthaí

Taispeánann an graf an t-am feidhmithe fiosrúcháin ina milleasoicindí, taispeánann an ais X uimhir na gceisteanna ó na táblaí thuas, agus taispeánann an ais Y an t-am forghníomhaithe ina milleasoicindí. Taispeántar torthaí ClickHouse agus sonraí a fuarthas ó postgres le clickhousedb_fdw. Ón tábla is féidir leat a fheiceáil go bhfuil difríocht mhór idir PostgreSQL agus ClickHouse, ach difríocht íosta idir ClickHouse agus clickhousedb_fdw.

Feidhmíocht fiosrúchán anailíse a thástáil in PostgreSQL, ClickHouse agus clickhousedb_fdw (PostgreSQL)

Taispeánann an graf seo an difríocht idir ClickhouseDB agus clickhousedb_fdw. I bhformhór na gceisteanna, níl forchostas FDW chomh hard sin agus is ar éigean go bhfuil sé suntasach ach amháin i gcás C12. Áirítear leis an gceist seo naisc agus clásal ORDÚ AG TRÍ. Mar gheall ar an gclásal ORDÚ AG GHRÚPA/GAN GHRÚPA, ní thagann ORDER BY síos go ClickHouse.

I dTábla 2 feicimid an léim ama i gceisteanna C12 agus C13. Arís, is é an clásal ORDÚ AG TRÍ seo is cúis leis. Chun é seo a dhearbhú, rith mé ceisteanna Q-14 agus Q-15 le clásal ORDÚ AG ACH agus gan é. Gan an clásal ORDÚ BY is é 259ms an t-am críochnaithe agus is é 1364212 an clásal ORDER BY. Chun an fiosrúchán seo a dhífhabhtú táim ag míniú an dá cheist agus seo torthaí an mhínithe.

C15: Gan ORDÚ AG CLÁSAL

bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2 
     FROM (SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a
     INNER JOIN(SELECT "Year", count(*) AS c2 FROM fontime GROUP BY "Year") b ON a."Year"=b."Year";

C15: Iarratas Gan ORDÚ DE RÉIR Clásail

QUERY PLAN                                                      
Hash Join  (cost=2250.00..128516.06 rows=50000000 width=12)  
Output: fontime."Year", (((count(*) * 1000)) / b.c2)  
Inner Unique: true   Hash Cond: (fontime."Year" = b."Year")  
->  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)        
Output: fontime."Year", ((count(*) * 1000))        
Relations: Aggregate on (fontime)        
Remote SQL: SELECT "Year", (count(*) * 1000) FROM "default".ontime WHERE (("DepDelay" > 10)) GROUP BY "Year"  
->  Hash  (cost=999.00..999.00 rows=100000 width=12)        
Output: b.c2, b."Year"        
->  Subquery Scan on b  (cost=1.00..999.00 rows=100000 width=12)              
Output: b.c2, b."Year"              
->  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)                    
Output: fontime_1."Year", (count(*))                    
Relations: Aggregate on (fontime)                    
Remote SQL: SELECT "Year", count(*) FROM "default".ontime GROUP BY "Year"(16 rows)

C14: Iarratas Le ORDÚ DE RÉIR Clásail

bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2 FROM(SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a 
     INNER JOIN(SELECT "Year", count(*) as c2 FROM fontime GROUP BY "Year") b  ON a."Year"= b."Year" 
     ORDER BY a."Year";

C14: Plean Fiosrúcháin le hORDÚ AG CLÁSAL

QUERY PLAN 
Merge Join  (cost=2.00..628498.02 rows=50000000 width=12)   
Output: fontime."Year", (((count(*) * 1000)) / (count(*)))   
Inner Unique: true   Merge Cond: (fontime."Year" = fontime_1."Year")   
->  GroupAggregate  (cost=1.00..499.01 rows=1 width=12)        
Output: fontime."Year", (count(*) * 1000)         
Group Key: fontime."Year"         
->  Foreign Scan on public.fontime  (cost=1.00..-1.00 rows=100000 width=4)               
Remote SQL: SELECT "Year" FROM "default".ontime WHERE (("DepDelay" > 10)) 
            ORDER BY "Year" ASC   
->  GroupAggregate  (cost=1.00..499.01 rows=1 width=12)         
Output: fontime_1."Year", count(*)         Group Key: fontime_1."Year"         
->  Foreign Scan on public.fontime fontime_1  (cost=1.00..-1.00 rows=100000 width=4) 
              
Remote SQL: SELECT "Year" FROM "default".ontime ORDER BY "Year" ASC(16 rows)

Aschur

Léiríonn torthaí na dturgnaimh seo go dtugann ClickHouse feidhmíocht fíor-mhaith, agus cuireann clickhousedb_fdw buntáistí feidhmíochta ClickHouse ó PostgreSQL. Cé go bhfuil roinnt forchostais ann nuair a bhíonn clickhousedb_fdw á úsáid, tá sé diomaibhseach agus inchomparáide leis an bhfeidhmíocht a baineadh amach trí reáchtáil dúchais ar bhunachar sonraí ClickHouse. Deimhníonn sé seo freisin go soláthraíonn fdw i PostgreSQL torthaí den scoth.

Telegram comhrá trí Clickhouse https://t.me/clickhouse_ru
Comhrá teileagram ag baint úsáide as PostgreSQL https://t.me/pgsql

Foinse: will.com

Add a comment