<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>SQL-Ex blog - PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/</link>
    <description>Новости сайта &quot;Упражнения SQL&quot;, статьи и переводы</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.3.5 - http://www.s9y.org/</generator>
    <pubDate>Sun, 19 Apr 2026 05:19:00 GMT</pubDate>

    <image>
    <url>https://sql-ex.ru/images/logo.jpg</url>
    <title>RSS: SQL-Ex blog - PostgreSQL - Новости сайта &quot;Упражнения SQL&quot;, статьи и переводы</title>
    <link>https://sql-ex.ru/blogs/</link>
    <width></width>
    <height></height>
</image>

<item>
    <title>&quot;Простая&quot; функция, которой нет: миграция функции T-SQL STR() в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/,-T-SQL-STR-PostgreSQL.html</link>
            <category>PostgreSQL</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/,-T-SQL-STR-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3357</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3357</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/google-cloud/the-simple-function-that-isnt-migrating-t-sql-s-str-to-postgresql-a752ddd38a2f&quot;&gt;Assaf Fraenkel. The “Simple” Function That Isn’t: Migrating T-SQL’s STR() to PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Иногда миграция оказывается более сложной, чем ожидалось. На первый взгляд определение функции STR в SQL Server является простым: она возвращает символьное представление числовых данных, выровненные по правому краю с заданной длиной и точностью до десятичных знаков. Однако при попытке конвертации вы обнаруживаете огромное число пограничных случаев, большинство из которых плохо документированы.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Техническая спецификация&lt;/h2&gt;&lt;br /&gt;
Стандартной спецификацией этой функции является:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;STR ( float_expression [ , length [ , decimal ] ] )&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Значение по умолчанию Length (длина): 10&lt;/li&gt;&lt;li&gt;Значение по умолчанию Decimal (масштаб): 0&lt;/li&gt;&lt;/ul&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/,-T-SQL-STR-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;&amp;quot;Простая&amp;quot; функция, которой нет: миграция функции T-SQL STR() в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 19 Apr 2026 08:19:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3357.html</guid>
    
</item>
<item>
    <title>Погружение в события ожиданий PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3355</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3355</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://richyen.com/&quot;&gt;Richard Yen&lt;/a&gt;, &lt;a href=&quot;https://richyen.com/postgres/2026/04/13/wait_events.html&quot;&gt;Understanding PostgreSQL Wait Events&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Одним из самых полезных инструментов отладки в современном PostgreSQL является система событий ожиданий (wait events). Когда запрос замедляется или база данных становится ограниченной по процессору, естественно возникает вопрос: «Чего на самом деле ожидают сеансы?» Postgres предоставляет эту информацию через представление pg_stat_activity с помощью двух столбцов:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
  &lt;li&gt;&lt;strong&gt;wait_event_type&lt;/strong&gt; — тип события ожидания&lt;/li&gt;&lt;br /&gt;
  &lt;li&gt;&lt;strong&gt;wait_event&lt;/strong&gt; — само событие ожидания&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Эти поля показывают, на чём именно заблокирован фоновый процесс в данный момент. Среди различных типов ожидания одна категория часто вызывает путаницу:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;LWLock&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Если вы когда-либо видели панели мониторинга, полные ожиданий LWLock, вы не одиноки в своих сомнениях о том, что они означают и являются ли они проблемой.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Погружение в события ожиданий PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 17 Apr 2026 12:06:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3355.html</guid>
    
</item>
<item>
    <title>Нулевая задержка autovacuum_vacuum_cost_delay - вас сметёт лавина записи</title>
    <link>https://sql-ex.ru/blogs/?/autovacuum_vacuum_cost_delay.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/autovacuum_vacuum_cost_delay.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3354</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3354</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://ardentperf.com/about/&quot;&gt;Jeremy Schneider&lt;/a&gt;, &lt;a href=&quot;https://ardentperf.com/2026/04/12/zero-autovacuum_cost_delay-write-storms-and-you/&quot;&gt;Zero autovacuum_vacuum_cost_delay, Write Storms, and You&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Несколько дней назад Шон Томас (Shaun Thomas) опубликовал статью в блоге pgEdge под названием &lt;a href=&quot;https://sql-ex.ru/blogs/?/Kontrolnye_tochki,_lavinnaJa_zapis_i_vy.html&quot;&gt;«Контрольные точки, лавинная запись и вы»&lt;/a&gt;. К сожалению, на многих корпоративных блогах больше нет возможности комментировать. Я оставил несколько комментариев &lt;a href=&quot;https://www.linkedin.com/posts/bonesmoses_programming-postgres-postgresql-activity-7448386879001083904-uGtw?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAC79VwBGIqMWGs62vg3lk2xMoBTHvXtPzI&quot;&gt;в LinkedIn&lt;/a&gt;, но в целом позвольте мне сказать, что эта статья — отличное чтение, и я всегда рад, когда кто-то погружается в важную и обойдённую вниманием тему, даёт хорошее техническое описание и включает реальные результаты тестов для иллюстрации деталей.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;У меня сегодня нет воспроизводимых реальных результатов тестов. Но у меня есть хорошая история и немного реальных данных.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/autovacuum_vacuum_cost_delay.html#extended&quot;&gt;Continue reading &quot;Нулевая задержка autovacuum_vacuum_cost_delay - вас сметёт лавина записи&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 16 Apr 2026 17:35:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3354.html</guid>
    
</item>
<item>
    <title>EXPLAIN ANALYZE в PostgreSQL - практическое руководство для веб-разработчиков</title>
    <link>https://sql-ex.ru/blogs/?/EXPLAIN-ANALYZE-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/EXPLAIN-ANALYZE-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3353</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3353</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@vishubommoju/explain-analyze-in-postgresql-a-practical-guide-for-web-developers-e38599ab93d8&quot;&gt;Vishu Bommoju. EXPLAIN ANALYZE in PostgreSQL — A Practical Guide for Web Developers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Большинство медленных веб-приложений тормозят не из-за плохих фреймворков или плохих серверов.&lt;br /&gt;
Они виснут из-за медленных запросов к базам данных.&lt;br /&gt;
&lt;br /&gt;
PostgreSQL дает нам одно оружие, которое важнее почти всего остального при отладке производительности:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;EXPLAIN ANALYZE&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
В этой статье объясняется EXPLAIN ANALYZE с точки зрения его практического использования, а не как теория из учебника.&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/EXPLAIN-ANALYZE-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;EXPLAIN ANALYZE в PostgreSQL - практическое руководство для веб-разработчиков&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 16 Apr 2026 09:26:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3353.html</guid>
    
</item>
<item>
    <title>Обзор оконных функций PostgreSQL </title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=2840</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=2840</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.sqlservercentral.com/articles/an-overview-of-postgresql-window-functions&quot;&gt;rohind. An Overview of PostgreSQL Window Functions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Эта статья является руководством по использованию оконных функций SQL в приложениях, для которых требуется выполнять тяжелые вычислительные запросы. Данные множатся с поразительной скоростью. В 2022 в мире произведено и потреблено 94 зетабайтов данных. Сегодня у нас есть множество инструментов типа Hive и Spark для обработки Big Data. Несмотря на то, что эти инструменты различаются по типам проблем, для решения которых они спроектированы, они используют базовый SQL, что облегчает работу с большими данными. Оконные функции являются примером одной из таких концепций SQL. Это необходимо знать инженерам-программистам и специалистам по данным.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Обзор оконных функций PostgreSQL &quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 28 Jun 2023 08:38:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/2840.html</guid>
    
</item>
<item>
    <title>Контрольные точки, лавинная запись и вы</title>
    <link>https://sql-ex.ru/blogs/?/,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3351</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3351</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Shaun Thomas,&lt;a href=&quot;https://www.pgedge.com/blog/checkpoints-write-storms-and-you&quot;&gt;Checkpoints, Write Storms, and You&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждая база данных должна примириться с двумя неприятными истинами: память быстра, но энергозависима, а диск медленен, но долговечен. Postgres справляется с этим противоречием с помощью журнала предзаписи (Write-Ahead Log, WAL), который регистрирует каждое изменение до того, как оно произойдёт. Но WAL не может расти бесконечно. В какой-то момент Postgres должен сбросить все накопившиеся грязные страницы на диск и объявить чистую начальную точку. Этот процесс называется контрольной точкой (&lt;a href=&quot;https://www.postgresql.org/docs/current/wal-configuration.html&quot;&gt;checkpoint&lt;/a&gt;), и когда он идёт не по плану, пропускная способность может упасть до нуля.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/,.html#extended&quot;&gt;Continue reading &quot;Контрольные точки, лавинная запись и вы&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 11 Apr 2026 18:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3351.html</guid>
    
