{"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\/nl\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","title":{"rendered":"Waar EXPLAIN om zwijgt, en hoe het te laten spreken","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Een klassieke vraag die een ontwikkelaar bijna altijd aan zijn DBA of een bedrijfsleider aan de PostgreSQL-consultant stelt, klinkt vrijwel altijd hetzelfde: <i>\u201eWaarom duren de queries zo lang op de database?\u201d<\/i><\/p>\n<p>Een traditioneel scala aan oorzaken:<\/p>\n<ul>\n<li><b>een ineffici\u00ebnte algoritme<\/b><br \/>\nwanneer je besloot meerdere CTE's te JOINEN met een paar tienduizend records<\/li>\n<li><b>verouderde statistieken<\/b><br \/>\nals de feitelijke verdeling van gegevens in de tabel al sterk afwijkt van wat ANALYZE laatst heeft verzameld<\/li>\n<li><b>\u201eknelpunten\u201d in de middelen<\/b><br \/>\nen er niet genoeg toegewezen rekenkracht van CPU is, of er voortdurend gigabytes aan geheugen worden doorgegeven of de schijf achterblijft bij alle \u201ewensen\u201d van de database<\/li>\n<li><b>blokkering<\/b> door concurrerende processen<\/li>\n<\/ul>\n<p>\nEn als het moeilijk is om blokkades te vangen en te analyseren, hebben we voor de rest genoeg aan <b>het uitvoeringsplan<\/b>, dat we kunnen verkrijgen met de <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/using-explain\">EXPLAIN-instructie<\/a><\/noindex> (<i>is het beter om meteen EXPLAIN (ANALYZE, BUFFERS) te doen \u2026<\/i>) of <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/auto-explain\">de auto_explain-module<\/a><\/noindex>.<\/p>\n<p>Maar zoals in dezelfde documentatie is vermeld, <\/p>\n<blockquote><p>\u201eHet begrijpen van een plan is een kunst, en om het meester te maken is bepaalde ervaring nodig, \u2026\u201d<\/p><\/blockquote>\n<p> Maar je kunt ook zonder het, als je een geschikt hulpmiddel gebruikt!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nHoe ziet een uitvoeringsplan eruit? Zoiets:<\/p>\n<pre><code class=\"plaintext\">Index Scan met gebruik van pg_class_relname_nsp_index op pg_class (feitelijke tijd=0.049..0.050 rijen=1 lussen=1)\n  Index Voorwaarde: (relname = $1)\n  Filter: (oid = $0)\n  Buffers: gedeeld hit=4\n  InitPlan 1 (geeft $0,$1 terug)\n    -&gt;  Limiet (feitelijke tijd=0.019..0.020 rijen=1 lussen=1)\n          Buffers: gedeeld hit=1\n          -&gt;  Seq Scan op pg_class pg_class_1 (feitelijke tijd=0.015..0.015 rijen=1 lussen=1)\n                Filter: (relkind = 'r'::&quot;char&quot;)\n                Rijen verwijderd door Filter: 5\n                Buffers: gedeeld hit=1<\/code><\/pre>\n<p>\nof zo:<\/p>\n<pre><code class=\"plaintext\">&quot;Append  (kosten=868.60..878.95 rijen=2 breedte=233) (feitelijke tijd=0.024..0.144 rijen=2 lussen=1)&quot;\n&quot;  Buffers: gedeeld hit=3&quot;\n&quot;  CTE cl&quot;\n&quot;    -&gt;  Seq Scan op pg_class  (kosten=0.00..868.60 rijen=9972 breedte=537) (feitelijke tijd=0.016..0.042 rijen=101 lussen=1)&quot;\n&quot;          Buffers: gedeeld hit=3&quot;\n&quot;  -&gt;  Limiet  (kosten=0.00..0.10 rijen=1 breedte=233) (feitelijke tijd=0.023..0.024 rijen=1 lussen=1)&quot;\n&quot;        Buffers: gedeeld hit=1&quot;\n&quot;        -&gt;  CTE Scan op cl  (kosten=0.00..997.20 rijen=9972 breedte=233) (feitelijke tijd=0.021..0.021 rijen=1 lussen=1)&quot;\n&quot;              Buffers: gedeeld hit=1&quot;\n&quot;  -&gt;  Limiet  (kosten=10.00..10.10 rijen=1 breedte=233) (feitelijke tijd=0.117..0.118 rijen=1 lussen=1)&quot;\n&quot;        Buffers: gedeeld hit=2&quot;\n&quot;        -&gt;  CTE Scan op cl cl_1  (kosten=0.00..997.20 rijen=9972 breedte=233) (feitelijke tijd=0.001..0.104 rijen=101 lussen=1)&quot;\n&quot;              Buffers: gedeeld hit=2&quot;\n&quot;Planningstijd: 0.634 ms&quot;\n&quot;Uitvoeringstijd: 0.248 ms&quot;<\/code><\/pre>\n<p>\nMaar het is zeer moeilijk en onduidelijk om het plan in tekstvorm \u201evan papier\u201d te lezen:<\/p>\n<ul>\n<li>in de knoop wordt <b>de som van de middelen van de subboom<\/b><br \/>\nDat wil zeggen, om te begrijpen hoeveel tijd het heeft gekost om een specifieke node uit te voeren, of hoeveel deze gegevens uit de tabel van de schijf heeft opgevraagd - je moet inderdaad het een van het ander aftrekken.<\/li>\n<li>De tijd van de node is nodig. <b>Je moet vermenigvuldigen met loops.<\/b><br \/>\nJa, aftrekken is nog niet de meest complexe operatie die je 'in je hoofd' moet uitvoeren - de uitvoertijd is gemiddeld voor \u00e9\u00e9n uitvoering van de node, en er kunnen er honderden zijn.<\/li>\n<li>Nou, en al dit samen maakt het moeilijk om de belangrijkste vraag te beantwoorden - wie is dat? <b>de \"zwakste schakel\".<\/b>?<\/li>\n<\/ul>\n<p>\nToen we dit probeerden uit te leggen aan enkele honderden van onze ontwikkelaars, beseften we dat het van buitenaf ongeveer zo uitziet:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/abb07e902639b5ec245851aa4a0edb58.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAha, dus we hebben nodig...<\/p>\n<h2>Hulpmiddel<\/h2>\n<p>\nHierin hebben we geprobeerd alle belangrijke mechanismen te verzamelen die helpen om op basis van plannen en verzoeken te begrijpen 'wie is de schuldige en wat te doen'. En ook een deel van onze ervaring te delen met de gemeenschap.<br \/>\nOntmoet en gebruik - <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/\">explain.tensor.ru<\/a><\/noindex> <\/p>\n<h3>Visualisering van plannen.<\/h3>\n<p>\nIs het gemakkelijk om een plan te begrijpen wanneer het er zo uitziet?<\/p>\n<pre><code class=\"plaintext\">Seq Scan op pg_class (werkelijke tijd=0.009..1.304 rijen=6609 loops=1)\n  Buffers: shared hit=263\nPlannings Tijd: 0.108 ms\nUitvoering Tijd: 1.800 ms\n<\/code><\/pre>\n<p>\nNiet echt.<\/p>\n<p>Maar zo, <b>in verkorte vorm,<\/b>, wanneer de belangrijke indicatoren zijn gescheiden - wordt het al veel duidelijker:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/18404ce800de847f1934ac2c7fef10be.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMaar als het plan complexer is, komt er hulp van <b>taartdiagram van tijddistributie<\/b> per node:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/ca9fdd07278801e4f3ad15e997efc1a0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNou, en voor de meest complexe varianten komt er hulp van <b>uitvoeringsdiagram.<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/c03f358858206d7ccae20fd8142baa8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBijvoorbeeld, er zijn nogal niet-triviale situaties waarin een plan meer dan \u00e9\u00e9n feitelijke root kan hebben:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/ea4f3f498737e9cc3f8f40c16a5bd1d7.png\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/267273e8491d6b4403442672612c33ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Structurele aanwijzingen.<\/h3>\n<p>\nNou, als de hele structuur van het plan en zijn pijnpunten al zijn uitgesplitst en zichtbaar zijn - waarom deze dan niet aan de ontwikkelaar markeren en 'in gewone taal' uitleggen?<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/0e7157a09f7f5707e769cc1d6a8f3af8.png\" style=\"display:block;margin: 0 auto;\" \/>We hebben inmiddels tientallen van dergelijke aanbevelingssjablonen verzameld.<\/p>\n<h3>Regel-voor-regel profielen van verzoeken.<\/h3>\n<p>\nNu, als je de oorspronkelijke query op de geanalyseerde planning legt, kun je zien hoeveel tijd er is besteed aan elke individuele operator - ongeveer zo:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/0766d331798d529363d10006ace211f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 of zelfs zo:<\/p>\n<p><img decoding=\"async\" alt=\"Waar EXPLAIN om zwijgt, en hoe het te laten spreken\" src=\"\/wp-content\/uploads\/2020\/03\/4efd23d84792c5a7f54b40e86ff17353.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Parameterinvoegen in de query.<\/h3>\n<p>\nAls je niet alleen de query, maar ook de parameters uit de DETAIL-regel van de log aan het plan hebt 'gehecht', kun je deze ook in een van de varianten kopi\u00ebren:<\/p>\n<ul>\n<li>met waarden ingevoegd in de query<br \/>\nvoor directe uitvoering op je eigen database en verdere profiling.<\/p>\n<pre><code class=\"sql\">SELECT 'const', 'param'::text;<\/code><\/pre>\n<\/li>\n<li>met waarden ingevoegd via PREPARE\/EXECUTE.<br \/>\nvoor het emuleren van de werking van de planner, wanneer het parametrische gedeelte kan worden genegeerd \u2014 bijvoorbeeld bij het werken met gepartitioneerde 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>Archief van plannen<\/h3>\n<p>\nPlaats, analyseer, deel met collega's! Plannen blijven in het archief, en je kunt later naar hen terugkeren: <noindex><a rel=\"nofollow\" href=\"https:\/\/explain.tensor.ru\/archive\/\">explain.tensor.ru\/archive<\/a><\/noindex><\/p>\n<p>Maar als je niet wilt dat anderen je plan zien, vergeet dan niet om het vinkje \"niet publiceren in het archief\" te zetten.<\/p>\n<p>In de volgende artikelen zal ik de moeilijkheden en oplossingen bespreken die zich voordoen bij het analyseren van het plan.<br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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\udd47Waar EXPLAIN tekortschiet en hoe je het kunt laten praten | ProHoster","description":"Een klassieke vraag die bijna altijd hetzelfde klinkt wanneer een ontwikkelaar naar zijn DBA komt of een bedrijfseigenaar naar een consultant voor PostgreSQL \u2014 \"Waarom duren de queries zo lang om uit te voeren?\".","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/o-chem-molchit-explain-i-kak-ego-razgovorit","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/75678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=75678"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/75678\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/75679"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=75678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=75678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=75678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}