{"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\/da\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","title":{"rendered":"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Det klassiske sp\u00f8rgsm\u00e5l, som en udvikler n\u00e6sten altid stiller sin DBA eller virksomhedsejer \u2013 til PostgreSQL-konsulenten \u2013 lyder n\u00e6sten altid ens: <i>\u00abHvorfor k\u00f8rer foresp\u00f8rgslerne s\u00e5 l\u00e6nge p\u00e5 databasen?\u00bb<\/i><\/p>\n<p>Et traditionelt s\u00e6t \u00e5rsager:<\/p>\n<ul>\n<li><b>ineffektiv algoritme<\/b><br \/>\nn\u00e5r du besluttede at lave en JOIN af flere CTE'er med par af titusinder af poster<\/li>\n<li><b>for\u00e6ldet statistik<\/b><br \/>\nhvis den faktiske fordeling af data i tabellen allerede afviger markant fra det, som ANALYZE sidst har indsamlet<\/li>\n<li><b>\u00abflaskehals\u00bb af ressourcer<\/b><br \/>\nog der ikke er nok dedikerede beregningskr\u00e6fter fra CPU'en, man f\u00e5r konstant millioner af hukommelsesgigabytes eller disken kan ikke f\u00f8lge med alle database \u00ab\u00f8nsker\u00bb<\/li>\n<li><b>l\u00e5sninger<\/b> fra konkurrerende processer<\/li>\n<\/ul>\n<p>\nOg hvis l\u00e5sninger er ret sv\u00e6re at indfange og analysere, s\u00e5 kr\u00e6ver alt andet bare <b>foresp\u00f8rgselsplanen<\/b>, som kan opn\u00e5s med <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/using-explain\">EXPLAIN-s\u00e6tningen<\/a><\/noindex> (<i>er det selvf\u00f8lgelig bedst at bruge EXPLAIN (ANALYZE, BUFFERS) med det samme \u2026<\/i>) eller <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/auto-explain\">auto_explain-modulet<\/a><\/noindex>.<\/p>\n<p>Men som n\u00e6vnt i den samme dokumentation, <\/p>\n<blockquote><p>\u00abAt forst\u00e5 planen er en kunst, og for at mestre det kr\u00e6ves en vis erfaring, \u2026\u00bb<\/p><\/blockquote>\n<p> Men man kan ogs\u00e5 klare sig uden det, hvis man bruger det rette v\u00e6rkt\u00f8j!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nHvordan ser en foresp\u00f8rgselsplan normalt ud? Nogenlunde s\u00e5dan:<\/p>\n<pre><code class=\"plaintext\">Index Scan using pg_class_relname_nsp_index on pg_class (aktuel tid=0.049..0.050 r\u00e6kker=1 loops=1)\n  Indexbetingelse: (relname = $1)\n  Filter: (oid = $0)\n  Buffere: shared hit=4\n  InitPlan 1 (returnerer $0,$1)\n    -&gt;  Limit (aktuel tid=0.019..0.020 r\u00e6kker=1 loops=1)\n          Buffere: shared hit=1\n          -&gt;  Seq Scan on pg_class pg_class_1 (aktuel tid=0.015..0.015 r\u00e6kker=1 loops=1)\n                Filter: (relkind = 'r'::&quot;char&quot;)\n                R\u00e6kker fjernet af Filter: 5\n                Buffere: shared hit=1<\/code><\/pre>\n<p>\neller s\u00e5dan her:<\/p>\n<pre><code class=\"plaintext\">&quot;Append  (omkostning=868.60..878.95 r\u00e6kker=2 bredde=233) (aktuel tid=0.024..0.144 r\u00e6kker=2 loops=1)&quot;\n&quot;  Buffere: shared hit=3&quot;\n&quot;  CTE cl&quot;\n&quot;    -&gt;  Seq Scan on pg_class  (omkostning=0.00..868.60 r\u00e6kker=9972 bredde=537) (aktuel tid=0.016..0.042 r\u00e6kker=101 loops=1)&quot;\n&quot;          Buffere: shared hit=3&quot;\n&quot;  -&gt;  Limit  (omkostning=0.00..0.10 r\u00e6kker=1 bredde=233) (aktuel tid=0.023..0.024 r\u00e6kker=1 loops=1)&quot;\n&quot;        Buffere: shared hit=1&quot;\n&quot;        -&gt;  CTE Scan on cl  (omkostning=0.00..997.20 r\u00e6kker=9972 bredde=233) (aktuel tid=0.021..0.021 r\u00e6kker=1 loops=1)&quot;\n&quot;              Buffere: shared hit=1&quot;\n&quot;  -&gt;  Limit  (omkostning=10.00..10.10 r\u00e6kker=1 bredde=233) (aktuel tid=0.117..0.118 r\u00e6kker=1 loops=1)&quot;\n&quot;        Buffere: shared hit=2&quot;\n&quot;        -&gt;  CTE Scan on cl cl_1  (omkostning=0.00..997.20 r\u00e6kker=9972 bredde=233) (aktuel tid=0.001..0.104 r\u00e6kker=101 loops=1)&quot;\n&quot;              Buffere: shared hit=2&quot;\n&quot;Planl\u00e6gningstid: 0.634 ms&quot;\n&quot;Udf\u00f8relsestid: 0.248 ms&quot;<\/code><\/pre>\n<p>\nMen at l\u00e6se planen direkte fra teksten er meget sv\u00e6rt og uklar:<\/p>\n<ul>\n<li>i noden vises <b>summen af ressourcerne fra undertr\u00e6et<\/b><br \/>\nDet vil sige, for at forst\u00e5, hvor lang tid det tog at udf\u00f8re den specifikke knude, eller hvor meget denne l\u00e6sning fra tabellen hentede data fra disken \u2014 skal man p\u00e5 en eller anden m\u00e5de tr\u00e6kke det ene fra det andet.<\/li>\n<li>Tiden for knuden er n\u00f8dvendig. <b>At multiplicere med loops.<\/b><br \/>\nJa, subtraktion er endnu ikke den mest komplekse operation, man skal lave \"i hovedet\" \u2014 for den oplyste udf\u00f8relsestid er gennemsnitlig for \u00e9n udf\u00f8relse af knuden, og der kan v\u00e6re hundreder af dem.<\/li>\n<li>Og alt dette sammen g\u00f8r det sv\u00e6rt at svare p\u00e5 det vigtigste sp\u00f8rgsm\u00e5l \u2014 s\u00e5 hvem er det? <b>\"Det svageste link\".<\/b>?<\/li>\n<\/ul>\n<p>\nDa vi fors\u00f8gte at forklare alt dette til flere hundrede af vores udviklere, inds\u00e5 vi, at det fra siden ser cirka s\u00e5dan her ud:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/abb07e902639b5ec245851aa4a0edb58.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5, vi har brug for\u2026<\/p>\n<h2>V\u00e6rkt\u00f8j<\/h2>\n<p>\nI det har vi fors\u00f8gt at samle alle n\u00f8glev\u00e6rkt\u00f8jer, der hj\u00e6lper med at forst\u00e5 \"hvem der er skyld i hvad, og hvad der skal g\u00f8res\". Og at dele en del af vores erfaring med samfundet.<br \/>\nM\u00f8dt og brugt \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/\">explain.tensor.ru<\/a><\/noindex> <\/p>\n<h3>Overskuelighed i planer<\/h3>\n<p>\nEr det let at forst\u00e5 planen, n\u00e5r den ser s\u00e5dan ud?<\/p>\n<pre><code class=\"plaintext\">Seq Scan on pg_class (aktuel tid=0.009..1.304 r\u00e6kker=6609 loops=1)\n  Buffers: shared hit=263\nPlanl\u00e6gningstid: 0.108 ms\nUdf\u00f8relsestid: 1.800 ms\n<\/code><\/pre>\n<p>\nIkke rigtig.<\/p>\n<p>Men s\u00e5dan her, <b>i forkortet form,<\/b>, n\u00e5r n\u00f8gletal er adskilt \u2014 er det allerede meget klarere:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/18404ce800de847f1934ac2c7fef10be.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMen hvis planen er mere kompleks \u2014 vil <b>cirkeldiagram over tidsfordelingen<\/b> for knuderne hj\u00e6lpe:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/ca9fdd07278801e4f3ad15e997efc1a0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg for de mest komplekse varianter kommer <b>udf\u00f8relsesdiagrammet<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/c03f358858206d7ccae20fd8142baa8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor eksempel er der tilf\u00e6lde, hvor planen kan have mere end \u00e9n reel rod:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/ea4f3f498737e9cc3f8f40c16a5bd1d7.png\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/267273e8491d6b4403442672612c33ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Strukturelle hints<\/h3>\n<p>\nMen hvis hele strukturen af planen og dens svage punkter allerede er opdelt og synlige \u2014 hvorfor ikke fremh\u00e6ve dem for udvikleren og forklare \"p\u00e5 menneskesprog\"?<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/0e7157a09f7f5707e769cc1d6a8f3af8.png\" style=\"display:block;margin: 0 auto;\" \/>Vi har allerede samlet et par dusin s\u00e5danne anbefalingsskabeloner.<\/p>\n<h3>Linje-for-linje profilerer af foresp\u00f8rgsler<\/h3>\n<p>\nNu, hvis man l\u00e6gger den analyserede plan oven p\u00e5 den oprindelige foresp\u00f8rgsel, kan man se, hvor meget tid der gik p\u00e5 hver enkelt operator \u2014 omtrent s\u00e5dan her:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/0766d331798d529363d10006ace211f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 eller endda s\u00e5dan her:<\/p>\n<p><img decoding=\"async\" alt=\"Hvad EXPLAIN tie, og hvordan man f\u00e5r det til at tale\" src=\"\/wp-content\/uploads\/2020\/03\/4efd23d84792c5a7f54b40e86ff17353.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Parameterinds\u00e6tning i foresp\u00f8rgslen<\/h3>\n<p>\nHvis du har \"h\u00e6ftet\" foresp\u00f8rgslen til planen, men ogs\u00e5 dens parametre fra DETAIL-strengen i loggen, kan du kopiere den yderligere i en af varianterne:<\/p>\n<ul>\n<li>med indsat v\u00e6rdier i foresp\u00f8rgslen<br \/>\nfor direkte udf\u00f8relse p\u00e5 din egen database og videre profilering.<\/p>\n<pre><code class=\"sql\">SELECT 'const', 'param'::text;<\/code><\/pre>\n<\/li>\n<li>med indsat v\u00e6rdier via PREPARE\/EXECUTE.<br \/>\ntil at simulere planl\u00e6ggerens arbejde, n\u00e5r den parameteriske del kan ignoreres \u2014 for eksempel ved arbejde med sektionerede tabeller<\/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>Arkiv over planer<\/h3>\n<p>\nInds\u00e6t, analyser og del med kolleger! Planerne forbliver i arkivet, og du kan vende tilbage til dem senere: <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/archive\/\">explain.tensor.ru\/archive<\/a><\/noindex><\/p>\n<p>Men hvis du ikke \u00f8nsker, at andre skal se din plan, skal du huske at s\u00e6tte flueben ved \"ikke offentligg\u00f8re i arkivet\".<\/p>\n<p>I de kommende artikler vil jeg tale om de vanskeligheder og l\u00f8sninger, der opst\u00e5r ved analyse af planen.<br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Hvad EXPLAIN ikke siger, og hvordan man f\u00e5r det til at tale | ProHoster","description":"Det klassiske sp\u00f8rgsm\u00e5l, som en udvikler stiller til sin DBA eller en virksomheds ejer \u2014 til en konsulent om PostgreSQL, lyder n\u00e6sten altid det samme: \"Hvorfor tager foresp\u00f8rgsler s\u00e5 lang tid at udf\u00f8re p\u00e5 databasen?\".","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/75678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=75678"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/75678\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/75679"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=75678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=75678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=75678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}