</item>
<item>
    <title>pg_column_size(): То, что вы видите, не всегда то, что получаете</title>
    <link>https://sql-ex.ru/blogs/?/pg_column_size-,-,-,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/pg_column_size-,-,-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3349</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3349</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://mydbanotebook.org/about/&quot;&gt;Lætitia AVROT&lt;/a&gt;, &lt;a href=&quot;https://mydbanotebook.org/posts/pg_column_size-what-you-see-is-not-what-you-get/&quot;&gt;pg_column_size(): What you see is not what you get&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Благодаря моему коллеге Озаиру (Ozair), который прислал мне запрос в JIRA: «Мне нужно удалить этот огромный столбец, каковы будут последствия?» Мой первый вопрос был: насколько он огромен? И тут кроличья нора открылась.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это выглядит просто. Это просто. Просто используйте административную функцию &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;pg_column_size()&lt;/span&gt;&lt;/code&gt;. Пока у вас нет атрибутов, обработанных TOAST. Тогда становится интересно.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/pg_column_size-,-,-,.html#extended&quot;&gt;Continue reading &quot;pg_column_size(): То, что вы видите, не всегда то, что получаете&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 10 Apr 2026 16:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3349.html</guid>
    
</item>
<item>
    <title>Что такое collation (правило сортировки) и почему мои данные повреждены?</title>
    <link>https://sql-ex.ru/blogs/?/collation.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/collation.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3348</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3348</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Shaun Thomas, &lt;a href=&quot;https://www.pgedge.com/blog/what-is-a-collation-and-why-is-my-data-corrupt&quot;&gt;What is a Collation, and Why is My Data Corrupt?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Библиотека GNU C (glibc) версии 2.28 появилась на свет 1 августа 2018 года, и с тех пор Postgres уже не был прежним. Среди множества её изменений было масштабное обновление данных локалей для сопоставления (collation), приведшее их в соответствие с изданием 4 стандарта ISO 14651 (выпуск 2016 года) и Unicode 9.0.0. Это была не мелкая правка. Это была кульминация примерно 18 лет накопленных изменений в локалях, объединённых в одном выпуске.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Никто не устраивал вечеринку.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;За этим последовал один из самых значительных и коварных инцидентов с целостностью данных в истории Postgres. Индексы молча становились повреждёнными, результаты запросов менялись без предупреждения, уникальным ограничениям больше нельзя было доверять. Самая страшная часть? Нужно было знать, что искать. Postgres не жаловался. Операционная система не жаловалась. Всё выглядело нормально, ровно до тех пор, пока это не переставало быть так.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это история о том, как обновление библиотеки тихо повредило базы данных по всему миру, что сообщество Postgres сделало в ответ и как убедиться, что это никогда не повторится с вами.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/collation.html#extended&quot;&gt;Continue reading &quot;Что такое collation (правило сортировки) и почему мои данные повреждены?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 09 Apr 2026 17:30:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3348.html</guid>
    
</item>
<item>
    <title>Внутреннее устройство WAL в PostgreSQL для инженеров данных</title>
    <link>https://sql-ex.ru/blogs/?/WAL-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/WAL-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3346</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3346</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://blog.dataengineerthings.org/postgresql-wal-internals-for-data-engineers-ef6229584a99&quot;&gt;Jonathan Duran. PostgreSQL WAL Internals for Data Engineers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Понимание PostgreSQL WAL&lt;/h2&gt;&lt;br /&gt;
Недавно, работая над проектом CDC, я осознал, что никогда в действительности не находил времени, чтобы вникнуть во внутреннее устройство PostgreSQL, которое делает возможным потоковую обработку транзакций. Все мы знаем CDC (захват измененных данных) как магию, которая позволяет нам помещать изменения данных почти в реальном времени в системы типа Kafka, Snowflake или data lake - но на самом деле основную работу выполняет специальный компонент инженерных решений PostgreSQL: журнал предупреждающей записи (WAL).&lt;br /&gt;
&lt;br /&gt;
Эта статья посвящена данному компоненту - что такое WAL, как он обеспечивает надежность PostgreSQL, и какую роль он играет в возможности CDC. Мы обсудим то, как PostgreSQL обрабатывает транзакции из памяти на диск, как он избегает дорогих операций ввода-вывода, и как он элегантно восстанавливает данные после сбоя. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/WAL-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Внутреннее устройство WAL в PostgreSQL для инженеров данных&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 07 Apr 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3346.html</guid>
    
</item>
<item>
    <title>Нужно ли настраивать Vacuum в Postgres?</title>
    <link>https://sql-ex.ru/blogs/?/Vacuum-Postgres.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Vacuum-Postgres.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3345</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3345</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Авторы: &lt;a href=&quot;https://www.snowflake.com/en/blog/authors/elizabeth-garrett-christensen/&quot;&gt;Elizabeth Garrett Christensen&lt;/a&gt; и &lt;a href=&quot;https://www.snowflake.com/en/blog/authors/erik-jones/&quot;&gt;Erik Jones&lt;/a&gt;, &lt;a href=&quot;https://www.snowflake.com/en/engineering-blog/tuning-postgres-vacuum/&quot;&gt;Do You Need to Tune Postgres Vacuum?&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Если вы работаете с Postgres какое-то время, вы, вероятно, слышали, как кто-то упоминал «очистку» (vacuuming) базы данных или использовал термин «раздувание» (bloat). Оба эти понятия звучат как рутинная и надоедливая работа, но они — просто часть жизни здоровой базы данных. В современных версиях Postgres autovacuum обычно обрабатывает эти проблемы за кулисами. Но по мере роста вашей базы данных вы можете начать задаваться вопросом: достаточно ли настроек по умолчанию? Нужно ли мне запускать очистку Postgres вручную? Или почему моя база данных внезапно занимает гораздо больше места на диске, чем должна?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Давайте углубимся в то, зачем нужна очистка, как работает autovacuum и когда вам действительно нужно вмешаться и настроить его.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Vacuum-Postgres.html#extended&quot;&gt;Continue reading &quot;Нужно ли настраивать Vacuum в Postgres?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 05 Apr 2026 13:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3345.html</guid>
    
</item>
<item>
    <title>Как быстро освоить CI/CD</title>
    <link>https://sql-ex.ru/blogs/?/CICD.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/CICD.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3343</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3343</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    Автор: &lt;a href=&quot;https://about.gitlab.com/blog/authors/itzik-gan-baruch&quot;&gt;Itzik Gan Baruch&lt;/a&gt;, &lt;a href=&quot;https://learn.gitlab.com/cicd-email/blog-learn-cicd-2022?mkt_tok=MTk0LVZWQy0yMjEAAAGg7_Hk4aIdGD5tXHMhzT-IloAi2a8uG1kE4bV4wqPN6MuGNLbU71XqVrGLjXB7U0x0bn7ds3Gd0jD9OvwIq-4xBTgiOSuQup7H2UO-XVPAb-CDiIru&amp;utm_campaign=eg_global_lfc_nurture_singleappci_en_learncicdfast&amp;utm_content=personanurtureusers_email&amp;utm_medium=email&amp;utm_source=marketo&amp;_pfses=3KmJc11jkJx5BKjjVwa199EC&quot;&gt;How to learn CI/CD fast&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;https://about.gitlab.com/blog/basics-of-gitlab-ci-updated/&quot;&gt;Непрерывная интеграция и непрерывная доставка&lt;/a&gt; (&lt;a href=&quot;https://about.gitlab.com/topics/ci-cd/&quot;&gt;CI/CD&lt;/a&gt;) критически важны для ускорения выпуска программного обеспечения, и начать работать с ними не так сложно, как кажется. CI/CD стали краеугольной технической архитектурой успешных внедрений DevSecOps. CI/CD имеет репутацию сложной и труднодостижимой, но это не обязательно так. Современные инструменты позволяют командам начать работу с минимальной настройкой и управлением инфраструктурой. Вот как вы можете «быстро стартовать» с CI/CD и получить быстрые, наглядные победы в производительности для вашей команды DevSecOps.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/CICD.html#extended&quot;&gt;Continue reading &quot;Как быстро освоить CI/CD&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 03 Apr 2026 16:18:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3343.html</guid>
    
</item>
<item>
    <title>Обеспечение высокой доступности PostgreSQL с помощью Patroni и Ansible</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-Patroni-Ansible.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-Patroni-Ansible.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3342</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3342</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://bytegoblin.io/&quot;&gt;ByteGoblin&lt;/a&gt;/, &lt;a href=&quot;https://bytegoblin.io/blog/setting-up-postgresql-high-availability-with-patroni-and-ansible.mdx&quot;&gt;Setting Up PostgreSQL High Availability with Patroni and Ansible&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В современном мире, управляемом данными, обеспечение высокой доступности вашей базы данных имеет решающее значение для непрерывности бизнеса. PostgreSQL — мощная открытая реляционная база данных, которую можно настроить для обеспечения высокой доступности (High Availability, HA), чтобы минимизировать простои и сохранить доступ к данным. Одно из популярных решений для достижения высокой доступности PostgreSQL — использование Patroni (шаблона для управления кластерами PostgreSQL) в сочетании с Ansible (инструментом автоматизации, который упрощает развёртывание приложений, управление конфигурацией и оркестрацию).&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В этом руководстве мы шаг за шагом рассмотрим процесс настройки отказоустойчивого кластера PostgreSQL с помощью Patroni с использованием Ansible. Такая конфигурация обеспечит автоматическое переключение при сбоях, простое масштабирование и упрощённое обслуживание.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-Patroni-Ansible.html#extended&quot;&gt;Continue reading &quot;Обеспечение высокой доступности PostgreSQL с помощью Patroni и Ansible&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 02 Apr 2026 15:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3342.html</guid>
    
