{"id":33872,"date":"2019-10-31T21:55:09","date_gmt":"2019-10-31T18:55:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\/"},"modified":"2019-10-31T21:55:09","modified_gmt":"2019-10-31T18:55:09","slug":"postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","title":{"rendered":"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Uma excelente sexta-feira a todos! Cada vez menos tempo resta at\u00e9 o lan\u00e7amento do curso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/CIBR\/\">\u00abBancos de Dados Relacionais\u00bb<\/a><\/noindex>, portanto hoje compartilhamos a tradu\u00e7\u00e3o de mais um material \u00fatil sobre o tema.<\/p>\n<p>No processo de desenvolvimento <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/postgresql\/2ndquadrants-passion-postgresql\/contributions-postgresql-11\/\">PostgreSQL 11<\/a><\/noindex> foi realizado um trabalho impressionante para melhorar o particionamento de tabelas. <b>Particionamento de tabelas<\/b> \u2014 \u00e9 uma fun\u00e7\u00e3o que existia no PostgreSQL h\u00e1 bastante tempo, mas que, por assim dizer, na pr\u00e1tica n\u00e3o existia at\u00e9 a vers\u00e3o 10, onde se tornou uma fun\u00e7\u00e3o bastante \u00fatil. Anteriormente, afirmamos que a heran\u00e7a de tabelas \u00e9 nossa implementa\u00e7\u00e3o de particionamento, e isso \u00e9 verdade. Somente esse m\u00e9todo obrigava voc\u00ea a fazer a maior parte do trabalho manualmente. Por exemplo, se voc\u00ea quisesse que os tuplos fossem inseridos nas se\u00e7\u00f5es durante os INSERTs, precisaria configurar gatilhos para fazer isso por voc\u00ea. O particionamento usando heran\u00e7a era muito lento e dif\u00edcil de desenvolver funcionalidades adicionais sobre ele.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>No PostgreSQL 10, vimos o nascimento do \"particionamento declarativo\" \u2014 um recurso projetado para resolver muitos problemas que eram irresolv\u00edveis ao usar o antigo m\u00e9todo de heran\u00e7a. Isso levou ao surgimento de uma ferramenta muito mais poderosa, permitindo-nos dividir dados horizontalmente!<\/p>\n<p><b>Compara\u00e7\u00e3o de recursos<\/b><\/p>\n<p>No PostgreSQL 11, apareceu um conjunto impressionante de novos recursos que ajudam a aumentar a performance e tornam as tabelas particionadas mais transparentes para as aplica\u00e7\u00f5es.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/13ef675b91bb0701719c816882bd3e8b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/d87349281f0dc0820a064d81f80407d1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/3bb3beeedf803f1fdbe58a858076478c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1. Uso de exce\u00e7\u00f5es restritivas<br \/>\n2. Adiciona apenas n\u00f3s<br \/>\n3. Apenas para tabela particionada, referindo-se a n\u00e3o particionada<br \/>\n4. \u00cdndices devem conter todas as colunas-chave da se\u00e7\u00e3o<br \/>\n5. Restri\u00e7\u00f5es de se\u00e7\u00e3o em ambos os lados devem coincidir<\/i><\/p>\n<p><b>Desempenho<\/b><\/p>\n<p>Aqui tamb\u00e9m temos boas not\u00edcias! Um novo m\u00e9todo foi adicionado <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/blog\/http2ndquadrant-com\/partition-elimination-postgresql-11\/%22\">para remo\u00e7\u00e3o de se\u00e7\u00f5es<\/a><\/noindex>. Este novo algoritmo pode determinar se\u00e7\u00f5es apropriadas examinando a condi\u00e7\u00e3o da consulta <code>WHERE<\/code>. O algoritmo anterior, por outro lado, verificava cada se\u00e7\u00e3o para determinar se ela poderia atender \u00e0 condi\u00e7\u00e3o <code>WHERE<\/code>. Isso levava a um aumento adicional no tempo de planejamento \u00e0 medida que o n\u00famero de se\u00e7\u00f5es crescia.<\/p>\n<p>Na vers\u00e3o 9.6, com particionamento por heran\u00e7a, o roteamento de tuplas na se\u00e7\u00e3o geralmente era feito escrevendo uma fun\u00e7\u00e3o de gatilho que continha uma s\u00e9rie de operadores IF para inserir a tupla na se\u00e7\u00e3o correta. Essas fun\u00e7\u00f5es podiam ser muito lentas na execu\u00e7\u00e3o. Com o particionamento declarativo adicionado na vers\u00e3o 10, isso passou a funcionar muito mais r\u00e1pido.<\/p>\n<p>Usando uma tabela particionada com 100 se\u00e7\u00f5es, podemos avaliar o desempenho de carregar 10 milh\u00f5es de linhas em uma tabela com 1 coluna BIGINT e 5 colunas INT.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/02c33ba997f187890046215997a689fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO desempenho da consulta a esta tabela para buscar um \u00fanico registro indexado e executar DML para manipular um registro (usando apenas 1 processador):<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: A evolu\u00e7\u00e3o da parti\u00e7\u00e3o do Postgres 9.6 at\u00e9 o Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/8e69519dd97c6f2e60112908418e5c97.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqui vemos que o desempenho de cada opera\u00e7\u00e3o aumentou significativamente ap\u00f3s o PG 9.6. As consultas <code>SELECT<\/code> parecem muito melhores, especialmente aquelas que conseguem excluir v\u00e1rias se\u00e7\u00f5es durante o planejamento das consultas. Isso significa que o planejador pode pular uma grande parte do trabalho que antes precisava realizar. Por exemplo, j\u00e1 n\u00e3o s\u00e3o mais constru\u00eddos caminhos para se\u00e7\u00f5es desnecess\u00e1rias.<\/p>\n<p><b>Conclus\u00e3o<\/b><\/p>\n<p>O particionamento de tabelas come\u00e7a a se tornar uma funcionalidade muito poderosa no PostgreSQL. <b>Isso permite que os dados sejam rapidamente exportados para online e transferidos para offline, sem esperar a conclus\u00e3o de opera\u00e7\u00f5es DML massivas e lentas.<\/b>Isso tamb\u00e9m significa que os dados relacionados podem ser armazenados juntos, ou seja, os dados necess\u00e1rios podem ser acessados de forma muito mais eficiente. As melhorias feitas nesta vers\u00e3o seriam imposs\u00edveis sem os desenvolvedores, revisores e commiters que trabalharam incansavelmente em todos esses recursos.<br \/>\nObrigado a todos eles! <b>PostgreSQL 11 parece simplesmente fant\u00e1stico!<\/b><\/p>\n<p>Aqui est\u00e1 um artigo curto, mas bastante interessante. Compartilhem seus coment\u00e1rios e n\u00e3o se esque\u00e7am de se inscrever no <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/37jj\/\">dia de portas abertas<\/a><\/noindex>, onde o cronograma do curso ser\u00e1 detalhado.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/452280\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b! \u0412\u0441\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0420\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0421\u0423\u0411\u0414\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0442\u0435\u043c\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 PostgreSQL 11 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 PostgreSQL \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u0435\u0435, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e \u0441\u0443\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33872","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=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!\" \/>\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\/pt\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\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=\"2019-10-31T18:55:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:09+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\udd47PostgreSQL 11: A Evolu\u00e7\u00e3o do Particionamento do Postgres 9.6 at\u00e9 o Postgres 11 | ProHoster","description":"Desejo a todos uma \u00f3tima sexta-feira!","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster","og:description":"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","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":"2019-10-31T18:55:09+00:00","article:modified_time":"2019-10-31T18:55:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33872","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":"2026-01-21 17:02:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:32:26","updated":"2026-01-21 17:02:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/33872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=33872"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/33872\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/25538"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=33872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=33872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=33872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}