{"id":75678,"date":"2020-03-27T19:42:27","date_gmt":"2020-03-27T17:42:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit"},"modified":"2020-03-27T19:42:27","modified_gmt":"2020-03-27T17:42:27","slug":"o-chem-molchit-explain-i-kak-ego-razgovorit","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","title":{"rendered":"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Eine klassische Frage, die Entwickler an ihren DBA oder Gesch\u00e4ftsinhaber \u2013 an einen PostgreSQL-Berater \u2013 stellen, lautet fast immer gleich: <i>\u201eWarum dauern die Abfragen auf der Datenbank so lange?\u201c<\/i><\/p>\n<p>Eine traditionelle Reihe von Gr\u00fcnden:<\/p>\n<ul>\n<li><b>ineffizienter Algorithmus<\/b><br \/>\nwenn Sie beschlossen haben, mehrere CTEs mit mehreren Zehntausend Datens\u00e4tzen zu verkn\u00fcpfen<\/li>\n<li><b>veraltete Statistiken.<\/b><br \/>\n\u0435\u0441\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0439 ANALYZE&#8217;\u043e\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437<\/li>\n<li><b>\"Engpass\" bei den Ressourcen<\/b><br \/>\nund es an den zugewiesenen CPU-Ressourcen mangelt, Gigabytes an Speicher st\u00e4ndig voll ausgelastet sind oder die Festplatte den vielen \u201eW\u00fcnschen\u201c der DB nicht gerecht wird<\/li>\n<li><b>Sperrung<\/b> wegen konkurrierender Prozesse<\/li>\n<\/ul>\n<p>\nUnd wenn Sperren schwer zu erfassen und zu analysieren sind, dann gen\u00fcgt uns f\u00fcr alles andere <b>der Abfrageplan<\/b>, den man mit Hilfe von <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/using-explain\">dem EXPLAIN-Befehl erhalten kann<\/a><\/noindex> (<i>\u043b\u0443\u0447\u0448\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0440\u0430\u0437\u0443 EXPLAIN (ANALYZE, BUFFERS) &#8230;<\/i>) oder <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/auto-explain\">dem Modul auto_explain<\/a><\/noindex>.<\/p>\n<p>Aber, wie in der betreffenden Dokumentation erw\u00e4hnt, <\/p>\n<blockquote><p>\u201eDas Verst\u00e4ndnis des Plans ist eine Kunst, und um diese zu meistern, ben\u00f6tigt man eine gewisse Erfahrung ...\u201c<\/p><\/blockquote>\n<p> Aber man kann auch ohne diese auskommen, wenn man ein geeignetes Werkzeug verwendet!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWie sieht ein Anfrageplan normalerweise aus? So etwa:<\/p>\n<pre><code class=\"plaintext\">Index Scan using pg_class_relname_nsp_index on pg_class (actual time=0.049..0.050 rows=1 loops=1)\n  Index Cond: (relname = $1)\n  Filter: (oid = $0)\n  Buffers: shared hit=4\n  InitPlan 1 (returns $0,$1)\n    -&gt;  Limit (actual time=0.019..0.020 rows=1 loops=1)\n          Buffers: shared hit=1\n          -&gt;  Seq Scan on pg_class pg_class_1 (actual time=0.015..0.015 rows=1 loops=1)\n                Filter: (relkind = 'r'::&quot;char&quot;)\n                Rows Removed by Filter: 5\n                Buffers: shared hit=1<\/code><\/pre>\n<p>\noder so:<\/p>\n<pre><code class=\"plaintext\">&quot;Append  (cost=868.60..878.95 rows=2 width=233) (actual time=0.024..0.144 rows=2 loops=1)&quot;\n&quot;  Buffers: shared hit=3&quot;\n&quot;  CTE cl&quot;\n&quot;    -&gt;  Seq Scan on pg_class  (cost=0.00..868.60 rows=9972 width=537) (actual time=0.016..0.042 rows=101 loops=1)&quot;\n&quot;          Buffers: shared hit=3&quot;\n&quot;  -&gt;  Limit  (cost=0.00..0.10 rows=1 width=233) (actual time=0.023..0.024 rows=1 loops=1)&quot;\n&quot;        Buffers: shared hit=1&quot;\n&quot;        -&gt;  CTE Scan on cl  (cost=0.00..997.20 rows=9972 width=233) (actual time=0.021..0.021 rows=1 loops=1)&quot;\n&quot;              Buffers: shared hit=1&quot;\n&quot;  -&gt;  Limit  (cost=10.00..10.10 rows=1 width=233) (actual time=0.117..0.118 rows=1 loops=1)&quot;\n&quot;        Buffers: shared hit=2&quot;\n&quot;        -&gt;  CTE Scan on cl cl_1  (cost=0.00..997.20 rows=9972 width=233) (actual time=0.001..0.104 rows=101 loops=1)&quot;\n&quot;              Buffers: shared hit=2&quot;\n&quot;Planning Time: 0.634 ms&quot;\n&quot;Execution Time: 0.248 ms&quot;<\/code><\/pre>\n<p>\nAber den Plan als Text \u00bbvon der Liste\u00ab zu lesen, ist sehr schwierig und un\u00fcbersichtlich:<\/p>\n<ul>\n<li>im Knoten wird ausgegeben <b>die Summe der Ressourcen des Teilbaums<\/b><br \/>\nDas bedeutet, um zu verstehen, wie viel Zeit f\u00fcr die Ausf\u00fchrung eines bestimmten Knotens aufgewendet wurde oder wie genau dieses Lesen der Daten aus der Tabelle von der Festplatte abgerufen wurde \u2013 muss man irgendwie das Eine vom Anderen abziehen.<\/li>\n<li>Die Knotenzeit ist erforderlich. <b>Multiplizieren mit loops.<\/b><br \/>\nJa, Subtraktion ist noch nicht die komplizierteste Operation, die man \u201eim Kopf\u201c durchf\u00fchren muss \u2013 schlie\u00dflich wird die Ausf\u00fchrungszeit als Durchschnitt f\u00fcr einen einzelnen Knoten angegeben, und es k\u00f6nnen Hunderte von ihnen vorhanden sein.<\/li>\n<li>Nun, all das zusammen erschwert die Antwort auf die Hauptfrage \u2013 also, wer ist <b>das \u201eschw\u00e4chste Glied\u201c?<\/b>?<\/li>\n<\/ul>\n<p>\nAls wir versuchten, all dies mehreren Hundert unserer Entwickler zu erkl\u00e4ren, stellten wir fest, dass das von au\u00dfen etwa so aussieht:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/abb07e902639b5ec245851aa4a0edb58.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAh, das hei\u00dft, wir brauchen\u2026<\/p>\n<h2>Ein Tool<\/h2>\n<p>\nIn diesem haben wir versucht, alle Schl\u00fcsselmechaniken zu sammeln, die helfen, anhand des Plans und der Anfrage zu verstehen, \u201ewer schuld ist und was zu tun ist\u201c. Und au\u00dferdem wollten wir einen Teil unseres Wissens mit der Gemeinschaft teilen.<br \/>\nTreffen Sie und nutzen Sie \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/\">explain.tensor.ru<\/a><\/noindex> <\/p>\n<h3>Anschaulichkeit der Pl\u00e4ne<\/h3>\n<p>\nIst es leicht, den Plan zu verstehen, wenn er so aussieht?<\/p>\n<pre><code class=\"plaintext\">Seq Scan on pg_class (tats\u00e4chliche Zeit=0.009..1.304 Zeilen=6609 Schleifen=1)\n  Buffer: shared hit=263\nPlanungszeit: 0,108 ms\nAusf\u00fchrungszeit: 1,800 ms\n<\/code><\/pre>\n<p>\nNicht wirklich.<\/p>\n<p>Aber so, <b>in verk\u00fcrzter Form<\/b>, wenn die Schl\u00fcsselindikatoren getrennt sind \u2013 ist es bereits viel klarer:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/18404ce800de847f1934ac2c7fef10be.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAber wenn der Plan komplexer ist, kommt Hilfe von <b>Kreisdiagramm der Zeitverteilung<\/b> nach Knoten:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/ca9fdd07278801e4f3ad15e997efc1a0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr die kompliziertesten Varianten steht uns auch <b>die Ausf\u00fchrungsdiagramm<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/c03f358858206d7ccae20fd8142baa8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs gibt tats\u00e4chlich Nicht-Trivial-F\u00e4lle, in denen ein Plan mehr als eine tats\u00e4chliche Wurzel haben kann:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/ea4f3f498737e9cc3f8f40c16a5bd1d7.png\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/267273e8491d6b4403442672612c33ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Strukturelle Hinweise<\/h3>\n<p>\nWenn die gesamte Struktur des Plans und dessen Schwachstellen bereits aufgegliedert und sichtbar sind, warum dann nicht dem Entwickler markieren und \u00abin verst\u00e4ndlicher Sprache\u00bb erkl\u00e4ren?<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/0e7157a09f7f5707e769cc1d6a8f3af8.png\" style=\"display:block;margin: 0 auto;\" \/>Solcher Empfehlungsvorlagen haben wir bereits einige Dutzend gesammelt.<\/p>\n<h3>Zeilenprofilierer der Anfrage<\/h3>\n<p>\nWenn wir nun den analysierten Plan mit der urspr\u00fcnglichen Anfrage kombinieren, k\u00f6nnen wir sehen, wie viel Zeit jeder einzelne Operator in Anspruch genommen hat \u2014 etwa so:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/0766d331798d529363d10006ace211f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 oder sogar so:<\/p>\n<p><img decoding=\"async\" alt=\"Wovon EXPLAIN schweigt und wie man es zum Sprechen bringt\" src=\"\/wp-content\/uploads\/2020\/03\/4efd23d84792c5a7f54b40e86ff17353.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Parameterersetzung in der Anfrage<\/h3>\n<p>\nWenn Sie nicht nur die Anfrage, sondern auch deren Parameter aus der DETAIL-Zeile des Logs an den Plan angeh\u00e4ngt haben, k\u00f6nnen Sie ihn in einer der Varianten zus\u00e4tzlich kopieren:<\/p>\n<ul>\n<li>mit den Werten in der Anfrage ersetzt<br \/>\nzum unmittelbaren Ausf\u00fchren auf Ihrer Datenbank und zur weiteren Profilierung<\/p>\n<pre><code class=\"sql\">SELECT 'const', 'param'::text;<\/code><\/pre>\n<\/li>\n<li>mit den Werten \u00fcber PREPARE\/EXECUTE ersetzt<br \/>\nf\u00fcr die Simulation der Arbeitsweise des Planers, wenn der parametrische Teil ignoriert werden kann \u2013 zum Beispiel bei der Arbeit mit partitionierten Tabellen<\/p>\n<pre><code class=\"sql\">DEALLOCATE ALL;\nPREPARE q(text) AS SELECT 'const', $1::text;\nEXECUTE q('param'::text);\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3>Planarchive<\/h3>\n<p>\nF\u00fcgen Sie hinzu, analysieren Sie, teilen Sie mit Kollegen! Die Pl\u00e4ne bleiben im Archiv, und Sie k\u00f6nnen sp\u00e4ter darauf zur\u00fcckgreifen: <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/archive\/\">explain.tensor.ru\/archive<\/a><\/noindex><\/p>\n<p>Wenn Sie jedoch nicht m\u00f6chten, dass Ihr Plan von anderen gesehen wird, vergessen Sie nicht, das K\u00e4stchen \"nicht im Archiv ver\u00f6ffentlichen\" anzukreuzen.<\/p>\n<p>In den kommenden Artikeln werde ich \u00fcber die Herausforderungen und L\u00f6sungen sprechen, die bei der Analyse von Pl\u00e4nen auftreten.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/477624\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0441\u0432\u043e\u0435\u043c\u0443 DBA \u0438\u043b\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u2014 \u043a \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442\u0443 \u043f\u043e PostgreSQL, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e: \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e?\u00bb \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u0447\u0438\u043d: \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c JOIN \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 CTE \u043f\u043e \u043f\u0430\u0440\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0435\u0441\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":75679,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-75678","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0441\u0432\u043e\u0435\u043c\u0443 DBA \u0438\u043b\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u2014 \u043a \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442\u0443 \u043f\u043e PostgreSQL, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e: \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e?\u00bb \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u0447\u0438\u043d: \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c JOIN \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 CTE \u043f\u043e \u043f\u0430\u0440\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0435\u0441\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\" \/>\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\/de\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\u041e \u0447\u0435\u043c \u043c\u043e\u043b\u0447\u0438\u0442 EXPLAIN, \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0441\u0432\u043e\u0435\u043c\u0443 DBA \u0438\u043b\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u2014 \u043a \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442\u0443 \u043f\u043e PostgreSQL, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e: \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e?\u00bb \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u0447\u0438\u043d: \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c JOIN \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 CTE \u043f\u043e \u043f\u0430\u0440\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0435\u0441\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit\" \/>\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-03-27T17:42:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-27T17:42:27+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\udd47Was EXPLAIN verschweigt und wie man es zum Sprechen bringt | ProHoster","description":"Die klassische Frage, mit der ein Entwickler zu seinem DBA oder ein Gesch\u00e4ftsinhaber zu einem PostgreSQL-Berater kommt, klingt fast immer gleich: \"Warum dauern die Abfragen in der Datenbank so lange?\" Die traditionellen Gr\u00fcnde: ineffizientes Algorithmus, wenn Sie entschieden haben, mehrere CTEs \u00fcber ein paar Zehntausend Datens\u00e4tze zu verbinden, veraltete Statistiken, wenn die tats\u00e4chliche Datenverteilung in der Tabelle bereits stark abweicht.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\u041e \u0447\u0435\u043c \u043c\u043e\u043b\u0447\u0438\u0442 EXPLAIN, \u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c | ProHoster","og:description":"\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0441\u0432\u043e\u0435\u043c\u0443 DBA \u0438\u043b\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u2014 \u043a \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442\u0443 \u043f\u043e PostgreSQL, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e: \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e?\u00bb \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u0447\u0438\u043d: \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c JOIN \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 CTE \u043f\u043e \u043f\u0430\u0440\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0435\u0441\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","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-03-27T17:42:27+00:00","article:modified_time":"2020-03-27T17:42:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"75678","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 17:51:29","updated":"2022-09-30 01:03:00"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/75678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=75678"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/75678\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/75679"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=75678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=75678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=75678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}