</item>
<item>
    <title>CTE - Хороший, плохой, злой</title>
    <link>https://sql-ex.ru/blogs/?/CTE-,-,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/CTE-,-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3340</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3340</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Radim Marek, &lt;a href=&quot;https://boringsql.com/posts/good-cte-bad-cte/&quot;&gt;Good CTE, bad CTE&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Обобщённое табличное выражение (&lt;a href=&quot;https://www.postgresql.org/docs/current/queries-with.html&quot;&gt;Common Table Expression&lt;/a&gt;, CTE) — это первая возможность, к которой часто обращаются разработчики, выходя за рамки базового SQL, а зачастую и единственная. Вы пишете подзапрос после WITH, даёте ему имя и используете в остальной части запроса. Он существует только на время выполнения этого запроса.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Но популярность CTE обычно связана не столько с модернизацией кода, сколько с обещанием императивной логики. Для многих CTE выступает в роли простого для понимания средства от «страшных запросов» и способа навязать базе данных порядок выполнения. Многие пишут запросы так, как будто они говорят оптимизатору: «сначала сделай это, затем сделай то».&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это создаёт проблему. CTE обеспечивают декомпозицию запросов, рекурсию и многосоставные DDL. Планировщик обрабатывает их по-разному в зависимости от того, как вы их пишете и используете. Долгое время (до PostgreSQL 12) CTE служили барьером для оптимизации. Планировщик не мог проталкивать условия предикатов внутрь них, не мог использовать индексы на нижележащих таблицах. Он не мог сделать ничего, кроме как материализовать их и просканировать полученный результат.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;PostgreSQL 12 изменил это. Теперь CTE могут быть встроены, материализованы или находиться в промежуточном состоянии, в зависимости от того, как вы их пишете.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/CTE-,-,.html#extended&quot;&gt;Continue reading &quot;CTE - Хороший, плохой, злой&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 31 Mar 2026 14:16:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3340.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: Понимание параметров стоимости оптимизатора</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3339</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3339</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/32-postgresql-17-performance-tuning-understanding-optimizer-cost-parameters-670e0de45b4a&quot;&gt;Jeyaram Ayyalusamy. 32 - PostgreSQL 17 Performance Tuning: Understanding Optimizer Cost Parameters&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
PostgreSQL известна как одна из наиболее продвинутых реляционных баз данных с открытыми кодами, и одна из основных причин ее силы - &lt;strong&gt;оптимизатор запросов на основе стоимости&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Когда вы запускаете запрос, оптимизатор не выполняет его непосредственно. Он генерирует множество возможных планов выполнения и оценивает их стоимость. Выбирается план с самой низкой оценкой стоимости. Стоимость не измеряется в миллисекундах или циклах ЦП - она представляет собой абстрактные единицы, которые PostgreSQL использует для сравнения.&lt;br /&gt;
&lt;br /&gt;
Понимание этих параметров стоимости в PostgreSQL является существенным для настройки производительности, особенно тогда, когда дело касается больших таблиц и сложных запросов.&lt;br /&gt;
&lt;br /&gt;
В этой статье мы:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Создадим таблицу с 10 миллионами строк для имитации реальной рабочей нагрузки.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Создадим индексы, чтобы дать возможность PostgreSQL построить несколько планов выполнения.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Подробно разберем модель стоимости в PostgreSQL.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Покажем, как настройка параметров стоимости может изменить решение при выборе плана.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: Понимание параметров стоимости оптимизатора&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 30 Mar 2026 10:12:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3339.html</guid>
    
</item>
<item>
    <title>Cуперспособности EXPLAIN в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/C-EXPLAIN-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/C-EXPLAIN-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3337</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3337</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://richyen.com/&quot;&gt;Richard Yen&lt;/a&gt;, &lt;a href=&quot;https://richyen.com/postgres/2026/03/23/explain_options.html&quot;&gt;EXPLAIN&#039;s Other Superpowers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Большинство людей, работающих с PostgreSQL, в конечном итоге узнают две команды для настройки запросов: &lt;code&gt;EXPLAIN&lt;/code&gt; и &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;EXPLAIN&lt;/code&gt; показывает выбранный планировщиком план выполнения, а &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; выполняет запрос и добавляет статистику времени выполнения. Для большинства задач настройки этого уже достаточно для получения большого объёма информации.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Но многие не осознают, что у &lt;code&gt;EXPLAIN&lt;/code&gt; есть ещё несколько опций, которые могут значительно упростить устранение неполадок. В некоторых случаях они отвечают на вопросы, на которые &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; сам по себе ответить не может.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В этой статье мы рассмотрим некоторые из этих менее популярных опций.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/C-EXPLAIN-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Cуперспособности EXPLAIN в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 27 Mar 2026 14:02:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3337.html</guid>
    
</item>
<item>
    <title>Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx</title>
    <link>https://sql-ex.ru/blogs/?/Patroni-Postgres-3-HAProx.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni-Postgres-3-HAProx.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3336</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3336</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.pgedge.com/contact&quot;&gt;Shaun Thomas&lt;/a&gt;, &lt;a href=&quot;https://www.pgedge.com/blog/using-patroni-to-build-a-highly-available-postgres-clusterpart-3-haproxy&quot;&gt;Using Patroni to Build a Highly Available Postgres Cluster—Part 3: HAProxy&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Статьи серии:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Kak_Patroni_obespechivaet_vysokuju_dostupnost_PostgreSQL.html&quot;&gt;Как Patroni обеспечивает высокую доступность PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_1_etcd.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_2_Postgres_i_Patroni.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_3_HAProx.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Добро пожаловать в третью часть нашей серии по созданию высокодоступного кластера Postgres с помощью Patroni! &lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_1_etcd.html&quot;&gt;Часть первая&lt;/a&gt; была полностью посвящена созданию DCS с использованием etcd для обеспечения критически важного уровня DCS для кластера, а &lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_2_Postgres_i_Patroni.html&quot;&gt;часть вторая&lt;/a&gt; добавила Patroni и Postgres в программный стек. Хотя на этом этапе можно остановиться и использовать кластер как есть, есть ещё один компонент, который сделает его гораздо более функциональным в целом.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Новым соединениям нужен способ легко и надёжно достигать основного узла. Patroni предоставляет REST-интерфейс для опроса каждого узла о его состоянии, что делает его идеальным решением для любого программного обеспечения или уровня балансировки нагрузки, совместимого с HTTP-проверками. Часть третья посвящена добавлению HAProxy для выполнения этой роли, завершая кластер уровнем маршрутизации.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Надеюсь, у вас всё ещё есть три виртуальные машины, на которых вы установили etcd, Postgres и Patroni. Они нам понадобятся для финального этапа, так что если вы ещё не прошли шаги из частей первой и второй, вернитесь, когда будете готовы.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В противном случае, давайте завершим кластер!&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Patroni-Postgres-3-HAProx.html#extended&quot;&gt;Continue reading &quot;Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 26 Mar 2026 13:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3336.html</guid>
    
</item>
<item>
    <title>Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd</title>
    <link>https://sql-ex.ru/blogs/?/Patroni-Postgres-1-etcd.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni-Postgres-1-etcd.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3329</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3329</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.pgedge.com/contact&quot;&gt;Shaun Thomas&lt;/a&gt;, &lt;a href=&quot;https://www.pgedge.com/blog/using-patroni-to-build-a-highly-available-postgres-clusterpart-1-etcd&quot;&gt;Using Patroni to Build a Highly Available Postgres Cluster—Part 1: etcd&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Статьи серии:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Kak_Patroni_obespechivaet_vysokuju_dostupnost_PostgreSQL.html&quot;&gt;Как Patroni обеспечивает высокую доступность PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_1_etcd.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_2_Postgres_i_Patroni.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_3_HAProx.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Предыдущая статья из цикла PG Phriday была посвящена &lt;a href=&quot;https://sql-ex.ru/blogs/?/Kak_Patroni_obespechivaet_vysokuju_dostupnost_PostgreSQL.html&quot;&gt;архитектуре кластера Patroni&lt;/a&gt; — как и почему он устроен именно так. На этот раз речь пойдёт о непосредственном построении такого кластера. Я часто слышал, что эксплуатация Postgres может пугать, а Patroni находится на уровень выше. Что ж, со вторым я спорить не буду, но я могу хотя бы попытаться облегчить некоторые трудности.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Чтобы избежать ошеломляющего потока информации из двадцати страниц инструкций, я разбил эту статью на серию из трёх частей по следующему принципу:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Etcd&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Postgres и Patroni&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;HAProxy&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Это позволит описать каждый из трёх уровней, представляющих полный стек Patroni, и создаст удобный справочный материал для каждого из них.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;С этим разобрались, давайте приступим!&lt;/p&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Patroni-Postgres-1-etcd.html#extended&quot;&gt;Continue reading &quot;Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 18 Mar 2026 13:00:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3329.html</guid>
    
