{"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":"Was EXPLAIN verschweigt und wie man es zum Reden bringt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die klassische Frage, mit der ein Entwickler zu seinem DBA oder dem Gesch\u00e4ftsinhaber \u2014 zum PostgreSQL-Berater \u2014 kommt, klingt fast immer gleich: <i>\u201eWarum dauern die Abfragen auf der Datenbank so lange?\u201c<\/i><\/p>\n<p>Der traditionelle Satz von Gr\u00fcnden:<\/p>\n<ul>\n<li><b>ineffizienter Algorithmus<\/b><br \/>\nwenn Sie beschlossen haben, mehrere CTE \u00fcber ein paar Zehntausend Datens\u00e4tze zu verkn\u00fcpfen<\/li>\n<li><b>nicht aktuelle Statistiken.<\/b><br \/>\nWenn die tats\u00e4chliche Verteilung der Daten in der Tabelle bereits erheblich von der zuletzt mit ANALYZE gesammelten abweicht<\/li>\n<li><b>ein Ressourcenengpass.<\/b><br \/>\nund die zugewiesenen CPU-Rechenressourcen nicht ausreichen, st\u00e4ndig werden Gigabyte an Arbeitsspeicher ben\u00f6tigt oder die Festplatte kommt mit all den \u201eW\u00fcnschen\u201c der DB nicht nach<\/li>\n<li><b>von Sperren<\/b> von konkurrierenden Prozessen<\/li>\n<\/ul>\n<p>\nUnd wenn die Sperren ziemlich 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<\/a><\/noindex> (<i>Ist es nat\u00fcrlich besser, gleich EXPLAIN (ANALYZE, BUFFERS) \u2026<\/i>) oder <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/auto-explain\">dem auto_explain-Modul<\/a><\/noindex>.<\/p>\n<p>Aber, wie in derselben Dokumentation gesagt, <\/p>\n<blockquote><p>\u201eDas Verst\u00e4ndnis des Plans ist eine Kunst, und um es zu beherrschen, ben\u00f6tigt man gewisse Erfahrung, \u2026\u201c<\/p><\/blockquote>\n<p> Aber man kann auch ohne ihn auskommen, wenn man das richtige Werkzeug nutzt!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWie sieht ein Abfrageplan normalerweise aus? So etwa:<\/p>\n<pre><code class=\"plaintext\">Index Scan using pg_class_relname_nsp_index auf pg_class (tats\u00e4chliche Zeit=0.049..0.050 rows=1 loops=1)\n  Index Bedingung: (relname = $1)\n  Filter: (oid = $0)\n  Buffers: shared hit=4\n  InitPlan 1 (gibt $0,$1 zur\u00fcck)\n    -&gt;  Limit (tats\u00e4chliche Zeit=0.019..0.020 rows=1 loops=1)\n          Buffers: shared hit=1\n          -&gt;  Seq Scan auf pg_class pg_class_1 (tats\u00e4chliche Zeit=0.015..0.015 rows=1 loops=1)\n                Filter: (relkind = 'r'::&quot;char&quot;)\n                Zeilen vom Filter entfernt: 5\n                Buffers: shared hit=1<\/code><\/pre>\n<p>\noder so:<\/p>\n<pre><code class=\"plaintext\">&quot;Append  (Kosten=868.60..878.95 Zeilen=2 Breite=233) (tats\u00e4chliche Zeit=0.024..0.144 Zeilen=2 Schleifen=1)&quot;\n&quot;  Buffers: shared hit=3&quot;\n&quot;  CTE cl&quot;\n&quot;    -&gt;  Seq Scan auf pg_class  (Kosten=0.00..868.60 Zeilen=9972 Breite=537) (tats\u00e4chliche Zeit=0.016..0.042 Zeilen=101 Schleifen=1)&quot;\n&quot;          Buffers: shared hit=3&quot;\n&quot;  -&gt;  Limit  (Kosten=0.00..0.10 Zeilen=1 Breite=233) (tats\u00e4chliche Zeit=0.023..0.024 Zeilen=1 Schleifen=1)&quot;\n&quot;        Buffers: shared hit=1&quot;\n&quot;        -&gt;  CTE Scan auf cl  (Kosten=0.00..997.20 Zeilen=9972 Breite=233) (tats\u00e4chliche Zeit=0.021..0.021 Zeilen=1 Schleifen=1)&quot;\n&quot;              Buffers: shared hit=1&quot;\n&quot;  -&gt;  Limit  (Kosten=10.00..10.10 Zeilen=1 Breite=233) (tats\u00e4chliche Zeit=0.117..0.118 Zeilen=1 Schleifen=1)&quot;\n&quot;        Buffers: shared hit=2&quot;\n&quot;        -&gt;  CTE Scan auf cl cl_1  (Kosten=0.00..997.20 Zeilen=9972 Breite=233) (tats\u00e4chliche Zeit=0.001..0.104 Zeilen=101 Schleifen=1)&quot;\n&quot;              Buffers: shared hit=2&quot;\n&quot;Planungszeit: 0.634 ms&quot;\n&quot;Ausf\u00fchrungszeit: 0.248 ms&quot;<\/code><\/pre>\n<p>\nAber einen Plan \u201evom Blatt\u201c zu lesen, ist sehr schwierig und un\u00fcbersichtlich:<\/p>\n<ul>\n<li>im Knoten wird <b>die Summe der Ressourcen des Teilbaums<\/b><br \/>\nDas hei\u00dft, um zu verstehen, wie viel Zeit f\u00fcr die Ausf\u00fchrung eines bestimmten Knotens ben\u00f6tigt wurde, oder wie viele Daten genau bei diesem Lesevorgang aus der Tabelle vom Datentr\u00e4ger geholt wurden \u2014 muss man irgendwie eines vom anderen abziehen<\/li>\n<li>die Zeit des Knotens muss <b>mit loops multipliziert werden<\/b><br \/>\nJa, Subtraktion ist noch nicht die schwierigste Operation, die man \"im Kopf\" machen muss \u2013 denn die Ausf\u00fchrungszeit wird als Durchschnitt f\u00fcr eine Ausf\u00fchrung eines Knotens angegeben, und davon kann es Hunderte geben.<\/li>\n<li>Nun, und all das zusammen erschwert es, die Hauptfrage zu beantworten \u2013 wer ist also derjenige? <b>\"Das schw\u00e4chste Glied\"<\/b>?<\/li>\n<\/ul>\n<p>\nAls wir versuchten, all dies einer mehreren Hundert unserer Entwickler zu erkl\u00e4ren, merkten wir, dass es von au\u00dfen ungef\u00e4hr so aussieht:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/abb07e902639b5ec245851aa4a0edb58.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlso, brauchen wir\u2026<\/p>\n<h2>Tool<\/h2>\n<p>\nIn ihm haben wir versucht, alle Schl\u00fcsselmechanismen zusammenzustellen, die helfen, gem\u00e4\u00df dem Plan und der Anfrage zu verstehen, \"wer schuld ist und was zu tun ist\". Nun, und einen Teil unserer Erfahrungen mit der Gemeinschaft zu teilen.<br \/>\nWillkommen und nutzen Sie es \u2014 <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  Buffers: 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 verst\u00e4ndlicher:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/18404ce800de847f1934ac2c7fef10be.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAber wenn der Plan komplizierter ist \u2013 hilft uns <b>das Tortendiagramm der Zeitverteilung<\/b> nach Knoten:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/ca9fdd07278801e4f3ad15e997efc1a0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNun, und f\u00fcr die kompliziertesten Varianten eilt zur Hilfe <b>das Ausf\u00fchrungsdiagramm<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/c03f358858206d7ccae20fd8142baa8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZum Beispiel gibt es durchaus nicht triviale Situationen, in denen ein Plan mehr als einen tats\u00e4chlichen Wurzelknoten haben kann:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/ea4f3f498737e9cc3f8f40c16a5bd1d7.png\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden 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>\nNun, und wenn die gesamte Struktur des Plans und seine Schwachstellen bereits offen gelegt und sichtbar sind \u2013 warum nicht dem Entwickler hervorheben und in \"normaler Sprache\" erkl\u00e4ren?<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/0e7157a09f7f5707e769cc1d6a8f3af8.png\" style=\"display:block;margin: 0 auto;\" \/>Solche Empfehlungsvorlagen haben wir bereits ein paar Dutzend gesammelt.<\/p>\n<h3>Zeilenweiser Profiling des Antrags<\/h3>\n<p>\nJetzt, wenn wir den analysierten Plan mit dem urspr\u00fcnglichen Antrag \u00fcberlagern, k\u00f6nnen wir sehen, wie viel Zeit f\u00fcr jeden einzelnen Operator aufgewendet wurde \u2013 ungef\u00e4hr so:<\/p>\n<p><img decoding=\"async\" alt=\"Was EXPLAIN verschweigt und wie man es zum Reden 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=\"Was EXPLAIN verschweigt und wie man es zum Reden bringt\" src=\"\/wp-content\/uploads\/2020\/03\/4efd23d84792c5a7f54b40e86ff17353.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Parameterersetzung im Antrag<\/h3>\n<p>\nWenn Sie den Antrag nicht nur mit dem Plan, sondern auch mit seinen Parametern aus der DETAIL-Zeile des Protokolls verkn\u00fcpft haben, k\u00f6nnen Sie ihn zus\u00e4tzlich in einer der Varianten kopieren:<\/p>\n<ul>\n<li>mit Ersetzung der Werte im Antrag<br \/>\nf\u00fcr die direkte Ausf\u00fchrung in Ihrer Datenbank und anschlie\u00dfendes Profiling<\/p>\n<pre><code class=\"sql\">SELECT 'const', 'param'::text;<\/code><\/pre>\n<\/li>\n<li>mit Ersetzung der Werte \u00fcber PREPARE\/EXECUTE<br \/>\nzum Emulieren der Planerarbeit, wenn die parametrische Komponente 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>Archiv der Pl\u00e4ne<\/h3>\n<p>\nF\u00fcgen Sie ein, analysieren Sie und teilen Sie mit Ihren Kollegen! Die Pl\u00e4ne bleiben im Archiv, und Sie k\u00f6nnen sp\u00e4ter darauf zur\u00fcckkommen: <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 andere Ihren Plan sehen, vergessen Sie nicht, das K\u00e4stchen \u201enicht im Archiv ver\u00f6ffentlichen\u201c anzukreuzen.<\/p>\n<p>In den n\u00e4chsten Artikeln werde ich \u00fcber die Schwierigkeiten und L\u00f6sungen sprechen, die beim Analysieren 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 5.0.1.1 - 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 .\" \/>\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) 5.0.1.1\" \/>\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 .\" \/>\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 Reden bringt | ProHoster","description":"Die h\u00e4ufigste Frage, die ein Entwickler an seinen DBA oder einen Unternehmensinhaber \u2014 an einen PostgreSQL-Berater \u2014 richtet, klingt fast immer gleich: \u201eWarum dauern die Abfragen in der Datenbank so lange?\u201c .","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 .","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}