{"id":89498,"date":"2020-07-23T13:42:07","date_gmt":"2020-07-23T11:42:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql"},"modified":"2020-07-23T13:42:07","modified_gmt":"2020-07-23T11:42:07","slug":"testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql","title":{"rendered":"Anal\u00fc\u00fctiliste p\u00e4ringute j\u00f5udluse testimine PostgreSQL, ClickHouse ja clickhousedb_fdw (PostgreSQL) puhul","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Selles uuringus soovisin uurida, milliseid j\u00f5udluse parandusi on v\u00f5imalik saavutada, kasutades andmeallikaks ClickHouse'i, mitte PostgreSQL-i. Ma tean, millised j\u00f5udluse eelised kaasnevad ClickHouse'i kasutamisega. Kas need eelised p\u00fcsivad, kui p\u00e4\u00e4sen ClickHouse'ile PostgreSQL'ist v\u00e4liste andmekestade (FDW) abil? <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Uuritavad andmebaasikeskkonnad on PostgreSQL v11, clickhousedb_fdw ja ClickHouse andmebaas. L\u00f5ppkokkuv\u00f5ttes k\u00e4ivitame PostgreSQL v11-st erinevaid SQL-p\u00e4ringuid, mis suunatakse meie clickhousedb_fdw kaudu ClickHouse andmebaasi. Seej\u00e4rel n\u00e4eme, kuidas FDW j\u00f5udlus v\u00f5rreldes sama p\u00e4ringuga, mis on t\u00e4idetud kohalikus PostgreSQL-is ja kui ka kohalikus ClickHouse'is.<\/p>\n<p><\/p>\n<h3 id=\"baza-dannyh-clickhouse\">Clickhouse andmebaas<\/h3>\n<p><\/p>\n<p>ClickHouse on avatud l\u00e4htekoodiga veergude andmebaasis\u00fcsteem, mis suudab saavutada tulemusi 100\u20131000 korda kiiremini kui traditsioonilised andmebaasi l\u00e4henemisviisid, olles v\u00f5imeline t\u00f6\u00f6tlema \u00fcle miljardi rida v\u00e4hem kui sekundiga.<\/p>\n<p><\/p>\n<h3 id=\"clickhousedb_fdw\">Clickhousedb_fdw<\/h3>\n<p><\/p>\n<p>clickhousedb_fdw on ClickHouse'i v\u00e4liste andmete kesta, v\u00f5i FDW, avatud l\u00e4htekoodiga projekt, mille on loonud Percona. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Percona-Lab\/clickhousedb_fdw\">Siin on link projekti GitHub'i hoidlasse<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/blog\/2019\/03\/29\/postgresql-access-clickhouse-one-of-the-fastest-column-dbmss-with-clickhousedb_fdw\/\">M\u00e4rtsis kirjutasin blogiposti, mis r\u00e4\u00e4gib rohkem meie FDW-st<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nagu n\u00e4ete, pakub see FDW voor ClickHouse'ile, mis v\u00f5imaldab SELECT from ning INSERT INTO ClickHouse andmebaasi PostgreSQL v11 serverist.<\/p>\n<p><\/p>\n<p>FDW toetab keerukaid funktsioone, nagu agregaat ja \u00fchine. See suurendab j\u00f5udlust, kasutades kaugarvuti ressursse nende ressursimahukate toimingute jaoks.<\/p>\n<p><\/p>\n<h3 id=\"benchmark-environment\">Benchmark keskkond<\/h3>\n<p><\/p>\n<ul>\n<li>Supermicro server:\n<ul>\n<li>Intel&reg; Xeon&reg; CPU E5-2683 v3 @ 2.00GHz<\/li>\n<li>2 pesa \/ 28 tuuma \/ 56 l\u00f5ime<\/li>\n<li>M\u00e4lu: 256GB RAM-i<\/li>\n<li>Salvestus: Samsung SM863 1.9TB Enterprise SSD<\/li>\n<li>Failis\u00fcsteem: ext4\/xfs<\/li>\n<\/ul>\n<\/li>\n<li>OS: Linux smblade01 4.15.0-42-generic #45~16.04.1-Ubuntu<\/li>\n<li>PostgreSQL: versioon 11<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"benchmark-tests\">Benchmark testid<\/h3>\n<p><\/p>\n<p>Selle testi jaoks, selle asemel et kasutada masinaga genereeritud andmebaasi, kasutasime andmeid 'Aja t\u00e4itmise tegevuse p\u00f5hjal m\u00e4\u00e4ratud j\u00f5udluse kohta' 1987\u20132018. Te saate ligip\u00e4\u00e4su andmetele <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Percona-Lab\/ontime-airline-performance\/blob\/master\/download.sh\">meie siin saadaval oleva skripti kaudu<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Andmebaasi suurus on 85 GB, pakkudes \u00fchte tabelit, kus on 109 veergu.<\/p>\n<p><\/p>\n<h4 id=\"benchmark-queries\">Benchmark p\u00e4ringud<\/h4>\n<p><\/p>\n<p>Siin on p\u00e4ringud, mida kasutasin ClickHouse'i, clickhousedb_fdw ja PostgreSQL'i v\u00f5rdlemiseks.<\/p>\n<p><\/p>\n<p><strong>K#<\/strong><br \/>\n<strong>P\u00e4ring sisaldab agregaatfunktsioone ja grupi j\u00e4rgi<\/strong><\/p>\n<p>K1<br \/>\nSELECT DayOfWeek, count(*) AS c FROM ontime WHERE Year &gt;= 2000 AND Year &lt;= 2008 GROUP BY DayOfWeek ORDER BY c DESC;<\/p>\n<p>K2<br \/>\nVALI DayOfWeek, count(*) AS c FROM ontime WHERE DepDelay&gt;10 AND Year &gt;= 2000 AND Year &lt;= 2008 GROUP BY DayOfWeek ORDER BY c DESC;<\/p>\n<p>Q3<br \/>\nVALI Origin, count(*) AS c FROM ontime WHERE DepDelay&gt;10 AND Year &gt;= 2000 AND Year &lt;= 2008 GROUP BY Origin ORDER BY c DESC LIMIT 10;<\/p>\n<p>Q4<br \/>\nVALI Carrier, count(<em>) FROM ontime WHERE DepDelay&gt;10 AND Year = 2007 GROUP BY Carrier ORDER BY count(<\/em>) DESC;<\/p>\n<p>Q5<br \/>\nVALI a.Carrier, c, c2, c<em>1000\/c2 as c3 FROM ( SELECT Carrier, count(<\/em>) AS c FROM ontime WHERE DepDelay&gt;10 AND Year=2007 GROUP BY Carrier ) a INNER JOIN ( SELECT Carrier,count(*) AS c2 FROM ontime WHERE Year=2007 GROUP BY Carrier)b on a.Carrier=b.Carrier ORDER BY c3 DESC;<\/p>\n<p>Q6<br \/>\nVALI a.Carrier, c, c2, c<em>1000\/c2 as c3 FROM ( SELECT Carrier, count(<\/em>) AS c FROM ontime WHERE DepDelay&gt;10 AND Year &gt;= 2000 AND Year = 2000 AND Year &lt;= 2008 GROUP BY Carrier ) b on a.Carrier=b.Carrier ORDER BY c3 DESC;<\/p>\n<p>Q7<br \/>\nVALI Carrier, avg(DepDelay) * 1000 AS c3 FROM ontime WHERE Year &gt;= 2000 AND Year &lt;= 2008 GROUP BY Carrier;<\/p>\n<p>Q8<br \/>\nVALI Year, avg(DepDelay) FROM ontime GROUP BY Year;<\/p>\n<p>Q9<br \/>\nvalida Year, count(*) as c1 from ontime group by Year;<\/p>\n<p>Q10<br \/>\nVALI avg(cnt) FROM (SELECT Year,Month,count(*) AS cnt FROM ontime WHERE DepDel15=1 GROUP BY Year,Month) a;<\/p>\n<p>Q11<br \/>\nvalida avg(c1) from (select Year,Month,count(*) as c1 from ontime group by Year,Month) a;<\/p>\n<p>Q12<br \/>\nVALI OriginCityName, DestCityName, count(*) AS c FROM ontime GROUP BY OriginCityName, DestCityName ORDER BY c DESC LIMIT 10;<\/p>\n<p>Q13<br \/>\nVALI OriginCityName, count(*) AS c FROM ontime GROUP BY OriginCityName ORDER BY c DESC LIMIT 10;<\/p>\n<p><strong>K\u00fcsimus sisaldab liite<\/strong><\/p>\n<p>Q14<br \/>\nVALI a.Year, c1\/c2 FROM ( select Year, count(<em>)<\/em>1000 as c1 from ontime WHERE DepDelay&gt;10 GROUP BY Year) a INNER JOIN (select Year, count(*) as c2 from ontime GROUP BY Year ) b on a.Year=b.Year ORDER BY a.Year;<\/p>\n<p>Q15<br \/>\nVALI a.\u201dYear\u201d, c1\/c2 FROM ( select \u201cYear\u201d, count(<em>)<\/em>1000 as c1 FROM fontime WHERE \u201cDepDelay\u201d&gt;10 GROUP BY \u201cYear\u201d) a INNER JOIN (select \u201cYear\u201d, count(*) as c2 FROM fontime GROUP BY \u201cYear\u201d ) b on a.\u201dYear\u201d=b.\u201dYear\u201d;<\/p>\n<p><\/p>\n<p><em>Table-1: K\u00fcsimused, mida kasutati v\u00f5rdluses<\/em><\/p>\n<p><\/p>\n<h4 id=\"query-executions\">K\u00fcsimuste t\u00e4itmine<\/h4>\n<p><\/p>\n<p>Siin on iga p\u00e4ringu tulemused, kui neid t\u00e4ideti erinevates andmebaasi seadetes: PostgreSQL indeksitega ja ilma, enda ClickHouse ja clickhousedb_fdw. Aeg on n\u00e4idatud millisekundites.<\/p>\n<p><\/p>\n<p><strong>K#<\/strong><br \/>\n<strong>PostgreSQL<\/strong><br \/>\n<strong>PostgreSQL (indekseeritud)<\/strong><br \/>\n<strong>ClickHouse<\/strong><br \/>\n<strong>clickhousedb_fdw<\/strong><\/p>\n<p>K1<br \/>\n27920<br \/>\n19634<br \/>\n23<br \/>\n57<\/p>\n<p>K2<br \/>\n35124<br \/>\n17301<br \/>\n50<br \/>\n80<\/p>\n<p>Q3<br \/>\n34046<br \/>\n15618<br \/>\n67<br \/>\n115<\/p>\n<p>Q4<br \/>\n31632<br \/>\n7667<br \/>\n25<br \/>\n37<\/p>\n<p>Q5<br \/>\n47220<br \/>\n8976<br \/>\n27<br \/>\n60<\/p>\n<p>Q6<br \/>\n58233<br \/>\n24368<br \/>\n55<br \/>\n153<\/p>\n<p>Q7<br \/>\n30566<br \/>\n13256<br \/>\n52<br \/>\n91<\/p>\n<p>Q8<br \/>\n38309<br \/>\n60511<br \/>\n112<br \/>\n179<\/p>\n<p>Q9<br \/>\n20674<br \/>\n37979<br \/>\n31<br \/>\n81<\/p>\n<p>Q10<br \/>\n34990<br \/>\n20102<br \/>\n56<br \/>\n148<\/p>\n<p>Q11<br \/>\n30489<br \/>\n51658<br \/>\n37<br \/>\n155<\/p>\n<p>Q12<br \/>\n39357<br \/>\n33742<br \/>\n186<br \/>\n1333<\/p>\n<p>Q13<br \/>\n29912<br \/>\n30709<br \/>\n101<br \/>\n384<\/p>\n<p>Q14<br \/>\n54126<br \/>\n39913<br \/>\n124<br \/>\n1364212<\/p>\n<p>Q15<br \/>\n97258<br \/>\n30211<br \/>\n245<br \/>\n259<\/p>\n<p><\/p>\n<p><em>Table-1: Aeg, mis kulus p\u00e4ringute t\u00e4itmiseks, mida kasutati v\u00f5rdluses<\/em><\/p>\n<p><\/p>\n<p>Vaata tulemusi<\/p>\n<p><\/p>\n<p>Graafik n\u00e4itab p\u00e4ringu t\u00e4itmise aega millisekundites, X-telg n\u00e4itab p\u00e4ringu numbrit \u00fclaltoodud tabelites ning Y-telg n\u00e4itab t\u00e4itmisaja millisekundites. Tulemused ClickHouse'i ja andmed, saadud Postgres'ist, kasutades clickhousedb_fdw, on n\u00e4idatud. Tabelis on n\u00e4ha, et PostgreSQL ja ClickHouse'i vahel on tohutu erinevus, kuid ClickHouse ja clickhousedb_fdw vahel on minimaalne erinevus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Anal\u00fc\u00fctiliste p\u00e4ringute j\u00f5udluse testimine PostgreSQL, ClickHouse ja clickhousedb_fdw (PostgreSQL) puhul\" src=\"\/wp-content\/uploads\/2020\/07\/e084243ea7b327f30de5cb78339d3d3a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See graafik n\u00e4itab erinevust ClickhouseDB ja clickhousedb_fdw vahel. Enamikus p\u00e4ringutes ei ole FDW kulud eriti suured ja on vaevu m\u00e4rgatavad, v\u00e4lja arvatud Q12. See p\u00e4ring sisaldab liite ja ORDER BY klauslit. GROUP\/BY ja ORDER BY t\u00f5ttu ei j\u00e4eta ClickHouse'i.<\/p>\n<p><\/p>\n<p>Tabelis 2 n\u00e4eme h\u00fcpet Q12 ja Q13 p\u00e4ringute ajades. Kordan, et see on p\u00f5hjustatud ORDER BY lausetest. Kinnitamiseks k\u00e4isin l\u00e4bi p\u00e4ringud Q-14 ja Q-15 nii ORDER BY lause kui ka ilma selleta. Ilma ORDER BY lauseta on l\u00f5puaeg 259 ms, ja ORDER BY lauseta on see 1364212. Selle p\u00e4ringu t\u00f5rkeotsingu jaoks selgitan m\u00f5lemat p\u00e4ringut, siin on esitatud seletuse tulemused.<\/p>\n<p><\/p>\n<p>Q15: Ilma ORDER BY lauseteta<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">bm=# EXPLAIN VERBOSE SELECT a.&quot;Year&quot;, c1\/c2 \n     FROM (SELECT &quot;Year&quot;, count(*)*1000 AS c1 FROM fontime WHERE &quot;DepDelay&quot; &gt; 10 GROUP BY &quot;Year&quot;) a\n     INNER JOIN(SELECT &quot;Year&quot;, count(*) AS c2 FROM fontime GROUP BY &quot;Year&quot;) b ON a.&quot;Year&quot;=b.&quot;Year&quot;;<\/code><\/pre>\n<p><\/p>\n<p>Q15: P\u00e4ring ilma ORDER BY lauseteta<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">QUERY PLAN                                                      \nHash Join  (cost=2250.00..128516.06 rows=50000000 width=12)  \nOutput: fontime.&quot;Year&quot;, (((count(*) * 1000)) \/ b.c2)  \nInner Unique: true   Hash Cond: (fontime.&quot;Year&quot; = b.&quot;Year&quot;)  \n-&gt;  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)        \nOutput: fontime.&quot;Year&quot;, ((count(*) * 1000))        \nRelations: Aggregate on (fontime)        \nRemote SQL: SELECT &quot;Year&quot;, (count(*) * 1000) FROM &quot;default&quot;.ontime WHERE ((&quot;DepDelay&quot; &gt; 10)) GROUP BY &quot;Year&quot;  \n-&gt;  Hash  (cost=999.00..999.00 rows=100000 width=12)        \nOutput: b.c2, b.&quot;Year&quot;        \n-&gt;  Subquery Scan on b  (cost=1.00..999.00 rows=100000 width=12)              \nOutput: b.c2, b.&quot;Year&quot;              \n-&gt;  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)                    \nOutput: fontime_1.&quot;Year&quot;, (count(*))                    \nRelations: Aggregate on (fontime)                    \nRemote SQL: SELECT &quot;Year&quot;, count(*) FROM &quot;default&quot;.ontime GROUP BY &quot;Year&quot;(16 rows)<\/code><\/pre>\n<p><\/p>\n<p>Q14: P\u00e4ring ORDER BY lausega<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">bm=# EXPLAIN VERBOSE SELECT a.&quot;Year&quot;, c1\/c2 FROM(SELECT &quot;Year&quot;, count(*)*1000 AS c1 FROM fontime WHERE &quot;DepDelay&quot; &gt; 10 GROUP BY &quot;Year&quot;) a \n     INNER JOIN(SELECT &quot;Year&quot;, count(*) as c2 FROM fontime GROUP BY &quot;Year&quot;) b  ON a.&quot;Year&quot;= b.&quot;Year&quot; \n     ORDER BY a.&quot;Year&quot;;<\/code><\/pre>\n<p><\/p>\n<p>Q14: P\u00e4ringu plaan ORDER BY lausega<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">QUERY PLAN \nMerge Join\u00a0 (cost=2.00..628498.02 rows=50000000 width=12)\u00a0\u00a0 \nOutput: fontime.&quot;Year&quot;, (((count(*) * 1000)) \/ (count(*)))\u00a0\u00a0 \nInner Unique: true\u00a0\u00a0 Merge Cond: (fontime.&quot;Year&quot; = fontime_1.&quot;Year&quot;)\u00a0\u00a0 \n-&gt;\u00a0 GroupAggregate\u00a0 (cost=1.00..499.01 rows=1 width=12)\u00a0 \u00a0 \u00a0 \u00a0 \nOutput: fontime.&quot;Year&quot;, (count(*) * 1000)\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \nGroup Key: fontime.&quot;Year&quot;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \n-&gt;\u00a0 Foreign Scan on public.fontime\u00a0 (cost=1.00..-1.00 rows=100000 width=4)\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \nRemote SQL: SELECT &quot;Year&quot; FROM &quot;default&quot;.ontime WHERE ((&quot;DepDelay&quot; &gt; 10)) \n            ORDER BY &quot;Year&quot; ASC\u00a0\u00a0 \n-&gt;\u00a0 GroupAggregate\u00a0 (cost=1.00..499.01 rows=1 width=12)\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \nOutput: fontime_1.&quot;Year&quot;, count(*)\u00a0\u00a0 \u00a0 \u00a0 \u00a0 Group Key: fontime_1.&quot;Year&quot;\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \n-&gt;\u00a0 Foreign Scan on public.fontime fontime_1\u00a0 (cost=1.00..-1.00 rows=100000 width=4)\u00a0\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \nRemote SQL: SELECT &quot;Year&quot; FROM &quot;default&quot;.ontime ORDER BY &quot;Year&quot; ASC(16 rows)<\/code><\/pre>\n<p><\/p>\n<p>Kokkuv\u00f5te<\/p>\n<p><\/p>\n<p>Needuste katsetused n\u00e4itavad, et ClickHouse pakub t\u00f5epoolest head j\u00f5udlust, samas kui clickhousedb_fdw toob PostgreSQL-i ClickHouse'i j\u00f5udluse eelised. Kuigi clickhousedb_fdw kasutamisel on teatud \u00fclevaated, on need ebaolulised ja v\u00f5rreldavad j\u00f5udlusega, mida saavutatakse loomuliku k\u00e4ivitamisega ClickHouse andmebaasis. See kinnitab ka, et fdw PostgreSQL-is pakub suurep\u00e4raseid tulemusi.<\/p>\n<p><\/p>\n<p>Clickhouse'i Telegrami vestlus <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/clickhouse_ru\">https:\/\/t.me\/clickhouse_ru<\/a><\/noindex><br \/>\nPostgreSQL-i Telegrami vestlus <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/pgsql\">https:\/\/t.me\/pgsql<\/a><\/noindex><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/511992\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 ClickHouse, \u0430 \u043d\u0435 PostgreSQL. \u042f \u0437\u043d\u0430\u044e, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 ClickHouse \u044f \u043f\u043e\u043b\u0443\u0447\u0430\u044e. \u0411\u0443\u0434\u0443\u0442 \u043b\u0438 \u044d\u0442\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u044f \u043f\u043e\u043b\u0443\u0447\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043a ClickHouse \u0438\u0437 PostgreSQL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (FDW)? \u0418\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0430\u043c\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f PostgreSQL v11, clickhousedb_fdw [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89499,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89498","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 ClickHouse, \u0430 \u043d\u0435 PostgreSQL.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 PostgreSQL, ClickHouse \u0438 clickhousedb_fdw (PostgreSQL) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 ClickHouse, \u0430 \u043d\u0435 PostgreSQL.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-23T11:42:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-23T11:42:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Anal\u00fc\u00fctiliste p\u00e4ringute j\u00f5udluse testimine PostgreSQL-is, ClickHouse'is ja clickhousedb_fdw (PostgreSQL) | ProHoster","description":"Selles uuringus tahtsin vaadata, milliseid j\u00f5udluse parandusi on v\u00f5imalik saavutada, kasutades andmeallikana ClickHouse'i, mitte PostgreSQL-i.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 PostgreSQL, ClickHouse \u0438 clickhousedb_fdw (PostgreSQL) | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 ClickHouse, \u0430 \u043d\u0435 PostgreSQL.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/testirovanie-proizvoditelnosti-analiticheskih-zaprosov-v-postgresql-clickhouse-i-clickhousedb_fdw-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-23T11:42:07+00:00","article:modified_time":"2020-07-23T11:42:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89498","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:10:17","updated":"2022-10-10 22:45:45","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/89498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=89498"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/89498\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/89499"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=89498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=89498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=89498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}