</item>
<item>
    <title>Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni</title>
    <link>https://sql-ex.ru/blogs/?/Patroni-Postgres-2-Postgres-Patroni.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni-Postgres-2-Postgres-Patroni.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3333</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3333</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.pgedge.com/contact&quot;&gt;Shaun Thomas&lt;/a&gt;, &lt;a href=&quot;https://www.pgedge.com/blog/using-patroni-to-build-a-highly-available-postgres-clusterpart-2-postgres-and-patroni&quot;&gt;Using Patroni to Build a Highly Available Postgres Cluster—Part 2: Postgres and Patroni&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Статьи серии:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Kak_Patroni_obespechivaet_vysokuju_dostupnost_PostgreSQL.html&quot;&gt;Как Patroni обеспечивает высокую доступность PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_1_etcd.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_2_Postgres_i_Patroni.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_3_HAProx.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Patroni-Postgres-2-Postgres-Patroni.html#extended&quot;&gt;Continue reading &quot;Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 23 Mar 2026 11:54:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3333.html</guid>
    
</item>
<item>
    <title>Полное руководство по обновлению PostgreSQL с 17 на 18</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17-18.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17-18.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3335</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3335</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Ilya Kosmodemiansky, &lt;a href=&quot;https://postgr.es/p/7vk&quot;&gt;An Ultimate Guide to Upgrading Your PostgreSQL Installation: From 17 to 18&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Обновления мажорных версий PostgreSQL — одна из тех задач, с которой регулярно приходится сталкиваться каждому администратору баз данных. Это рутинная операция, но она также полна мелких, потенциально опасных деталей, которые могут превратить простое окно обслуживания в инцидент. Выполнив сотни обновлений в разных средах за многие годы, я хочу поделиться комплексным, практическим руководством по обновлению с PostgreSQL 17 на 18, с особым вниманием к тому, что изменилось и что наконец-то улучшилось в самом процессе обновления.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Эта статья основана на моём &lt;a href=&quot;https://www.youtube.com/watch?v=PEkpvZIWJTk&quot;&gt;докладе на PGConf.EU 2024&lt;/a&gt;, дополненном с учётом пути обновления 17→18 и значительных улучшений, появившихся в версии 18. В это время года мы обычно рекомендуем нашим клиентам обновляться: текущий релиз 18.3 достаточно стабилен.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17-18.html#extended&quot;&gt;Continue reading &quot;Полное руководство по обновлению PostgreSQL с 17 на 18&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 25 Mar 2026 17:29:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3335.html</guid>
    
</item>
<item>
    <title>Представление о высокой доступности PostgreSQL как о слоях</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3332</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3332</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/umair&quot;&gt;Umair Shahid&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/thinking-of-postgresql-high-availability-as-layers&quot;&gt;Thinking of PostgreSQL High Availability as Layers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Высокая доступность для PostgreSQL часто рассматривается как единое, большое, драматичное решение: «Делаем мы HA или нет?»&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Такой подход толкает команды к двум крайностям:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;«геройская архитектура», которая стоит дорого и всё равно вызывает напряжение при эксплуатации, или&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;минималистичная архитектура, которую все надеются, что будет просто продолжать работать.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Более спокойный способ проектирования&lt;/strong&gt; — рассматривать HA и аварийное восстановление (DR) как слои. Вы начинаете с базового уровня, а затем добавляете конкретные возможности только тогда, когда ваши RPO/RTO и бюджет их оправдывают.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Давайте пройдём по слоям от «одного основного узла» до «многосайтовой готовности к аварийному восстановлению».&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Представление о высокой доступности PostgreSQL как о слоях&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 22 Mar 2026 12:42:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3332.html</guid>
    
</item>
<item>
    <title>Подготовленные запросы (операторы) в PostgreSQL для начинающих</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3331</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3331</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://tomasz-gintowt.medium.com/postgresql-prepared-queries-statements-for-beginners-cf0338133f81&quot;&gt;Tomasz Gintowt. PostgreSQL Prepared Queries (Statements) For Beginners&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Когда мы пишем запросы SQL, то часто выполняем один и тот же запрос снова и снова лишь меняя значения.&lt;br /&gt;
&lt;br /&gt;
PostgreSQL обладает функциональностью, которая помогает решить эту проблему, - подготовленные запросы (также называемые подготовленными операторами).&lt;br /&gt;
&lt;br /&gt;
В этой статье мы выясним:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Что такое подготовленные запросы.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Чем они полезны.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Как их использовать в PostgreSQL.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Реальные примеры, которые вы сами сможете опробовать.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Никаких непонятных слов. Никакой сложной теории. Простые ясные примеры.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Подготовленные запросы (операторы) в PostgreSQL для начинающих&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 22 Mar 2026 07:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3331.html</guid>
    
</item>
<item>
    <title>Как PostgreSQL сканирует ваши данные</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3328</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3328</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/warda-bibi&quot;&gt;Warda Bibi&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/how-postgresql-scans-your-data&quot;&gt;How PostgreSQL Scans Your Data&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Чтобы понять, как PostgreSQL сканирует данные, сначала нужно понять, как PostgreSQL их хранит.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Таблица хранится как набор 8-килобайтных страниц (по умолчанию) на диске. Каждая страница имеет заголовок, массив указателей на элементы (также называемых линейными указателями) и сами данные кортежей, растущие снизу вверх. Каждый кортеж имеет свой собственный заголовок, содержащий информацию о видимости: xmin, xmax, cmin/cmax и биты infomask.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Существуют различные способы, которыми PostgreSQL может читать данные с диска. В зависимости от запроса и доступных индексов он может выбрать одну из нескольких стратегий сканирования:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Последовательное сканирование (Sequential Scan)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Индексное сканирование (Index Scan)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Сканирование только индекса (Index-Only Scan)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Сканирование по битовой карте (Bitmap Index Scan)&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;В этой статье мы рассмотрим каждый из этих типов сканирования по отдельности.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Как PostgreSQL сканирует ваши данные&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 17 Mar 2026 18:19:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3328.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: понимание преполагаемого и действительного планов выполнения</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3327</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3327</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/29-postgresql-17-performance-tuning-understanding-estimates-vs-actuals-in-query-plans-91e7eccbc51a&quot;&gt;Jeyaram Ayyalusamy. 29 - PostgreSQL 17 Performance Tuning: Understanding Estimates vs. Actuals in Query Plans&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/03/ex_plans_1.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Настройка производительности в PostgreSQL часто сводится к единственному навыку: умению читать планы выполнения. Команда PostgreSQL EXPLAIN ANALYZE - главный инструмент для этого. Она показывает не только то, как выполняется запрос, но и то, чего ожидал оптимизатор PostgreSQL, и что произошло на самом деле.&lt;br /&gt;
&lt;br /&gt;
При просмотре плана выполнения вы всегда должны задать себе два больших вопроса:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Оправданы ли временные параметры, указанные в выводе команды EXPLAIN ANALYZE, для данного запроса?&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;В каком месте происходит внезапный скачок времени выполнения?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
Места этих скачков в плане выполнения часто обнаруживают точный узел или операцию, которая замедляет ваш запрос.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: понимание преполагаемого и действительного планов выполнения&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 16 Mar 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3327.html</guid>
    
</item>
<item>
    <title>Статистика в PostgreSQL: Почему запросы выполняются медленно</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3321</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3321</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://boringsql.com/about/&quot;&gt;Radim Marek&lt;/a&gt;: &lt;a href=&quot;https://boringsql.com/posts/postgresql-statistics/&quot;&gt;PostgreSQL Statistics: Why queries run slow&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждый запрос начинается с плана. Каждый медленный запрос, вероятно, начинается с плохого плана. И чаще всего виновата статистика. Но как это работает на самом деле? PostgreSQL не выполняет запрос, чтобы узнать ответ — он оценивает стоимость. Он считывает предварительно вычисленные данные из &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;pg_class&lt;/span&gt;&lt;/code&gt; и &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;pg_statistic&lt;/span&gt;&lt;/code&gt; и выполняет расчёты, чтобы найти самый дешёвый путь к вашим данным.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;В идеальном сценарии считанные числа точны, и вы получаете ожидаемый план. Но когда они устаревают, ситуация выходит из-под контроля. Планировщик оценивает 500 строк, планирует вложенный цикл (nested loop), а натыкается на 25 000. То, что казалось оптимальным планом, превращается в каскадный сбой.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Как статистика устаревает? Это может быть массовая загрузка, миграция схемы, рост, превышающий ожидания, или просто &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;VACUUM&lt;/span&gt;&lt;/code&gt;, не успевающий за изменениями. Какова бы ни была причина, результат один: планировщик летит вслепую, выбирая пути, основываясь на реальности, которой больше не существует.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;В этой статье мы углубимся в два каталога, от которых зависит планировщик, поймём, что именно &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;ANALYZE&lt;/span&gt;&lt;/code&gt; получает для вас из таблицы с 30 000 строк, и увидим, как эти числа определяют, будет ли ваш запрос выполняться миллисекунды или минуты.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Статистика в PostgreSQL: Почему запросы выполняются медленно&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 04 Mar 2026 17:20:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3321.html</guid>
    
</item>
<item>
    <title>Таблицы UNLOGGED в PostgreSQL: когда скорость важнее надежности</title>
    <link>https://sql-ex.ru/blogs/?/UNLOGGED-PostgreSQL.html</link>
            <category>PostgreSQL</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/UNLOGGED-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3320</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3320</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.sqlservercentral.com/articles/unlogged-tables-in-postgresql-when-speed-matters-more-than-durability&quot;&gt;Chandan Shukla. UNLOGGED Tables in PostgreSQL When Speed Matters More Than Durability&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Введение&lt;/h2&gt;&lt;br /&gt;
Каждая реляционная база данных живет и умирает благодаря своему журналу транзакций. В SQL Server это файл журнала транзакций, в PostgreSQL это WAL (Write-Ahead Log - записывай сначала в журнал). Это работающее сердце, которое гарантирует надежность хранения, восстановление и репликацию. Без журнала вы не смогли бы обеспечить согласованность после сбоя, восстановить базу к определенному моменту времени или иметь надежные реплики.&lt;br /&gt;
&lt;br /&gt;
Поэтому идея отказа от журнализации звучит почти безумно. Почему кому-то в здравом уме захочется избежать журнализации?&lt;br /&gt;
&lt;br /&gt;
PostgreSQL дает вам именно такую возможность посредством таблиц UNLOGGED (нежурнализируемых). Это функция, которая меняет сценарий: таблица по-прежнему сохраняется на диске, но ее записи не попадают в WAL. Это означает существенно меньше накладных расходов, зачастую значительно более быстрые массовые операции, но при большом недостатке - ненадежность при сбоях базы данных.&lt;br /&gt;
&lt;br /&gt;
Для администраторов SQL Server это кажется странным. У нас нет подобной функции «один в один». Вы можете подумать о BULK INSERT с минимальной журнализацией, временных таблицах в tempdb или даже об оптимизированных для памяти таблицах SCHEMA_ONLY. Каждый из этих случаев имеет кусочек от поведения UNLOGGED, но не все целиком.&lt;br /&gt;
&lt;br /&gt;
В этой статье мы подробно рассмотрим таблицы UNLOGGED, зачем они нужны, как их можно использовать и о том, что позволяет отнести их к категории «специальных инструментов».&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/UNLOGGED-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Таблицы UNLOGGED в PostgreSQL: когда скорость важнее надежности&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 04 Mar 2026 08:50:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3320.html</guid>
    
</item>
<item>
    <title>Реальная стоимость произвольного ввода-вывода PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3318</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3318</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://vondra.me/&quot;&gt;Tomas Vondra&lt;/a&gt;, &lt;a href=&quot;https://vondra.me/posts/the-real-cost-of-random-io/&quot;&gt;The real cost of random I/O&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Параметр random_page_cost был &lt;a href=&quot;https://www.postgresql.org/message-id/flat/14601.949786166@sss.pgh.pa.us&quot;&gt;введён&lt;/a&gt; около 25 лет назад, и с самого начала его значение по умолчанию установлено как 4.0. С тех пор хранилища сильно изменились, как и код Postgres. Вполне вероятно, что значение по умолчание уже не совсем соответствует реальности. Но какое значение следует использовать вместо него? Флеш-память гораздо лучше справляется с произвольным вводом-выводом, так что, возможно, стоит уменьшить значение по умолчанию? Некоторые источники заходят так далеко, что рекомендуют устанавливать его в 1.0, как и seq_page_cost. Верна ли эта интуиция?&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Реальная стоимость произвольного ввода-вывода PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 27 Feb 2026 19:39:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3318.html</guid>
    
</item>
<item>
    <title>Заглянем в страницу PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3316</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3316</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Radim Marek, &lt;a href=&quot;https://postgr.es/p/7tI&quot;&gt;Radim Marek: Inside PostgreSQL&#039;s 8KB Page&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Если вы читали предыдущую &lt;a href=&quot;https://sql-ex.ru/blogs/?/Vvedenie_v_bufery_PostgreSQL.html&quot;&gt;статью о буферах&lt;/a&gt;, вы уже знаете, что PostgreSQL, возможно, не обязательно заботится о ваших строках. Вы можете вставлять профиль пользователя или извлекать платёжные реквизиты, но всё, с чем работает Postgres — это блоки данных. Если быть точным, блоки по 8КБ. Вам нужно получить одну крошечную строку? PostgreSQL тащит с диска целую страницу размером 8192 байта, только чтобы отдать её вам. Вы обновляете один единственный булев флаг? То же самое. 8КБ-страница является АТОМАРНОЙ единицей ввода-вывода.&lt;/p&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;p&gt;Но простого знания о существовании этих страниц недостаточно. Чтобы понять, почему база данных ведёт себя так, а не иначе, нужно понять, как она работает. Каждый раз, когда вы выполняете INSERT, PostgreSQL должен выяснить, как поместить его в одну из этих 8192-байтовых страниц.&lt;/p&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;p&gt;Пул буферов кэширует их, журнал упреждающей записи (WAL) защищает их, а VACUUM очищает их. Глубокое погружение во внутреннее устройство хранилища PostgreSQL начинается с понимания того, что происходит внутри этих 8КБ-страниц. Страниц, которые PostgreSQL использует для организации всех данных — таблиц, индексов, последовательностей, TOAST-отношений.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Заглянем в страницу PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 25 Feb 2026 12:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3316.html</guid>
    
</item>
<item>
    <title>Разрешение спора между COUNT(*) и COUNT(1) в Postgres 19</title>
    <link>https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3315</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3315</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.thatguyfromdelhi.com/2025/11/settling-count-vs-count1-debate-in.html&quot;&gt;Robins Tharakan. Settling COUNT(*) vs COUNT(1) debate in Postgres 19&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Недавнее изменение в основной ветке PostgreSQL принесло лучшее качество жизни очень общего паттерна SQL в плане оптимизации - &lt;b&gt;улучшение производительности до 64%&lt;/b&gt; для SELECT COUNT(h), где h - столбец NOT NULL.&lt;br /&gt;
&lt;br /&gt;
Если вы когда-либо задавались вопросом, что использовать - COUNT(*) или COUNT(1), или вы послушно придерживались использования COUNT(id) на не-NULL столбце, это изменение для вас.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Замечание:&lt;/b&gt; Эта функциональность в настоящее время реализована в основной ветке PostgreSQL (зафиксировано в ноябре 2025). Как и любая фиксация на основной ветке, она может подвергаться изменениям или даже отмене до финального релиза, хотя подобное происходит редко для зафиксированных функций. Если все будет нормально, это изменение станет частью релиза основной версии &lt;b&gt;PostgreSQL 19&lt;/b&gt;.&lt;/blockquote&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html#extended&quot;&gt;Continue reading &quot;Разрешение спора между COUNT(*) и COUNT(1) в Postgres 19&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 25 Feb 2026 10:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3315.html</guid>
    
</item>
<item>
    <title>Оптимизация Top K в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Top-K-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Top-K-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3310</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3310</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
     &lt;p&gt;Автор: Ming Ying, &lt;a href=&quot;https://postgr.es/p/7tB&quot;&gt;How We Optimized Top K in Postgres&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
 &lt;p&gt;В базах данных под Top K понимают «верни мне K наилучших строк, упорядоченных по некоторому столбцу или значению». Обычно это означает «самые последние строки», «наивысшие оценки» или «наибольшие значения».&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Казалось бы, это простая задача, которую Postgres должен решать без проблем. В конце концов, не можем ли мы просто создать индекс? Однако во многих рабочих инсталляциях Postgres Top K оказывается обманчиво сложной задачей. В этой статье рассматривается, где оптимизации Top K в Postgres показывают себя блестяще, где они дают сбой, и почему поисковые библиотеки вроде Lucene/Tantivy или базы данных, специализирующиеся на Top K, такие как ParadeDB, используют принципиально иной подход.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Top-K-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Оптимизация Top K в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 18 Feb 2026 14:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3310.html</guid>
    
</item>
<item>
    <title>Кэш страниц Linux и PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Linux-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Linux-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3309</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3309</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.sqlpassion.at/archive/author/siteadmin/&quot;&gt;Klaus Aschenbrenner&lt;/a&gt;,  &lt;a href=&quot;https://www.sqlpassion.at/archive/2026/02/17/the-linux-page-cache-and-postgresql/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-linux-page-cache-and-postgresql&quot;&gt;The Linux Page Cache and PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Производительность PostgreSQL в Linux часто обсуждается в терминах настройки SQL, индексов и планов запросов. Однако многие реальные проблемы с производительностью возникают гораздо ниже по стеку: внутри кэша страниц Linux и его политики обратной записи. PostgreSQL сознательно полагается на ядро для кэширования файлов и обратной записи, что означает, что неправильная конфигурация ядра может незаметно подорвать работу в остальном хорошо настроенных систем баз данных.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;В этой статье объясняется, как работает кэш страниц Linux, как PostgreSQL интегрируется с ним и, что наиболее важно, как неправильные настройки кэша страниц и грязных страниц могут негативно повлиять на рабочие нагрузки PostgreSQL.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Linux-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Кэш страниц Linux и PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 17 Feb 2026 15:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3309.html</guid>
    
</item>
<item>
    <title>Предложение VALUES или создание таблиц из ничего</title>
    <link>https://sql-ex.ru/blogs/?/VALUES.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
            <category>Oracle</category>
            <category>PostgreSQL</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/VALUES.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3308</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3308</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.red-gate.com/simple-talk/author/joe-celko/&quot;&gt;Joe Celko&lt;/a&gt;, &lt;a href=&quot;https://www.red-gate.com/simple-talk/databases/theory-and-design/values-clause-building-tables-out-nothing/&quot;&gt;The VALUES clause or building tables out of nothing&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Предложение VALUES, вероятно, одна из самых неправильно используемых возможностей в SQL. Если вы посмотрите на онлайн-форумы по SQL, вы увидите, что люди используют его как второе предложение в операторе вставки, но используют его для построения только одной строки за раз, например так:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;BEGIN&lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Aries&#039;, &#039;2025-03-21&#039;, &#039;2025-04-19&#039;);&lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Taurus&#039;, &#039;2025-04-20&#039;, &#039;2025-05-20&#039;);&lt;br /&gt;
… &lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Pisces&#039;, &#039;2023-05-19&#039;, &#039;2026-03-20&#039;);&lt;br /&gt;
END;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Каждый оператор вставки заканчивается точкой с запятой, поэтому они будут выполняться отдельно и в представленном порядке. Оптимизатор не осмеливается их объединять, потому что может быть прямая ссылка на предыдущие вставки.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Я думаю, люди пишут такой код, потому что именно так вы бы читали перфокарты. Каждая карта поступает в устройство чтения карт, буферизуется и записывается в порядке поступления на магнитную ленту или дисковый файл. Добро пожаловать в 1960-е! Перестаньте подражать старым языкам программирования, таким как FORTRAN или BASIC, в которых были операторы WRITE, помещающие по одной записи за раз в файл. Начните думать о работе с целыми множествами.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/VALUES.html#extended&quot;&gt;Continue reading &quot;Предложение VALUES или создание таблиц из ничего&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 16 Feb 2026 18:08:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3308.html</guid>
    
</item>
<item>
    <title>Где же мой кластерный индекс в PostgreSQL?</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3303</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3303</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.sqlpassion.at/archive/author/siteadmin/&quot;&gt;Klaus Aschenbrenner&lt;/a&gt;, &lt;a href=&quot;https://www.sqlpassion.at/archive/2026/02/11/where-is-my-clustered-index-in-postgresql/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=where-is-my-clustered-index-in-postgresql&quot;&gt;Where is My Clustered Index in PostgreSQL?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждый специалист по SQL Server рано или поздно достигает точки, когда внутреннее устройство хранения перестаёт быть абстракцией. Вы узнаёте, что таблица — это не просто логический контейнер, а физическая структура, и эта структура определяется кластерным индексом. Строки находятся на листовом уровне B-дерева, ключ кластеризации определяет физический порядок, и каждый некластерный индекс в конечном итоге ссылается обратно на этот ключ. Как только эта модель укореняется, настройка производительности начинает казаться почти интуитивной. Сканирование диапазона ведёт себя предсказуемо, поиск по закладкам (bookmark lookups) обретает смысл, а фрагментация становится ожидаемым следствием того, как хранятся данные.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Вот почему первое знакомство с PostgreSQL часто вызывает чувство дезориентации. Вы ищете кластерные индексы, потому что, исходя из вашего опыта, серьёзная система управления базами данных просто обязана их иметь. В конце концов вы обнаруживаете команду &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;CLUSTER&lt;/span&gt;&lt;/code&gt; и предполагаете, что нашли аналог. Затем вы понимаете, что это не постоянно, не автоматически и не принудительно. В этот момент PostgreSQL кажется неполноценным, словно в нём отсутствует фундаментальный механизм оптимизации.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Правда же заключается в том, что в PostgreSQL не отсутствуют кластерные индексы. Он &lt;strong&gt;сознательно выбрал иную основу&lt;/strong&gt;.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Где же мой кластерный индекс в PostgreSQL?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 12 Feb 2026 15:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3303.html</guid>
    
</item>
<item>
    <title>Вредят ли производительности подтранзакции в PostgreSQL?</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3305</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3305</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://shaneborden.com/about/&quot;&gt;Shane Borden&lt;/a&gt;, &lt;a href=&quot;https://shaneborden.com/2026/02/10/do-postgresql-sub-transactions-hurt-performance/&quot;&gt;Do PostgreSQL Sub-Transactions Hurt Performance?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Краткий ответ всегда: «возможно». Однако в этой статье я надеюсь продемонстрировать, что создаёт подтранзакции и что происходит с использованием общих идентификаторов транзакций (XID), когда они вызываются. Я также покажу, как на производительность влияет большое количество подключений, создающих и потребляющих подтранзакции.&lt;/p&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Вредят ли производительности подтранзакции в PostgreSQL?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 13 Feb 2026 11:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3305.html</guid>
    
</item>
<item>
    <title>Важность настройки контрольной точки в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3301</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3301</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.percona.com/blog/author/jobin-augustine/&quot;&gt;Jobin Augustine&lt;/a&gt;, &lt;a href=&quot;https://www.percona.com/blog/importance-of-tuning-checkpoint-in-postgresql/&quot;&gt;Importance of Tuning Checkpoint in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Тема настройки контрольной точки часто обсуждается в многочисленных блогах. Тем не менее, я постоянно сталкиваюсь со случаями, когда эта настройка остаётся неоптимизированной, что приводит к огромной растрате серверных ресурсов, борьбе с низкой производительностью и другим проблемам.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Поэтому настало время снова подчеркнуть её важность, но уже с большим количеством деталей, особенно для новых пользователей.&lt;/p&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Важность настройки контрольной точки в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 10 Feb 2026 19:02:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3301.html</guid>
    
</item>
<item>
    <title>Уменьшаем ошибки оценки количества строк в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3302</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3302</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://dev.to/shinyakato_&quot;&gt;Shinya Kato&lt;/a&gt;, &lt;a href=&quot;https://dev.to/shinyakato_/reducing-row-count-estimation-errors-in-postgresql-54ok&quot;&gt;Reducing row count estimation errors in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Планировщик запросов PostgreSQL полагается на статистику таблиц для оценки количества строк (предполагаемое количество строк), которое будет обрабатывать каждая операция, а затем выбирает оптимальный план выполнения на основе этих оценок. Когда предполагаемое количество строк значительно расходится с фактическим, планировщик может выбрать неоптимальный план, что приводит к серьёзному снижению производительности запросов.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;В этой статье рассматриваются четыре подхода, которые я использовал для снижения ошибок оценки количества строк, упорядоченные от наименее до наиболее вмешивающихся в систему. Из-за ограничений конфиденциальности я не могу делиться фактическими SQL-запросами или планами выполнения, поэтому основное внимание уделяется диагностике и применяемым методам.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Уменьшаем ошибки оценки количества строк в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 11 Feb 2026 12:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3302.html</guid>
    
</item>
<item>
    <title>Введение в буферы PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3288</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3288</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Radim Marek, &lt;a href=&quot;https://boringsql.com/posts/introduction-to-buffers/&quot;&gt;Introduction to Buffers in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Работа над RegreSQL заставила меня уделить много внимания буферам. Если вы иногда работаете с PostgreSQL, то наверняка слышали о настройке &lt;code&gt;shared_buffers&lt;/code&gt; и следовали старому доброму совету выставить его на уровне 1/4 от доступной оперативной памяти. Но после того как мы немного слишком увлеклись этой темой в недавнем выпуске Postgres FM, меня спросили, что к чему.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Буферы — одна из тех тем, которую легко забыть. И хотя они являются фундаментальным блоком архитектуры производительности PostgreSQL, большинство из нас воспринимает их как чёрный ящик. Эта статья попытается это изменить.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Введение в буферы PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 25 Jan 2026 11:52:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3288.html</guid>
    
</item>
<item>
    <title>Неиспользуемые индексы в PostgreSQL: риски, обнаружение и безопасное удаление</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3290</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3290</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/semabtariq&quot;&gt;Semab Tariq&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/unused-indexes-in-postgresql-risks-detection-and-safe-removal&quot;&gt;Unused Indexes In PostgreSQL: Risks, Detection, And Safe Removal&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Индексы существуют для ускорения доступа к данным. Они позволяют PostgreSQL избегать полного просмотра таблицы, значительно сокращая время выполнения запросов для рабочих нагрузок с интенсивным чтением.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Из реального производственного опыта мы наблюдали, что хорошо спроектированные, целевые индексы могут улучшить производительность запросов в 5 и более раз, особенно на больших транзакционных таблицах.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Однако индексы не являются бесплатными.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;И в этой статье мы обсудим, какие проблемы могут вызывать неиспользуемые индексы и как удалить их из производственных систем с планом отката, безопасно.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-,.html#extended&quot;&gt;Continue reading &quot;Неиспользуемые индексы в PostgreSQL: риски, обнаружение и безопасное удаление&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 27 Jan 2026 13:20:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3290.html</guid>
    
</item>
<item>
    <title>Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/NULL-Oracle,-SQL-Server-PostgreSQL.html</link>
            <category>Oracle</category>
            <category>PostgreSQL</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/NULL-Oracle,-SQL-Server-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3299</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3299</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://hexacluster.ai/blog/author/akhil-reddy-banappagari&quot;&gt;Akhil Reddy Banappagari&lt;/a&gt;, &lt;a href=&quot;https://hexacluster.ai/blog/null-and-empty-string-in-oracle-vs-sql-server-vs-postgresql&quot;&gt;Null and Empty String in Oracle vs SQL Server vs PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;При планировании &lt;a href=&quot;https://hexacluster.ai/database-migration-to-postgresql&quot;&gt;миграции баз данных в PostgreSQL&lt;/a&gt; именно мелочи часто становятся причиной самых серьёзных сбоев в рабочей среде. Одна из самых распространённых ловушек для разработчиков — это различная обработка значений &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;NULL&lt;/span&gt;&lt;/code&gt; и пустых строк (&lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;/code&gt;) в разных СУБД.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Хотя они могут казаться схожими концепциями, обозначающими отсутствие значения, то, как механизм базы данных их интерпретирует, может изменить результаты ваших запросов, нарушить уникальные ограничения или привести к сбоям загрузки данных. В этом руководстве мы сравним поведение &lt;a href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/26/sqlrf/Nulls.html&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;https://learn.microsoft.com/en-us/sql/t-sql/language-elements/null-and-unknown-transact-sql?view=sql-server-ver17&quot;&gt;SQL Server&lt;/a&gt; и &lt;a href=&quot;https://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt;, чтобы помочь вам избежать распространённых ошибок миграции.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img class= src=&quot;https://sql-ex.ru/blogs/uploads/null_vs_empty_string_ora_mssql_pg-1.png&quot;&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/NULL-Oracle,-SQL-Server-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 06 Feb 2026 18:36:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3299.html</guid>
    
</item>
<item>
    <title>Почему ваша архитектура высокой доступности — это иллюзия (и это нормально)</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3291</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3291</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://mydbanotebook.org/about/&quot;&gt;Lætitia AVROT&lt;/a&gt;, &lt;a href=&quot;https://mydbanotebook.org/posts/why-your-ha-architecture-is-a-lie-and-thats-okay/&quot;&gt;Why Your HA Architecture is a Lie (And That&#039;s Okay)&lt;/a&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Если бы Дарт Вейдер существовал и решил бы сделать с Землёй то же, что он сделал с Алдерааном, все потеряли бы данные.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Мне нравится эта цитата Роберта Хааса, потому что это отрезвляющая реальность, которая нужна всем нам. В мире баз данных нам постоянно продают мечту о «пяти девятках» (99,999% времени доступности) и «нулевой потере данных» (RPO=0). Мы тратим месяцы на построение сложных кластеров, чтобы достичь этого.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Давайте будем честными: это сказки. Красивые для воображения, но они не существуют в рабочей среде. Если планетарная лазерная пушка — или даже просто серьёзный сетевой обрыв — поразит ваш дата-центр, ваши «гарантии» исчезнут.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Моя цель сегодня — не помочь вам поверить в сказки. Моя цель — помочь вам построить архитектуру, которая действительно работает.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/unknown.html#extended&quot;&gt;Continue reading &quot;Почему ваша архитектура высокой доступности — это иллюзия (и это нормально)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 30 Jan 2026 16:11:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3291.html</guid>
    
</item>
<item>
    <title>500 миллисекунд на планирование: как статистика PostgreSQL замедлила запрос в 20 раз</title>
    <link>https://sql-ex.ru/blogs/?/500-PostgreSQL-20.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/500-PostgreSQL-20.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3294</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3294</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://substack.com/@danolivo&quot;&gt;Andrei Lepikhov&lt;/a&gt;, &lt;a href=&quot;https://danolivo.substack.com/p/500-milliseconds-on-planning-how&quot;&gt;500 Milliseconds on Planning: How PostgreSQL Statistics Slowed Down a Query 20 Times Over&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Запрос выполняется всего за 2 миллисекунды, но этап его планирования занимает 500 мс. База данных имеет разумный размер, запрос затрагивает 9 таблиц, а &lt;code&gt;default_statistics_target&lt;/code&gt; установлен всего в 500. Откуда такое несоответствие?&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Этот вопрос недавно был &lt;a href=&quot;https://www.postgresql.org/message-id/AS4PR02MB874303264FDEF9B160C06DF9EA8EA@AS4PR02MB8743.eurprd02.prod.outlook.com&quot;&gt;поднят в списке рассылки pgsql-performance&lt;/a&gt;, и расследование выявило несколько неожиданного виновника: статистика столбцов, хранящаяся в таблице &lt;code&gt;pg_statistic&lt;/code&gt; PostgreSQL.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/500-PostgreSQL-20.html#extended&quot;&gt;Continue reading &quot;500 миллисекунд на планирование: как статистика PostgreSQL замедлила запрос в 20 раз&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 01 Feb 2026 12:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3294.html</guid>
    
</item>
<item>
    <title>На пути к быстрому PostgreSQL: ключевые точки оптимизации памяти</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3296</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3296</wfw:commentRss>
    

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;&lt;strong&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/warda-bibi&quot;&gt;Warda Bibi&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/unlocking-high-performance-postgresql-key-memory-optimizations&quot;&gt;Unlocking High-Performance PostgreSQL: Key Memory Optimizations&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;PostgreSQL может чрезвычайно хорошо масштабироваться в производственной среде, но многие развертывания работают на консервативных значениях по умолчанию, которые безопасны, но далеки от оптимальных. Суть оптимизации производительности заключается в том, чтобы понимать, что на самом деле контролирует каждый параметр, как параметры взаимодействуют в условиях параллельной работы и как проверять влияние с помощью реальных метрик.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Это руководство проведёт вас через два самых важных параметра памяти:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
  &lt;li&gt;&lt;code&gt;shared_buffers&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;
  &lt;li&gt;&lt;code&gt;work_mem&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;На пути к быстрому PostgreSQL: ключевые точки оптимизации памяти&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 03 Feb 2026 14:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3296.html</guid>
    
</item>
<item>
    <title>Как обнаружить и устранить конфликты на уровне строк в PostgreSQL с помощью pgrowlocks</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-pgrowlocks.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-pgrowlocks.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3297</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3297</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@valentim.dba/how-to-detect-and-fix-row-level-contention-in-postgresql-using-pgrowlocks-c2574c8e8776&quot;&gt;Matheus dos Santos. How to Detect and Fix Row-Level Contention in PostgreSQL Using pgrowlocks&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Блокировки на уровне строк часто являются узким местом в производительности в среде баз данных с высокой конкуренцией. Когда транзакция ожидает блокировку на конкретную строку, это может привести в действие цепь задержек, которые трудно диагностировать. К счастью, PostgreSQL предоставляет мощный инструмент в модуле contrib, чтобы вытащить на свет эти неуловимые блокировки: pgrowlocks.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве мы представим практический подход к использованию pgrowlocks. Мы начнем с установки расширения с последующей имитацией блокировки, чтобы увидеть ее в действии и, наконец, построим мощную глобальную функцию для идентификации блокировок уровня строки по всей базе данных с данными о пользователе, запросе и продолжительности.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-pgrowlocks.html#extended&quot;&gt;Continue reading &quot;Как обнаружить и устранить конфликты на уровне строк в PostgreSQL с помощью pgrowlocks&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 05 Feb 2026 09:06:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3297.html</guid>
    
</item>
<item>
    <title>Понимание combinebackup в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/combinebackup-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/combinebackup-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3295</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3295</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://tomasz-gintowt.medium.com/understanding-pg-combinebackup-in-postgresql-2264f2546810&quot;&gt;Tomasz Gintowt. Understanding pg_combinebackup in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Начиная с PostgreSQL 17, сообщество базы данных получило долгожданную функцию: инкрементные бэкапы. Наряду с этим появился новый инструмент, pg_combinebackup, который играет важную роль в создании этих резервных копий на практике.&lt;br /&gt;
&lt;br /&gt;
В этой статье мы разберем, что делает pg_combinebackup, как он работает и как вы можете использовать его в ваших стратегиях резервирования и восстановления.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/combinebackup-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Понимание combinebackup в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 03 Feb 2026 11:24:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3295.html</guid>
    
</item>
<item>
    <title>Надежность PostgreSQL: как WAL помогает восстановить данные</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-WAL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-WAL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3279</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3279</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@tranaduc9x/postgresql-durability-how-wal-helps-you-recover-data-8b9858bfa24a&quot;&gt;Duc Ngo. PostgreSQL Durability: How WAL Helps You Recover Data&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;С целью повышения производительности PostgreSQL сначала сохраняет изменения в RAM.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;RAM ненадежна, поэтому сбой питания может привести к потере данных.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Write-Ahead Logging (WAL - упреждающая журнализация) записывает изменения перед записью на диск&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;WAL гарантирует согласованность  и надежность.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;После краха системы, PostgreSQL может восстановить утерянные изменения, используя WAL.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-WAL.html#extended&quot;&gt;Continue reading &quot;Надежность PostgreSQL: как WAL помогает восстановить данные&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 14 Jan 2026 12:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3279.html</guid>
    
</item>
<item>
    <title>Повышение производительности PostgreSQL: пошаговое руководство по использованию pg_hint_plan</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3278</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3278</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@valentim.dba/mastering-postgresql-performance-a-step-by-step-guide-to-pg-hint-plan-e21239df4b90&quot;&gt;Matheus dos Santos. Mastering PostgreSQL Performance: A Step-by-Step Guide to pg_hint_plan&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Планировщик запросов PostgreSQL - это сложный инженерный механизм, обычно принимающий блестящие решения относительно того, как выполнять ваши запросы. Однако в сложных сценариях или при необычных распределениях данных вы можете знать лучший способ. Именно в таких ситуациях на помощь приходит pg_hint_plan - мощное расширение, которое позволяет вам руководить, или &quot;советовать&quot;, планировщиком для выбора специфичного пути выполнения.&lt;br /&gt;
&lt;br /&gt;
Это руководство проведет вас через весь процесс, начиная с установки pg_hint_plan из источника до использования его, чтобы принудительно выполнить сканирование индекса на большом наборе данных,  демонстрируя возможности непосредственного управления производительностью вашего запроса.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html#extended&quot;&gt;Continue reading &quot;Повышение производительности PostgreSQL: пошаговое руководство по использованию pg_hint_plan&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 12 Jan 2026 11:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3278.html</guid>
    
</item>
<item>
    <title>Объяснение PostgreSQL REGEXP_MATCH: синтаксис, примеры использования и подводные камни</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-REGEXP_MATCH-,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-REGEXP_MATCH-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3275</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3275</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/the-table-sql-and-devtalk/postgresql-regexp-match-explained-syntax-use-cases-pitfalls-56b507f1b7cc&quot;&gt;DbVisualizer. PostgreSQL REGEXP_MATCH Explained: Syntax, Use Cases, Pitfalls&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Regex является мощным средством обнаружения структуры внутри беспорядочных строк. PostgreSQL использует тут первоклассные функции регулярных выражений, включая REGEXP_MATCH для сопоставления и извлечения шаблонов.&lt;br /&gt;
&lt;br /&gt;
Если вам когда-либо требовалось извлечь номер телефона из текста, проверить адрес электронной почты или захватить поименованный фрагмент строки, REGEXP_MATCH поможет вам сделать это за один шаг SQL.&lt;br /&gt;
&lt;br /&gt;
Ниже приведен практический экскурс в специфику этой функции: синтаксис, возвращаемые значения, общие случаи использования и некоторые ошибки, которых следует избегать в продакшене. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-REGEXP_MATCH-,.html#extended&quot;&gt;Continue reading &quot;Объяснение PostgreSQL REGEXP_MATCH: синтаксис, примеры использования и подводные камни&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 07 Jan 2026 23:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3275.html</guid>
    
</item>
<item>
    <title>Ныряем в кроличью нору возможностей Postgres 18</title>
    <link>https://sql-ex.ru/blogs/?/Postgres-18.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Postgres-18.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3271</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3271</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://xata.io/blog/going-down-the-rabbit-hole-of-postgres-18-features&quot;&gt;Tudor Golubenco. Going down the rabbit hole of Postgres 18 features&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Особое внимание в статье уделяется таким фундаментальным функциям, как инфраструктура асинхронного ввода-вывода и поддержка Oauth 2.0, оптимизации производительности, например, пропуску сканирования btree, а также долгожданным функциям, например, встроенной поддержке UUIDv7.&lt;br /&gt;
&lt;br /&gt;
Но при свыше 3000 вкладах в релиз имеется множество других изменений помимо упомянутых, о которых вы можете захотеть узнать. Мы поставили себе задачу осветить как можно больше изменений и в итоге рассмотрели около 30 функций в этой длинной записи блога (почти 5000 слов).&lt;br /&gt;
&lt;br /&gt;
Если вы все это не прочитаете, я вас не виню, итак, вот попытка на &quot;слишком много букв&quot;:&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Postgres-18.html#extended&quot;&gt;Continue reading &quot;Ныряем в кроличью нору возможностей Postgres 18&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 31 Dec 2025 23:39:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3271.html</guid>
    
</item>
<item>
    <title>Булевы значения и целые числа в базах данных: понимание компромиссов</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3269</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3269</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://dzone.com/articles/booleans-vs-integers&quot;&gt;Mamadou Cisse. Booleans vs Integers in Databases: Understanding the Trade-Offs&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Булевы значения просты и рациональны, но они плохо масштабируются, когда ваша модель данных эволюционирует. Целые числа могу элегантно обрабатывать множество состояний, уменьшая сложность схемы.&lt;br /&gt;
&lt;br /&gt;
При проектировании базы данных разработчики часто сталкиваются с выбором казалось бы простого решения: следует ли использовать булевы значения или целые для представления поля? Хотя на первый взгляд разница может показаться тривиальной, выбор может оказать существенное влияние на хранилище, поддержку и масштабируемость. Давайте исследуем &quot;за&quot; и &quot;против&quot; каждого подхода, сосредоточив внимание на размере хранилища, накладных операционных расходах и обслуживании в долгосрочной перспективе.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/unknown.html#extended&quot;&gt;Continue reading &quot;Булевы значения и целые числа в базах данных: понимание компромиссов&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 28 Dec 2025 23:51:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3269.html</guid>
    
</item>
<item>
    <title>PostgreSQL изнутри: кучи, страницы и CTID</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-,-CTID.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-,-CTID.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3267</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3267</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@vaitheeswaranlm/postgresql-internals-heaps-pages-and-ctids-9e4aed2ae4ad&quot;&gt;Vaitheeswaran L M. PostgreSQL Internals: Heaps, Pages, and CTIDs&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Строки не просто &quot;сидят&quot; в таблице в PostgreSQL. Они живут внутри страниц, перемещаются при обновлении и всякий раз получают новые &quot;адреса&quot; (CTID). Давайте разберемся подробнее и посмотрим, как это работает на самом деле.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;1. Куча: Движок хранилища PostgreSQL&lt;/h2&gt;&lt;br /&gt;
Когда вы создаете таблицу в PostgreSQL, она хранится как &lt;strong&gt;куча&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Куча - это просто неупорядоченная коллекция строк (кортежей). В отличие от некоторых баз данных, PostgreSQL автоматически не сохраняет строки в неком отсортированном порядке или по первичному ключу. Вместо этого она просто добавляет их на доступное пространство внутри &lt;strong&gt;страниц&lt;/strong&gt; (блоков фиксированного размера 8Кб на диске).&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2025/12/PG_heaps_1.webp&quot; /&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-,-CTID.html#extended&quot;&gt;Continue reading &quot;PostgreSQL изнутри: кучи, страницы и CTID&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 24 Dec 2025 23:40:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3267.html</guid>
    
</item>
<item>
    <title>PostgreSQL 18: строки OLD и NEW в предложении RETURNING</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-18-OLD-NEW-RETURNING.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-18-OLD-NEW-RETURNING.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3257</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3257</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.crunchydata.com/blog/postgres-18-old-and-new-in-the-returning-clause&quot;&gt;Brandur Leach. Postgres 18: OLD and NEW Rows in the RETURNING Clause&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
В этом релизе чуть ниже от таких основных функций, как асинхронный ввод-вывод и поддержка UUIDv7, мы видим это небольшое приятное улучшение:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&quot;В этом релизе добавлены возможности доступа как к предыдущим (OLD), так и к текущим (NEW) значениям в предложении RETURNING для команд INSERT, UPDATE, DELETE and MERGE.&quot; &lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Это не такая уж крутая вещь, как асинхронный ввод-вывод, но одна из тех небольших функций, которые неоценимы в определенных ситуациях.&lt;br /&gt;
&lt;br /&gt;
Простая демонстрация с UPDATE для получения всех старых и новых значений:&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-18-OLD-NEW-RETURNING.html#extended&quot;&gt;Continue reading &quot;PostgreSQL 18: строки OLD и NEW в предложении RETURNING&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 11 Dec 2025 09:09:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3257.html</guid>
    
</item>

</channel>
</rss>
