<?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 - Articles</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>Thu, 11 Jun 2026 07:31:00 GMT</pubDate>

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

<item>
    <title>Всё о GUC по порядку: debug_* family</title>
    <link>https://sql-ex.ru/blogs/?/GUC-debug_-family.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-debug_-family.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3415</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-the-debug-family/&quot;&gt;All Your GUCs in a Row: the debug_* family&lt;/a&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Двенадцать параметров имеют префикс &lt;code&gt;debug_&lt;/code&gt;, и этот префикс является значимым: это собственные средства разработки и контроля качества PostgreSQL, предоставленные в виде настроек времени выполнения, чтобы сборочная ферма (&lt;em&gt;buildfarm&lt;/em&gt;) и разработчики ядра могли тестировать пути кода без перекомпиляции. Pavlo Golub, пишущий об одном из них, подвёл итог правильному подходу: «Я никогда-никогда не буду трогать параметр времени выполнения с префиксом “debug” в своих производственных кластерах». В основном это правильно. Давайте разберём дюжину параметров и то, что они на самом деле дают, потому что один или два тихо полезны, а остальными стоит восхищаться с безопасного расстояния.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-debug_-family.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: debug_* family&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 11 Jun 2026 10:31:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3415.html</guid>
    
</item>
<item>
    <title>Зло (и польза) DISTINCT</title>
    <link>https://sql-ex.ru/blogs/?/DISTINCT.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/DISTINCT.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3414</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3414</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://drsql.link/2026/02/11/the-evil-and-value-of-distinct/&quot;&gt;Louis Davidson. The evil (and value) of DISTINCT&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Есть ли в SQL ключевое слово, которое вызывало бы больший страх, чем DISTINCT. Когда я вижу его в запросе, то сразу начинаю беспокоиться о том, сколько работы мне предстоит сделать, чтобы убедиться в правильности этого запроса. Я начинаю искать комментарии, объясняющие, почему оно тут находится, и если не обнаруживаю, то знаю, что запрос, вероятно, будет неправильным.&lt;br /&gt;
&lt;br /&gt;
Я наблюдал такие DISTINCT, которые скрывали плохие соединения, отсутствующую группировку и даже пропущенные предложения WHERE. Я видел разработчиков, которые использовали его как &quot;универсальное решение&quot; проблем с данными.&lt;br /&gt;
&lt;br /&gt;
В этой статье я рассмотрю правильное и явно опасное использование DISTINCT, а также покажу, как вы можете протестировать ваш запрос, который использует DISTINCT, чтобы увидеть, что он на самом деле скрывает.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/DISTINCT.html#extended&quot;&gt;Continue reading &quot;Зло (и польза) DISTINCT&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 09 Jun 2026 16:16:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3414.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: bgwriter_delay и bgwriter_flush_afte</title>
    <link>https://sql-ex.ru/blogs/?/GUC-bgwriter_delay-bgwriter_flush_afte.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-bgwriter_delay-bgwriter_flush_afte.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3413</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-bgwriterdelay-and-bgwriterflushafter/&quot;&gt;All Your GUCs in a Row: bgwriter_delay and bgwriter_flush_after&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Кластер параметров на букву &lt;strong&gt;B&lt;/strong&gt; меняет направление: от разовых странностей к параметрам фонового процесса записи (&lt;em&gt;background writer&lt;/em&gt;), которых насчитывается четыре GUC. Первые два мы рассмотрим как пару, потому что &lt;code&gt;bgwriter_delay&lt;/code&gt; знакомит нас с самим процессом, а &lt;code&gt;bgwriter_flush_after&lt;/code&gt; органично вписывается в экскурсию по механизму writeback из статьи про &lt;code&gt;&lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-bgwriterdelay-and-bgwriterflushafter/&quot;&gt;backend_flush_after&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-bgwriter_delay-bgwriter_flush_afte.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: bgwriter_delay и bgwriter_flush_afte&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 07 Jun 2026 13:23:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3413.html</guid>
    
</item>
<item>
    <title>Обзор индексов в MySQL: B-Tree индексы FULLTEXT</title>
    <link>https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3412</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3412</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.red-gate.com/simple-talk/databases/mysql/mysql-index-overviews-fulltext-b-tree-indexes/&quot;&gt;Lukas Vileikis. MySQL Index Overviews FULLTEXT B-Tree Indexes&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Что такое полнотекстовое индексирование?&lt;/h2&gt;&lt;br /&gt;
Полнотекстовые индексы - это особый тип индекса, который позволяет быстро и эффективно выполнять поиск по данным, используя довольно экзотические режимы поиска. В MySQL эти режимы включают, но не ограничиваются ими, логический режим, режим естественного языка и режим поиска с использованием расширения запроса. Некоторые из режимов поиска, ставшие возможными благодаря использованию полнотекстовых индексов, предоставляют уникальную поддержку для различной интерпретации определенных символов, поиска подразумеваемых данных и других специфических нюансов.&lt;br /&gt;
&lt;br /&gt;
Полнотекстовое индексирование работает аналогичным образом во многих системах управления базами данных и существенно не менялось годами - загляните в &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/simple-talk/databases/sql-server/learn/understanding-full-text-indexing-in-sql-server/&quot;&gt;блог Роберта Шелдона, посвященного полнотекстовому поиску более двух десятилетий назад&lt;/a&gt;, и вы конечно найдете что-нибудь, что изменилось в вашей установке SQL Server, но вы также обнаружите множество вещей, которые остались неизменными; и то же самое можно сказать о других системах управления базами данных.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html#extended&quot;&gt;Continue reading &quot;Обзор индексов в MySQL: B-Tree индексы FULLTEXT&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 07 Jun 2026 08:37:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3412.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: backslash_quote</title>
    <link>https://sql-ex.ru/blogs/?/GUC-backslash_quote.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-backslash_quote.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3411</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-backtracefunctions/&quot;&gt;All Your GUCs in a Row: backtrace_functions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Параметр для разработчиков (&lt;em&gt;developer option&lt;/em&gt;) и действительно полезный. &lt;code&gt;backtrace_functions&lt;/code&gt; принимает разделённый запятыми список имён внутренних C-функций; если ошибка возникает внутри любой функции из списка, PostgreSQL записывает трассировку стека на уровне C (&lt;em&gt;C-level stack trace&lt;/em&gt;) в журнал сервера вместе с ошибкой. Добавлен в PostgreSQL 13. Значение по умолчанию — пустая строка. Контекст — &lt;code&gt;superuser&lt;/code&gt; (или любой пользователь с соответствующим привилегией &lt;code&gt;SET&lt;/code&gt;). Доступен не на всех платформах, и качество вывода зависит от того, как был скомпилирован PostgreSQL.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это необычная область для оператора — это параметр для исследования исходного кода самого сервера, когда что-то идёт не так, а не для настройки поведения. Но если вы когда-либо смотрели на ошибку &lt;code&gt;ERROR: tuple concurrently updated&lt;/code&gt; или &lt;code&gt;cache lookup failed for relation NNNNN&lt;/code&gt; и задавались вопросом «откуда это в исходном коде», это инструмент для вас.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-backslash_quote.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: backslash_quote&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 06 Jun 2026 11:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3411.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: backslash_quote</title>
    <link>https://sql-ex.ru/blogs/?/GUC-backslash_quote.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-backslash_quote.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3409</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-backslashquote/&quot;&gt;All Your GUCs in a Row: backslash_quote&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Первый исторический артефакт в кластере параметров на букву &lt;strong&gt;B&lt;/strong&gt;. &lt;code&gt;backslash_quote&lt;/code&gt; управляет тем, принимается ли &lt;code&gt;\&#039;&lt;/code&gt; как способ представления одиночной кавычки внутри строкового литерала SQL. Он существует из-за уязвимости SQL-инъекции 2006 года, связанной с многобайтовыми кодировками символов, и почти двадцать лет спустя он всё ещё находится в списке GUC, потому что его удаление нарушило бы работу какого-нибудь приложения где-то. PostgreSQL консервативен в таких вопросах.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-backslash_quote.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: backslash_quote&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 05 Jun 2026 17:22:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3409.html</guid>
    
</item>
<item>
    <title>TOAST — куда PostgreSQL прячет большие значения</title>
    <link>https://sql-ex.ru/blogs/?/TOAST-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/TOAST-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3408</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Radim Marek, &lt;a href=&quot;https://postgr.es/p/9jM&quot;&gt;TOAST: Where PostgreSQL hides big values&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждый кортеж кучи (&lt;em&gt;heap tuple&lt;/em&gt;) живёт внутри страницы размером строго 8 КБ. Всё остальное построено поверх этого жёсткого ограничения: &lt;a href=&quot;https://boringsql.com/posts/postgresql-mvcc-byte-by-byte/&quot;&gt;MVCC&lt;/a&gt;, &lt;a href=&quot;https://sql-ex.ru/blogs/?/HOT_UPDATE_v_PostgreSQL.html&quot;&gt;HOT update&lt;/a&gt; и индексы, указывающие на &lt;code&gt;(страница, указатель_строки)&lt;/code&gt;. И тем не менее, это всё ещё работает:&lt;/p&gt;&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE docs (id int PRIMARY KEY, body jsonb);&lt;br /&gt;
INSERT INTO docs VALUES (1, (SELECT jsonb_agg(g) FROM generate_series(1, 100000) g));&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Это значение &lt;code&gt;body&lt;/code&gt; где-то за полмегабайта. Страница кучи по-прежнему имеет размер 8 КБ. Оба утверждения истинны одновременно, и механизм, который позволяет им сосуществовать, называется &lt;strong&gt;TOAST: The Oversized-Attribute Storage Technique&lt;/strong&gt; (техника хранения чрезмерно больших атрибутов).&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/TOAST-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;TOAST — куда PostgreSQL прячет большие значения&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 05 Jun 2026 15:38:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3408.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: backend_flush_after</title>
    <link>https://sql-ex.ru/blogs/?/GUC-backend_flush_after.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-backend_flush_after.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3406</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-backendflushafter/&quot;&gt;All Your GUCs in a Row: backend_flush_after&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Мы открываем кластер параметров на букву &lt;strong&gt;B&lt;/strong&gt; параметром, само существование которого является признанием сложных отношений. У PostgreSQL сложные отношения с кэшем страниц Linux (&lt;em&gt;page cache&lt;/em&gt;), и &lt;code&gt;backend_flush_after&lt;/code&gt; — один из четырёх GUC, которые существуют для управления этими отношениями. Остальные три — &lt;code&gt;bgwriter_flush_after&lt;/code&gt;, &lt;code&gt;checkpoint_flush_after&lt;/code&gt; и &lt;code&gt;wal_writer_flush_after&lt;/code&gt; — получат свои собственные статьи в своё время. Они используют общий механизм и имеют общую мотивацию, и эту мотивацию стоит понять, прежде чем мы погрузимся в конкретный параметр.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-backend_flush_after.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: backend_flush_after&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 04 Jun 2026 16:18:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3406.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=3407</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: stormatics.tech, &lt;a href=&quot;https://40095450.fs1.hubspotusercontent-na2.net/hubfs/40095450/Whitepapers/Whitepaper%20Transparent%20Data%20Encryption%20and%20High%20Availability.pdf&quot;&gt;Transparent Data Encryption and High Availability&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Прозрачное шифрование данных (Transparent Data Encryption, TDE) стало обязательным требованием для многих предприятий, хранящих конфиденциальные данные, будь то персональные или финансовые. Однако этот эффект обычно означает, что резервные копии бесполезны без отдельного хранимого ключа шифрования, а запуск самого сервера может не выполняться в полностью автоматизированном режиме (в зависимости от того, как настроено управление ключами). Взаимодействие между этими компонентами не всегда интуитивно понятно. Данная статья призвана внести ясность.&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/?/unknown.html#extended&quot;&gt;Continue reading &quot;Прозрачное шифрование данных и высокая доступность&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 04 Jun 2026 17:06:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3407.html</guid>
    
</item>
<item>
    <title>SSL в PostgreSQL: введение в шифрование подключений к базе данных</title>
    <link>https://sql-ex.ru/blogs/?/SSL-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SSL-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3405</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/shridhar-khanal&quot;&gt;Shridhar Khanal&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/ssl-in-postgresql&quot;&gt;SSL in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
    &lt;p&gt;«&quot;SSL включён&quot; и &quot;SSL действительно работает&quot; — это две большие разницы».&lt;/p&gt;&lt;br /&gt;
&lt;/blockquote&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SSL-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;SSL в PostgreSQL: введение в шифрование подключений к базе данных&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 04 Jun 2026 15:26:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3405.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_worker_slots</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_worker_slots.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_worker_slots.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3404</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumworkerslots/&quot;&gt;All Your GUCs in a Row: autovacuum_worker_slots&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Последняя запись в кластере параметров автовакуума и самая новая. PostgreSQL 18 представил &lt;code&gt;autovacuum_worker_slots&lt;/code&gt; для решения давней операционной проблемы: изменение &lt;code&gt;autovacuum_max_workers&lt;/code&gt; ранее требовало перезапуска сервера, что делало невозможным реагирование на меняющуюся рабочую нагрузку вакуума без окна обслуживания. PG 18 исправляет это, разделяя параметр на две части.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_worker_slots.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_worker_slots&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 03 Jun 2026 10:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3404.html</guid>
    
</item>
<item>
    <title>wal_level, который вы установили, — это не тот wal_level, который вы получите</title>
    <link>https://sql-ex.ru/blogs/?/wal_level,-,-wal_level,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/wal_level,-,-wal_level,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3403</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/the-wallevel-you-set-is-not-the-wallevel-you-get/&quot;&gt;The wal_level You Set Is Not the wal_level You Get&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;С тех пор как в PostgreSQL существует логическая репликация, правило было таковым: если вы когда-нибудь захотите её использовать, установите &lt;code&gt;wal_level = logical&lt;/code&gt; при запуске сервера и живите с объёмом WAL вечно. Стоимость не была катастрофической, но она была постоянной. Установите один раз — платите всегда, включая 364 дня в году, когда вы не использовали ни одного логического слота.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;PostgreSQL 19 меняет это. Параметр всё ещё существует. Он просто больше не совсем то, что вы установили.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/wal_level,-,-wal_level,.html#extended&quot;&gt;Continue reading &quot;wal_level, который вы установили, — это не тот wal_level, который вы получите&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 03 Jun 2026 10:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3403.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_work_mem</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_work_mem.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_work_mem.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3402</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumworkmem/&quot;&gt;All Your GUCs in a Row: autovacuum_work_mem&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;autovacuum_work_mem&lt;/code&gt; задаёт максимальный объём памяти, который каждый рабочий процесс автовакуума может использовать для отслеживания идентификаторов мёртвых кортежей (TID — tuple identifier) во время вакуума. Значение по умолчанию: &lt;strong&gt;-1&lt;/strong&gt;, что означает «унаследовать от &lt;code&gt;maintenance_work_mem&lt;/code&gt;». Контекст параметра — &lt;code&gt;sighup&lt;/code&gt;. Этот параметр существует для того, чтобы потребление памяти автовакуумом можно было настраивать независимо от памяти, используемой ручным &lt;code&gt;VACUUM&lt;/code&gt;, &lt;code&gt;CREATE INDEX&lt;/code&gt;, &lt;code&gt;REINDEX&lt;/code&gt; и другими разовыми операциями обслуживания.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_work_mem.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_work_mem&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 02 Jun 2026 17:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3402.html</guid>
    
</item>
<item>
    <title>Делаем JSONB более удобным для запросов с помощью генерируемых столбцов</title>
    <link>https://sql-ex.ru/blogs/?/JSONB.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/JSONB.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3401</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3401</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/05/11/generated_columns_jsonb.html&quot;&gt;Making JSONB More Queryable with Generated Columns&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;За последний год я работал в нескольких контекстах, управляя большими объёмами данных, хранящихся в формате JSONB в PostgreSQL. Сценарий обычен: пользователи ценят гибкость документо-ориентированной модели хранения, избегая необходимости предопределять схемы или постоянно мигрировать структуры таблиц по мере изменения их требований к данным. JSONB-документы могут быть глубоко вложенными с многочисленными необязательными полями и масштабироваться до сотен килобайт на запись без проблем. Однако, когда приходит время запрашивать эти документы — фильтровать по идентификатору пользователя, типу события, временным меткам или вложенным свойствам действий — запросы могут стать медленными и/или неудобными для работы.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Проблема, которую я хочу решить: «Как сделать поиск по JSONB-данным более эффективным, не разбивая наши документы и не вставляя их в столбцы реляционной базы данных?» В Postgres доступно несколько подходов, каждый со своими компромиссами. Я надеюсь пролить свет на эти подходы в этой статье.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/JSONB.html#extended&quot;&gt;Continue reading &quot;Делаем JSONB более удобным для запросов с помощью генерируемых столбцов&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 02 Jun 2026 14:54:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3401.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_vacuum_scale_factor и autovacuum_vacuum_threshold</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_scale_factor-autovacuum_vacuum_threshold.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_scale_factor-autovacuum_vacuum_threshold.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3400</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumvacuumscalefactor-and-autovacuumvacuumthreshold/&quot;&gt;All Your GUCs in a Row: autovacuum_vacuum_scale_factor and autovacuum_vacuum_threshold&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Классическая пара параметров запуска вакуума, наконец. Последние несколько статей мы потратили на параметры, которые изменяют, ограничивают или дополняют формулу запуска, управляемую этими двумя; теперь мы добрались до оригиналов.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Формула:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;&lt;code&gt;порог_вакуума = autovacuum_vacuum_threshold&lt;br /&gt;
                 + autovacuum_vacuum_scale_factor × reltuples&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Когда количество устаревших кортежей (обновлённых или удалённых строк) с момента последнего вакуума превышает это значение, автовакуум планирует выполнение &lt;code&gt;VACUUM&lt;/code&gt; для таблицы. В PostgreSQL 18 и новее результат также ограничивается параметром &lt;code&gt;autovacuum_vacuum_max_threshold&lt;/code&gt;. Значения по умолчанию: &lt;code&gt;autovacuum_vacuum_threshold = 50&lt;/code&gt;, &lt;code&gt;autovacuum_vacuum_scale_factor = 0.2&lt;/code&gt;. Оба параметра имеют контекст &lt;code&gt;sighup&lt;/code&gt;, и для каждого существуют переопределения на уровне таблицы через параметры хранения.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_scale_factor-autovacuum_vacuum_threshold.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_vacuum_scale_factor и autovacuum_vacuum_threshold&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 01 Jun 2026 18:08:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3400.html</guid>
    
</item>
<item>
    <title>Оптимизация поиска при использовании SQL LIKE с подстановочными знаками</title>
    <link>https://sql-ex.ru/blogs/?/SQL-LIKE.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-LIKE.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3399</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3399</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.mssqltips.com/sqlservertip/8100/optimize-sql-like-wildcard-searches/&quot;&gt;Simon Liew. Optimize SQL LIKE Wildcard Searches&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Полный поиск по шаблону (например, LIKE &#039;%поисковая_фраза%&#039;) в Microsoft SQL Server может быть медленным и неэффективным, поскольку гарантируется сканирование всех строк в таблице. Имеются ли какие-нибудь варианты оптимизации запросов с оператором SQL LIKE?&lt;br /&gt;
&lt;br /&gt;
Оптимизация независимого от регистра полного поиска по шаблону с начальным и конечным подстановочным знаком является проблемой в базах данных SQL - эти шаблоны LIKE не получают выгоды от индексирования. Здесь исследуются  потенциальные варианты оптимизации такого поиска и проверяются распространенные заблуждения.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-LIKE.html#extended&quot;&gt;Continue reading &quot;Оптимизация поиска при использовании SQL LIKE с подстановочными знаками&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 30 May 2026 23:09:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3399.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_vacuum_max_threshold</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_max_threshold.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_max_threshold.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3397</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumvacuummaxthreshold/&quot;&gt;All Your GUCs in a Row: autovacuum_vacuum_max_threshold&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Новинка в PostgreSQL 18. Этот параметр является первоклассным исправлением проблемы, с которой всё сообщество боролось около пятнадцати лет: на очень больших таблицах стандартная формула запуска вакуума ждёт абсурдно долго, прежде чем что-либо сделать.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Исходная формула:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;&lt;code&gt;порог_вакуума = autovacuum_vacuum_threshold&lt;br /&gt;
                 + autovacuum_vacuum_scale_factor × reltuples&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;При значениях по умолчанию — &lt;code&gt;autovacuum_vacuum_threshold = 50&lt;/code&gt; и &lt;code&gt;autovacuum_vacuum_scale_factor = 0.2&lt;/code&gt; — таблица на 100 миллионов строк ждёт 20 миллионов мёртвых кортежей, прежде чем запустится вакуум. Таблица на миллиард строк ждёт 200 миллионов. К моменту, когда вакуум действительно запускается, у вас уже огромное количество раздувания (&lt;em&gt;bloat&lt;/em&gt;), сам вакуум занимает часы, а следующий запускается из такого же плохого состояния.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Классическим обходным решением (&lt;em&gt;workaround&lt;/em&gt;) была покадровая настройка &lt;code&gt;autovacuum_vacuum_scale_factor&lt;/code&gt; для каждой таблицы до значений вроде 0.02 или 0.005, которую мы обсудим, когда доберёмся до этих параметров в следующей статье. Это работает, но требует предварительного выявления каждой большой таблицы и назначения ей индивидуальных параметров хранения (&lt;em&gt;storage parameters&lt;/em&gt;). Легко забыть, легко упустить, когда маленькая таблица вырастает в большую.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_max_threshold.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_vacuum_max_threshold&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 29 May 2026 11:41:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3397.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_vacuum_insert_scale_factor и autovacuum_vacuum_insert_threshold</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_insert_scale_factor-autovacuum_vacuum_insert_threshold.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_insert_scale_factor-autovacuum_vacuum_insert_threshold.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3396</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumvacuuminsertscalefactor-and-autovacuumvacuuminsertthreshold/&quot;&gt;All Your GUCs in a Row: autovacuum_vacuum_insert_scale_factor and autovacuum_vacuum_insert_threshold&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Эти два параметра образуют третью согласованную пару в комплекте автовакуума, после пары для &lt;code&gt;ANALYZE&lt;/code&gt; и пары для обычного вакуума (последняя будет рассмотрена следующей). Они управляют тем, когда автовакуум запускает &lt;code&gt;VACUUM&lt;/code&gt; для таблицы на основе количества вставок (&lt;code&gt;INSERT&lt;/code&gt;) с момента последнего вакуума — не обновлений, не удалений, только вставок. Они были добавлены в PostgreSQL 13 и существуют для решения конкретной проблемы.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_vacuum_insert_scale_factor-autovacuum_vacuum_insert_threshold.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_vacuum_insert_scale_factor и autovacuum_vacuum_insert_threshold&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 28 May 2026 14:00:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3396.html</guid>
    
</item>
<item>
    <title>Вы обеспечили выборы лидера в Patroni, но это только начало пути к высокой доступности PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Patroni,-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni,-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3395</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3395</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/patroni-leader-election-and-postgresql-high-availability&quot;&gt;You have a Patroni leader election. You are only halfway to PostgreSQL high availability&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Первичный сервер PostgreSQL теряет питание в 2 часа ночи. Запись возобновляется менее чем за тридцать секунд. Дежурный инженер читает оповещение утром, видит, что кластер восстановился самостоятельно, и возвращается к кофе. Это тот результат, который должна обеспечивать высокая доступность PostgreSQL.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Работающий кластер Patroni сам по себе доводит вас лишь до половины пути. Выборы лидера работают. Резервный сервер (&lt;em&gt;standby&lt;/em&gt;) повышается до первичного. Состояние кластера в etcd остаётся согласованным. Затем приложение продолжает пытаться подключиться к IP-адресу, который теперь указывает на неправильный узел, старый первичный сервер требует ручного повторного присоединения (&lt;em&gt;rejoin&lt;/em&gt;), и дежурный инженер оказывается на конференц-связи, а не в постели.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Я видел этот шаблон достаточно часто, чтобы назвать его стандартным. Кластер делает свою работу. Приложение ждёт человека. Достаётся инструкция (&lt;em&gt;runbook&lt;/em&gt;). Время восстановления (&lt;em&gt;RTO&lt;/em&gt;) превышает соглашение об уровне обслуживания (&lt;em&gt;SLA&lt;/em&gt;). Все соглашаются после этого, что «нам следует серьёзнее отнестись к высокой доступности».&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Patroni,-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Вы обеспечили выборы лидера в Patroni, но это только начало пути к высокой доступности PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 28 May 2026 12:31:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3395.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_naptime, autovacuum_vacuum_cost_delay, autovacuum_vacuum_cost_limit</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_naptime,-autovacuum_vacuum_cost_delay,-autovacuum_vacuum_cost_limit.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_naptime,-autovacuum_vacuum_cost_delay,-autovacuum_vacuum_cost_limit.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3394</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuumnaptime-autovacuumvacuumcostdelay-autovacuumvacuumcostlimit/&quot;&gt;All Your GUCs in a Row: autovacuum_naptime, autovacuum_vacuum_cost_delay, autovacuum_vacuum_cost_limit&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Эти три параметра вместе задают темп работы автовакуума: как часто он запускается, как интенсивно работает во время выполнения и как долго приостанавливается, чтобы не монополизировать ваш ввод-вывод. Как и пара параметров &lt;code&gt;autovacuum_analyze_&amp;#42;&lt;/code&gt;, их лучше всего понимать как единое целое.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_naptime,-autovacuum_vacuum_cost_delay,-autovacuum_vacuum_cost_limit.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_naptime, autovacuum_vacuum_cost_delay, autovacuum_vacuum_cost_limit&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 27 May 2026 16:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3394.html</guid>
    
</item>
<item>
    <title>HOT UPDATE в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/HOT-UPDATE-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/HOT-UPDATE-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3393</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Radim Marek, &lt;a href=&quot;https://boringsql.com/posts/hot-updates/&quot;&gt;HOT Updates in Postgres&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В &lt;a href=&quot;https://boringsql.com/posts/postgresql-mvcc-byte-by-byte/&quot;&gt;предыдущей статье&lt;/a&gt; мы видели, как каждое обновление (&lt;code&gt;UPDATE&lt;/code&gt;) оставляет после себя мёртвый кортеж. То же поведение «копирования при записи» (&lt;em&gt;copy-on-write&lt;/em&gt;) проявляется с операционной точки зрения в статье «&lt;a href=&quot;https://boringsql.com/posts/deletes-are-difficult/&quot;&gt;DELETEs are difficult&lt;/a&gt;». Это плата за MVCC, и если мы имеем дело только с кучей (&lt;em&gt;heap&lt;/em&gt;) это терпимо. Проблема в индексах.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждое обновление в PostgreSQL потенциально записывает данные во все индексы таблицы, даже если индексированные столбцы не изменились. Пять индексов, один обновлённый столбец? Пять лишних операций записи в индексы, пять новых записей для вакуума, в пять раз больше трафика WAL. При тысячах обновлений в секунду это становится доминирующей стоимостью работы с таблицей, в которой много обновлений.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Heap-Only Tuple (HOT) updates&lt;/strong&gt; — это механизм PostgreSQL, позволяющий обойти эту проблему. На мой взгляд, это самое изящное оптимизационное решение в движке хранения. Давайте проследим, как именно оно работает.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/HOT-UPDATE-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;HOT UPDATE в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 27 May 2026 14:12:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3393.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_multixact_freeze_max_age</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_multixact_freeze_max_age.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_multixact_freeze_max_age.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3392</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuummaxworkers/&quot;&gt;All Your GUCs in a Row: autovacuum_multixact_freeze_max_age&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Этот параметр является multixact-эквивалентом &lt;code&gt;autovacuum_freeze_max_age&lt;/code&gt;. Механизм параллелен; защищаемый объект — не пространство идентификаторов транзакций (XID), а пространство идентификаторов MultiXact, о котором большинство пользователей PostgreSQL никогда не задумывались, а остальные узнали о нём во время аварии. Итак, перед рассмотрением параметра — краткий обзор multixact.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_multixact_freeze_max_age.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_multixact_freeze_max_age&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 26 May 2026 15:52:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3392.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=3391</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Laurenz Albe, &lt;a href=&quot;https://postgr.es/p/9gL&quot;&gt;My queries to monitor autovacuum&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;За годы обучения, консультирования и поддержки пользователей PostgreSQL я разработал несколько запросов для мониторинга автовакуума. Мониторинг автовакуума — не новое требование, поэтому существует уже много готовых запросов для мониторинга. Однако не все эти запросы полезны. Поэтому я подумал, что будет хорошей идеей написать статью о моей собственной коллекции — как для себя в качестве справочника, так и в качестве услуги для администраторов PostgreSQL по всему миру.&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>Tue, 26 May 2026 13:52:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3391.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: autovacuum_max_workerst</title>
    <link>https://sql-ex.ru/blogs/?/GUC-autovacuum_max_workerst.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-autovacuum_max_workerst.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3390</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-autovacuummaxworkers/&quot;&gt;All Your GUCs in a Row: autovacuum_max_workers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;autovacuum_max_workers&lt;/code&gt; задаёт максимальное количество фоновых процессов автовакуума (&lt;em&gt;autovacuum worker processes&lt;/em&gt;), которые могут выполняться одновременно. Значение по умолчанию — &lt;strong&gt;3&lt;/strong&gt;. Контекст параметра — &lt;code&gt;postmaster&lt;/code&gt;, поэтому его изменение требует перезапуска сервера. Процесс-планировщик (&lt;em&gt;launcher process&lt;/em&gt;) является отдельным и не учитывается в этом числе.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Это тот параметр, который кто-то увеличивает с 3 до 10, решив, что автовакуум работает слишком медленно, после чего обнаруживает, что вакуум, как ни странно, на самом деле не стал быстрее. У этого есть причина, и это самое важное, что нужно понять об этом GUC.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-autovacuum_max_workerst.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: autovacuum_max_workerst&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 25 May 2026 19:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3390.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: archive_timeout</title>
    <link>https://sql-ex.ru/blogs/?/GUC-archive_timeout.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-archive_timeout.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3389</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/28/all-your-gucs-in-a-row-archive_timeout/&quot;&gt;All Your GUCs in a Row: archive_timeout&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Архиватор запускается только после завершения сегмента WAL. В загруженной базе данных это происходит постоянно, а в малоактивной — может не происходить часами или даже днями. Параметр archive_timeout предназначен для того, чтобы избежать ситуации вроде «наша база данных весь день принимала операции записи, но ни одна из них ещё не попала в архив».&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-archive_timeout.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: archive_timeout&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 24 May 2026 13:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3389.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: archive_cleanup_command</title>
    <link>https://sql-ex.ru/blogs/?/GUC-archive_cleanup_command.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-archive_cleanup_command.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3385</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/23/all-your-gucs-in-a-row-application_name/&quot;&gt;All your GUCs in a Row: archive_cleanup_command&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Алфавитный порядок выдал нам первую «жертву». &lt;code&gt;archive_cleanup_command&lt;/code&gt; — это параметр резервного сервера (&lt;em&gt;standby-server knob&lt;/em&gt;), который существует исключительно для того, чтобы прибираться после &lt;code&gt;archive_command&lt;/code&gt;. Однако алфавит настаивает на том, чтобы отложить рассмотрение &lt;code&gt;archive_command&lt;/code&gt; до следующей статьи. Поэтому мы опишем, как прибирать вечеринку, которую ещё не устраивали.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Кратчайшая предыстория:&lt;/strong&gt; Первичный сервер PostgreSQL (&lt;em&gt;primary&lt;/em&gt;) может архивировать свои сегменты WAL в некоторое место — каталог, корзину S3, общий ресурс NFS — выполняя команду оболочки для каждого заполненного сегмента. Резервные серверы (&lt;em&gt;standbys&lt;/em&gt;) читают из этого места, чтобы догонять изменения, а инструменты резервного копирования читают из него для обеспечения восстановления на момент времени (&lt;em&gt;point-in-time recovery, PITR&lt;/em&gt;). Файлы накапливаются. Кто-то должен их удалять.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-archive_cleanup_command.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: archive_cleanup_command&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 20 May 2026 14:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3385.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: archive_library</title>
    <link>https://sql-ex.ru/blogs/?/GUC-archive_library.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-archive_library.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3386</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/26/all-your-gucs-in-a-row-archive_library/&quot;&gt;All Your GUCs in a Row: archive_library&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Прежде чем погрузиться в этот параметр, небольшое исправление (&lt;em&gt;errata&lt;/em&gt;) к &lt;a href=&quot;https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_archive_cleanup_command.html&quot;&gt;предыдущей статье&lt;/a&gt;. Я сказал, что инструменты резервного копирования «могут зарегистрироваться как &lt;code&gt;archive_library&lt;/code&gt; и полностью обойти &lt;code&gt;archive_command&lt;/code&gt;» начиная с PostgreSQL 15+. Именно для этого и была предназначена эта функциональность. Однако это не то, что на самом деле появилось в экосистеме. Подробнее об этом чуть позже.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;archive_library&lt;/code&gt;, добавленный в PostgreSQL 15, позволяет настроить загружаемый C-модуль для обработки архивации WAL вместо команды оболочки (&lt;em&gt;shell command&lt;/em&gt;). Процесс архиватора (&lt;em&gt;archiver process&lt;/em&gt;) вызывает колбэки модуля напрямую, внутри своего процесса, один раз на каждый сегмент. Никакого &lt;code&gt;fork()&lt;/code&gt;. Никакой оболочки. Никакого &lt;code&gt;cp&lt;/code&gt;. PostgreSQL передаёт завершённые WAL-файлы модулю и не будет переиспользовать их, пока модуль не подтвердит успех, — контракт тот же, что и у &lt;code&gt;archive_command&lt;/code&gt;, но без накладных расходов и режимов отказа, присущих сценариям оболочки.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-archive_library.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: archive_library&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 21 May 2026 20:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3386.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: archive_mode</title>
    <link>https://sql-ex.ru/blogs/?/GUC-archive_mode.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-archive_mode.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3388</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/27/all-your-gucs-in-a-row-archive_mode/&quot;&gt;All Your GUCs in a Row: archive_library&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;archive_mode&lt;/code&gt; — это главный выключатель архивации WAL. После трёх предыдущих статей — &lt;code&gt;archive_cleanup_command&lt;/code&gt;, &lt;code&gt;archive_command&lt;/code&gt;, &lt;code&gt;archive_library&lt;/code&gt; — мы наконец добрались до параметра, который решает, будет ли вообще работать вся эта механика.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-archive_mode.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: archive_mode&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 22 May 2026 19:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3388.html</guid>
    
</item>
<item>
    <title>Понимание подзапросов в SQL и построение JSON непосредственно в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/SQL-JSON-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-JSON-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3384</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3384</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/@ayomidemajewole/understanding-subqueries-in-sql-and-building-json-directly-in-postgresql-c98735f45dcd&quot;&gt;Ayomide Ajewole. Understanding Subqueries in SQL and Building JSON Directly in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Для хорошего бэкенд-разработчика существует определенное стремление к оптимизации запросов (скорости и памяти). Одним из полезных инструментов оптимизации баз данных являются подзапросы SQL.&lt;br /&gt;
&lt;br /&gt;
Подзапрос - это запрос внутри другого запроса. Он позволяет вам вытащить связанные данные или результаты вычислений без написания нескольких запросов или тяжелых соединений. Он также позволяет динамически выполнять вычисления и агрегировать данные.&lt;br /&gt;
&lt;br /&gt;
Имеются разные типы подзапросов в зависимости от типа данных, которые вы хотите вернуть.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-JSON-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Понимание подзапросов в SQL и построение JSON непосредственно в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 20 May 2026 11:05:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3384.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: application_name</title>
    <link>https://sql-ex.ru/blogs/?/GUC-application_name.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-application_name.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3383</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/23/all-your-gucs-in-a-row-application_name/&quot;&gt;All Your GUCs in a Row: application_name&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Большинство GUC в этой серии будут операционно не важны для большинства читателей. Этот — не такой. &lt;code&gt;application_name&lt;/code&gt; — это самое дешёвое средство наблюдаемости (&lt;em&gt;observability infrastructure&lt;/em&gt;), которое поставляет PostgreSQL, и поразительное количество производственных баз данных работают с неустановленным значением или со значением, застрявшим на значении по умолчанию клиентской библиотеки (&lt;code&gt;psql&lt;/code&gt;, &lt;code&gt;PostgreSQL JDBC Driver&lt;/code&gt; или, что я люблю больше всего, — пустая строка).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Это метка уровня сеанса (&lt;em&gt;per-session label&lt;/em&gt;). Значение по умолчанию — пустая строка, контекст — &lt;code&gt;user&lt;/code&gt;, поэтому любая роль может его установить. Установите его через &lt;code&gt;SET application_name = &#039;order-service&#039;;&lt;/code&gt;, через параметр подключения &lt;code&gt;application_name&lt;/code&gt; или через переменную окружения &lt;code&gt;PGAPPNAME&lt;/code&gt;, которую libpq учитывает автоматически. Максимальная длина — &lt;code&gt;NAMEDATALEN - 1&lt;/code&gt; — 63 байта в стандартной сборке, а непечатаемые символы заменяются на &lt;code&gt;?&lt;/code&gt;.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-application_name.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: application_name&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 18 May 2026 12:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3383.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: allow_system_table_mods</title>
    <link>https://sql-ex.ru/blogs/?/GUC-allow_system_table_mods.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-allow_system_table_mods.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3382</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/22/all-your-gucs-in-a-row-allow_system_table_mods/&quot;&gt;All your GUCs in a row: allow_system_table_mods&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Вот GUC, который поставляется с предупреждающей этикеткой. Документация, обычно сдержанная до степени пародии, прямо заявляет, что неправильная установка этого параметра может привести к «&lt;em&gt;необратимой потере данных или серьёзному повреждению системы базы данных&lt;/em&gt;». Когда документация PostgreSQL так повышает голос — прислушайтесь.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-allow_system_table_mods.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: allow_system_table_mods&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 17 May 2026 15:29:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3382.html</guid>
    
</item>
<item>
    <title>Слишком много индексов — это сколько?</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3381</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3381</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.brentozar.com/archive/2024/10/how-many-indexes-is-too-many/&quot;&gt;Brent Ozar. How Many Indexes Is Too Many?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Давайте начнем с &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/&quot;&gt;базы данных Stack Overflow&lt;/a&gt; (будет работать версия любого размера), удалим все индексы на таблице Users и выполним DELETE:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SET STATISTICS IO ON;&lt;br /&gt;
GO&lt;br /&gt;
BEGIN TRAN&lt;br /&gt;
DELETE dbo.Users WHERE DisplayName = N&#039;Brent Ozar&#039;;&lt;/pre&gt;&lt;br /&gt;
Я использую SET STATISTICS IO ON, о чем мы говорили в статье &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://sql-ex.ru/blogs/?/Kak_dumat_podobno_serveru_SQL_Server.html&quot;&gt;&quot;Как думать подобно серверу SQL Server&quot;&lt;/a&gt; для иллюстрации количества прочитанных данных, и я делаю это в транзакции, которую я могу периодически откатывать, каждый раз демонстрируя полученные эффекты. Вот действительный план выполнения:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/05/many_indexes_1.jpg&quot; /&gt;&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, 17 May 2026 08:22:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3381.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: allow_in_place_tablespaces</title>
    <link>https://sql-ex.ru/blogs/?/GUC-allow_in_place_tablespaces.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-allow_in_place_tablespaces.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3378</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/21/all-your-gucs-in-a-row-allow_in_place_tablespaces/&quot;&gt;All your GUCs in a row: allow_in_place_tablespaces&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;allow_in_place_tablespaces&lt;/code&gt; существует для того, чтобы набор тестов PostgreSQL мог тестировать репликацию. Вот и всё. Если вы читаете это как администратор (оператор), вы никогда к нему не прикоснётесь. Но раз он есть в алфавите, вот мы здесь.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-allow_in_place_tablespaces.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: allow_in_place_tablespaces&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 15 May 2026 13:21:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3378.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: allow_alter_system</title>
    <link>https://sql-ex.ru/blogs/?/GUC-allow_alter_system.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-allow_alter_system.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3377</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/20/all-your-gucs-in-a-row-allow_alter_system/&quot;&gt;All your GUCs in a row: allow_alter_system&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;GUC — это аббревиатура от Grand Unified Configuration (Великая унифицированная конфигурация).&lt;br /&gt;&lt;br /&gt;
В контексте PostgreSQL это просто техническое название для всех параметров (настроек) сервера, которые можно менять.&lt;br /&gt;&lt;br /&gt;
Простыми словами, это переменные, которые определяют, как работает ваш экземпляр PostgreSQL.&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;Мы начинаем с &lt;code&gt;allow_alter_system&lt;/code&gt; — параметра, который одновременно и новый, и политически взрывоопасный. Поэтому давайте начнём со спора.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Команда &lt;code&gt;ALTER SYSTEM&lt;/code&gt; была добавлена в PostgreSQL 9.4 как улучшение качества жизни: возможность устанавливать GUC (Grand Unified Configuration — унифицированные параметры конфигурации) из SQL-приглашения, записывая значения в &lt;code&gt;postgresql.auto.conf&lt;/code&gt;, без необходимости доступа к оболочке операционной системы. Однако она сразу же вызвала споры среди тех, кто управляет PostgreSQL с помощью систем управления конфигурацией. Если Ansible управляет &lt;code&gt;postgresql.conf&lt;/code&gt;, но суперпользователь незаметно выполняет &lt;code&gt;ALTER SYSTEM SET work_mem = &#039;1GB&#039;&lt;/code&gt;, следующий запуск Ansible не трогает &lt;code&gt;postgresql.auto.conf&lt;/code&gt;, и расхождение (дрейф) конфигурации сохраняется бесконечно. Никто не замечает проблемы, пока что-то не сломается.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Этот спор занял примерно десятилетие. В PostgreSQL 17 появился параметр &lt;code&gt;allow_alter_system&lt;/code&gt; — булевый параметр, который, когда установлен в &lt;code&gt;off&lt;/code&gt;, заставляет &lt;code&gt;ALTER SYSTEM&lt;/code&gt; возвращать ошибку: &lt;code&gt;ERROR: ALTER SYSTEM is not allowed in this environment&lt;/code&gt;. Значение по умолчанию — &lt;code&gt;on&lt;/code&gt;, контекст — &lt;code&gt;sighup&lt;/code&gt;, так что для его изменения требуется лишь перезагрузка конфигурации.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-allow_alter_system.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: allow_alter_system&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 15 May 2026 13:15:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3377.html</guid>
    
</item>
<item>
    <title>10 простых запросов на T-SQL, которые вы будете использовать каждый день</title>
    <link>https://sql-ex.ru/blogs/?/10-T-SQL,.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/10-T-SQL,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3376</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3376</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.sqlfingers.com/2026/02/10-t-sql-one-liners-youll-use-every-day.html&quot;&gt;rebecca@sqlfingers. 10 T-SQL One-Liners You&#039;ll Use Every Day&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Каждый администратор баз данных держит в голове инструментарий готовых запросов. Некоторым потребовались годы, чтобы научиться. Некоторые были случайно обнаружены во время работы в 2 часа ночи. Сегодня я поделюсь 10-ю моими самыми любимыми короткими запросами T-SQL, теми, что копируешь, вставляешь и сразу чувствуешь себя гением. Некоторые из них - классические, некоторые - из недавнего пополнения, и все из них полезны. Ставьте закладку, я надеюсь, что вы сюда вернетесь.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;1. Генерация числовой последовательности на лету&lt;/h2&gt;&lt;br /&gt;
Нужно быстро получить последовательность чисел без создания таблицы подсчета? Если вы имеете SQL Server 2022 или более позднюю версию, GENERATE_SERIES - ваш новый лучший друг:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SELECT value FROM GENERATE_SERIES(1, 100);&lt;/pre&gt;&lt;br /&gt;
Это все. Одна строка кода. 100 строк в последовательности. Никаких временных таблиц, никаких CTE, никаких перекрестных соединений. Аналогичный прием для диапазона дат. Используйте это для получения каждого дня 2025 года в одной строке:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SELECT DATEADD(DAY, value, &#039;2025-01-01&#039;) AS dt FROM GENERATE_SERIES(0, 364);&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Версия:&lt;/b&gt;  SQL Server 2022+ (уровень совместимости 160+)&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/10-T-SQL,.html#extended&quot;&gt;Continue reading &quot;10 простых запросов на T-SQL, которые вы будете использовать каждый день&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 14 May 2026 08:31:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3376.html</guid>
    
</item>
<item>
    <title>Всё о Huge Pages</title>
    <link>https://sql-ex.ru/blogs/?/Huge-Pages.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Huge-Pages.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3375</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/2026/04/24/huge-pages-end-to-end/&quot;&gt;Huge Pages, End to End&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Предыдущая &lt;a href=&quot;https://thebuild.com/blog/2026/04/23/preempt_none-is-dead-your-postgres-probably-doesnt-care/&quot;&gt;статья о регрессии производительности&lt;/a&gt; pgbench на Linux 7.0 заканчивалась тем же указанием, которым заканчивается любая другая статья о производительности Postgres: включите huge pages. Эта статья — подробная версия. Если вы читали документацию Postgres о huge_pages, но всё ещё не совсем уверены, что вам говорит &lt;code&gt;/proc/meminfo&lt;/code&gt;, какова связь между &lt;code&gt;vm.nr_hugepages&lt;/code&gt; и Transparent Huge Pages, или почему &lt;code&gt;huge_pages = try&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/?/Huge-Pages.html#extended&quot;&gt;Continue reading &quot;Всё о Huge Pages&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 12 May 2026 18:29:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3375.html</guid>
    
</item>
<item>
    <title>Потолок масштабирования — когда один экземпляр Postgres пытается заполнить собой всё</title>
    <link>https://sql-ex.ru/blogs/?/Postgres.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Postgres.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3374</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Shaun Thomas, &lt;a href=&quot;https://postgr.es/p/96b&quot;&gt;The Scaling Ceiling: When One Postgres Instance Tries to Be Everything&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В мире баз данных существует устойчивое убеждение, что вертикальное масштабирование решает все проблемы. Нужна большая пропускная способность? Добавьте ядра ЦП. Заканчивается кэш? Добавьте оперативной памяти. Запросы обращаются к диску? Добавьте операций ввода-вывода в секунду (IOPS). Это утешительная философия, потому что она проста, и на удивление долгое время она работает. Один мощный экземпляр Postgres может выдержать колоссальную нагрузку, прежде чем рухнуть под её давлением.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Но этот потолок существует, и следует он не из аппаратного обеспечения. Postgres был спроектирован как однокомандный движок базы данных, и многие его внутренние структуры являются общими для всех баз данных, которые содержит экземпляр. Эти общие ресурсы редко вызывают беспокойство в одном скромном экземпляре. Но с двадцатью базами данных, работающими со смесью тяжёлых OLTP-нагрузок, аналитических запросов или даже в основном простаивающих, общая природа этих внутренних механизмов становится очень важной.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Давайте поговорим о барьерах, с которыми в конечном итоге сталкиваются такие перегруженные экземпляры, ссылаясь для убедительности на исходный код Postgres. Некоторые из них хорошо известны, другие — из тех, что внезапно поражают в 2 часа ночи, когда все панели мониторинга одновременно становятся красными.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Postgres.html#extended&quot;&gt;Continue reading &quot;Потолок масштабирования — когда один экземпляр Postgres пытается заполнить собой всё&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 11 May 2026 14:33:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3374.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=3373</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://stormatics.tech/author/annie-ghazali&quot;&gt;Annie Ghazali&lt;/a&gt;, &lt;a href=&quot;https://stormatics.tech/blogs/cost-of-postgresql-performance-issues&quot;&gt;Cost of PostgreSQL performance issues&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;PostgreSQL получил широкое распространение благодаря тому, что снимает лицензионные ограничения и даёт таким компаниям, как OpenAI, Lovable и Supabase, надёжную основу для масштабной эксплуатации производственных систем. Однако после развёртывания разговор о стоимости PostgreSQL смещается с лицензирования к тому, насколько эффективно база данных поддерживает выполняемую на ней рабочую нагрузку.&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>Sun, 10 May 2026 17:27:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3373.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: как обновления и VACUUM влияют на хранилище</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3372</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3372</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/09-postgresql-17-performance-tuning-how-updates-and-vacuum-affect-storage-05c656a5aadf&quot;&gt;Jeyaram Ayyalusamy. 09 - PostgreSQL 17 Performance Tuning: How Updates and VACUUM Affect Storage&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Модель хранения в PostgreSQL отличается от многих других баз данных. Вместо переписывания строки по месту, PostgreSQL создает новые версии строк при обновлении данных. Эта схема хороша для безопасности транзакций и параллелизма, но при этом влияет на размер таблицы и VACUUM приобретает важное значение для производительности.&lt;br /&gt;
&lt;br /&gt;
Давайте пошагово пройдем тестовый пример, чтобы увидеть, как это работает на практике.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/05/9_PG_17.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Отключение autovacuum (только для тестирования)&lt;/h2&gt;&lt;br /&gt;
PostgreSQL обычно выполняет фоновый процесс, который называется autovacuum, для очистки мертвых кортежей и предотвращения раздувания таблиц.&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Для реальных приложений выключение autovacuum не рекомендуется, поскольку это критически важно для работоспособности базы данных.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Но в целях тестирования он может быть выключен для конкретной таблицы для гарантии, что ничего не будет происходить автоматически в фоновом режиме.&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;
Это позволяет нам в точности наблюдать, как PostgreSQL управляет хранилищем. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: как обновления и VACUUM влияют на хранилище&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 10 May 2026 10:27:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3372.html</guid>
    
</item>
<item>
    <title>Понимание запросов списка процессов MySQL: руководство по мониторингу и оптимизации производительности</title>
    <link>https://sql-ex.ru/blogs/?/MySQL.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/MySQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3370</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3370</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/@dmitry.romanoff/understanding-mysql-process-list-queries-a-guide-to-monitoring-and-optimizing-performance-4c4a1ca0e8c9&quot;&gt;Dmitry Romanoff. Understanding MySQL Process List Queries: A Guide to Monitoring and Optimizing Performance&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Таблица MySQL information_schema.processlist предоставляет большой объем информации о текущем состоянии сервера MySQL. Она важна для администраторов и разработчиков баз данных, чтобы мониторить эти данные для обеспечения оптимальной производительности и диагностики потенциальных проблем. В этой статье мы познакомимся с несколькими запросами MySQL, предназначенными для извлечения полезных идей из списка процессов, и обсудим, насколько они могут помочь нам в мониторинге и оптимизации сервера MySQL.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;1. Просмотр всех процессов&lt;/h2&gt;&lt;br /&gt;
Чтобы получить исчерпывающий обзор всех текущих процессов на сервере MySQL, вы можете использовать следующий запрос:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SELECT * FROM information_schema.processlist;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/MySQL.html#extended&quot;&gt;Continue reading &quot;Понимание запросов списка процессов MySQL: руководство по мониторингу и оптимизации производительности&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 07 May 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3370.html</guid>
    
</item>
<item>
    <title>Top 5 форматов резервных копий и когда их использовать в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Top-5-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Top-5-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3369</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3369</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/@pawale7663/top-5-backup-formats-and-when-to-use-them-for-postgresql-d30fbfaaadee&quot;&gt;Pawale. Top 5 Backup Formats and When to Use Them for PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Выбор правильного формата резервной копии может составлять разницу между 10-минутным восстановлением и целым днем мучений. Утилита pg_dump в PostgreSQL предоставляет множество форматов вывода, каждый из которых оптимизирован для различных сценариев - от быстрой разработки снимков до восстановления после сбоев производственных баз. Понимание этих форматов помогает построить такую стратегию восстановления, которая сбалансирует эффективность использования хранилища, скорость восстановления и операционную гибкость. В этом руководстве рассматриваются пять ключевых форматов резервных копий с указанием, когда использовать каждую из них.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/05/5PG_backups_1.webp&quot; /&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Top-5-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Top 5 форматов резервных копий и когда их использовать в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 05 May 2026 09:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3369.html</guid>
    
</item>
<item>
    <title>Функция JSON_CONTAINS в SQL Server 2025</title>
    <link>https://sql-ex.ru/blogs/?/JSON_CONTAINS-SQL-Server-2025.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/JSON_CONTAINS-SQL-Server-2025.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3368</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3368</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.mssqltips.com/sqlservertip/11534/son_contains-function-in-sql-server/&quot;&gt;Koen Verbeeck. JSON_CONTAINS Function in SQL Server 2025&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
У меня есть данные, пришедшие в мой SQL Server в формате JSON. Перед началом парсинга, который довольно интенсивный, необходимо проверить, присутствуют ли некоторые значения в этом JSON. Имеется ли функция, которую я могу использовать с этой целью? Давайте посмотрим, что может делать JSON_CONTAINS, новая функция в SQL Server 2025.&lt;br /&gt;
&lt;br /&gt;
Формат файла JSON поддерживается в SQL Server, начиная с версии 2016, когда были введены функции &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://sql-ex.ru/blogs/?/OPENJSON_Poluchenie_dannyh_i_PATH_-_chast_1.html&quot;&gt;OPENJSON&lt;/a&gt; и &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://learn.microsoft.com/en-us/sql/t-sql/functions/json-value-transact-sql?view=sql-server-ver17&quot;&gt;JSON_VALUE&lt;/a&gt;. Отличное введение в возможности SQL Server 2016 можно найти здесь: &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.mssqltips.com/sqlservertip/4073/sql-server-advanced-json-techniques-part-1/&quot;&gt;Продвинутые методы JSON в SQL Server, часть 1&lt;/a&gt;, &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.mssqltips.com/sqlservertip/4081/advanced-json-techniques-in-sql-server-part-2/&quot;&gt;часть 2&lt;/a&gt; и &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.mssqltips.com/sqlservertip/4138/advanced-json-techniques-in-sql-server-part-3/&quot;&gt;&lt;часть 3/a&gt;.&lt;br /&gt;
&lt;br /&gt;
С каждый релизом добавляется новая функциональность для обработки данных JSON. Недавно в Azure SQL DB был реализован &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.mssqltips.com/sqlservertip/21436/json-data-type-in-azure-sql-database/&quot;&gt;тип данных JSON&lt;/a&gt;, который теперь нашел свое применение в SQL Server 2025. Это последний предварительный релиз SQL Server на момент написания этой статьи. В отличие от многих других новых функций SQL Server, этот предварительный выпуск включает новую функциональность, которая доступна только в SQL Server 2025, но не в облачных аналогах, таких как база данных Azure SQL DB. Одной из этих новых функций является JSON_CONTAINS, которой и посвящена эта статья.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/JSON_CONTAINS-SQL-Server-2025.html#extended&quot;&gt;Continue reading &quot;Функция JSON_CONTAINS в SQL Server 2025&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 03 May 2026 11:32:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3368.html</guid>
    
</item>
<item>
    <title>Postgres: более быстрые проверки внешних ключей</title>
    <link>https://sql-ex.ru/blogs/?/Postgres.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Postgres.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3366</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Amit Langote, &lt;a href=&quot;https://amitlan.com/2026/04/22/fkey-fastpath.html&quot;&gt;Postgres: faster foreign key checks&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В одной из &lt;a href=&quot;https://amitlan.com/2026/03/07/foreign-key-internals.html&quot;&gt;предыдущих&lt;/a&gt; статей я описывал, как работает обеспечение целостности внешних ключей в Postgres. Краткая версия такова: каждая команда &lt;code&gt;INSERT&lt;/code&gt; или &lt;code&gt;UPDATE&lt;/code&gt; в таблицу, ссылающуюся на другую, запускает триггер &lt;code&gt;AFTER&lt;/code&gt;, который проверяет, существуют ли значения столбца внешнего ключа (FK) в ссылочной (PK) таблице. Эта проверка проходит через SPI (Server Programming Interface): строится запрос, он планируется, выполняется, а затем всё уничтожается — для каждой отдельной строки.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это дорогостоящая операция. При массовой вставке (&lt;code&gt;INSERT&lt;/code&gt;) миллиона строк в таблицу с внешним ключом вы выполняете миллион мини-запросов к индексу таблицы первичного ключа. Каждый из них открывает отношение первичного ключа, захватывает снимок (snapshot), выполняет проверку прав, делает поиск по индексу и закрывает всё. Стоимость одной строки в абсолютном выражении невелика, но она очень быстро накапливается.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Для Postgres 19 я применил два патча (соавтором обоих является Джунванг Жао), которые полностью обходят SPI для стандартного случая и выполняют пакетную (batch) проверку индекса. Вместе они ускоряют массовые вставки с внешними ключами примерно в 2.9 раза в используемом мною тесте (&lt;code&gt;int&lt;/code&gt; первичный ключ, &lt;code&gt;int&lt;/code&gt; внешний ключ, 1 миллион строк, таблица первичного ключа и её индекс в памяти).&lt;/p&lt;h2&gt;Что деаёт быстрый путь (fast path)&lt;/h2&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Postgres.html#extended&quot;&gt;Continue reading &quot;Postgres: более быстрые проверки внешних ключей&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 01 May 2026 11:23:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3366.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=3364</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.enterprisedb.com/blog/author/craig-ringer&quot;&gt;Craig Ringer&lt;/a&gt;, &lt;a href=&quot;https://www.enterprisedb.com/blog/choosing-postgresql-text-search-method&quot;&gt;Choosing a PostgreSQL text search method&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;em&gt;(Эта статья написана применительно к PostgreSQL 9.3. Если вы используете более новую версию, пожалуйста, проверьте, остались ли описанные ограничения в силе.)&lt;/em&gt;&lt;/p&gt;&lt;br /&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>Wed, 29 Apr 2026 11:34:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3364.html</guid>
    
</item>
<item>
    <title>T-SQL в SQL Server 2025: функции кодирования</title>
    <link>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3363</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3363</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/t-sql-in-sql-server-2025-encoding-functions&quot;&gt;Steve Jones. T-SQL in SQL Server 2025: Encoding Functions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
В течение долгого времени я работал с разными компьютерными языками и кодирование бинарных данных было необходимо в первую очередь потому, что требовалось передавать данные на другой компьютер.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Функции кодирования: BASE64_ENCODE и BASE64_DECODE&lt;/h2&gt;&lt;br /&gt;
В язык T-SQL были добавлены две новых функции: BASE64_ENCODE, BASE64_DECODE . Эти функции взаимно обратны, подобно функциям шифрования. Одна функция возвращает вспять действия другого, и они предназначены для совместного использования.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025.html#extended&quot;&gt;Continue reading &quot;T-SQL в SQL Server 2025: функции кодирования&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 29 Apr 2026 11:19:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3363.html</guid>
    
</item>
<item>
    <title>PostgreSQL MVCC, байт за байтом</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-MVCC,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-MVCC,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3362</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    Автор: , Radim Marek: &lt;a href=&quot;https://boringsql.com/posts/postgresql-mvcc-byte-by-byte/&quot;&gt;PostgreSQL MVCC, Byte by byte&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Вы выполняете &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;SELECT &amp;#42; FROM orders&lt;/span&gt;&lt;/code&gt; в одном сеансе psql и видите 50 миллионов строк. Ваш коллега в другом сеансе выполняет тот же запрос в тот же момент и видит 49 999 999. Никто из вас не ошибается, и никто не видит устаревших данных. Вы оба читаете одни и те же страницы кучи размером 8 КБ, одни и те же байты на диске.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;В этом заключается обещание MVCC (многоверсионного контроля конкурентного доступа) PostgreSQL, и именно поэтому читатели никогда не блокируют писателей, а писатели никогда не блокируют читателей. Это также одна из самых неправильно понимаемых частей механизма хранения. Люди знают, что «существует несколько версий строки», и на этом останавливаются.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-MVCC,.html#extended&quot;&gt;Continue reading &quot;PostgreSQL MVCC, байт за байтом&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 26 Apr 2026 17:02:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3362.html</guid>
    
</item>
<item>
    <title>Настройка производительности PostgreSQL 17: индекс BRIN (Block Range INdex)</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3361</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3361</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/22-postgresql-17-performance-tuning-brin-block-range-index-e0a57a2f4645&quot;&gt;Jeyaram Ayyalusamy. 22 - PostgreSQL 17 Performance Tuning: BRIN (Block Range INdex)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/04/brin_1.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
При работе с очень большими таблицами в PostgreSQL традиционные индексы типа B-Tree или GiST могут чрезвычайно вырасти в размерах, что занимает значительное время на их обслуживание. Для временных рядов или последовательно упорядоченных данных PostgreSQL предлагает более разумный и облегченный вариант: BRIN (Block Range Index).&lt;br /&gt;
&lt;br /&gt;
Индексы BRIN группируют данные в диапазоны блоков вместо хранения отдельных записей строк, что делает их компактными, быстрыми в построении и эффективными для запросов на диапазон или упорядоченные данные.&lt;br /&gt;
&lt;br /&gt;
Давайте пошагово рассмотрим пример.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html#extended&quot;&gt;Continue reading &quot;Настройка производительности PostgreSQL 17: индекс BRIN (Block Range INdex)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 26 Apr 2026 08:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3361.html</guid>
    
</item>
<item>
    <title>Как создать связанный сервер в SQL Server для  Oracle 26ai Free</title>
    <link>https://sql-ex.ru/blogs/?/SQL-Server-Oracle-26ai-Free.html</link>
            <category>Oracle</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-Server-Oracle-26ai-Free.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3359</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3359</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.red-gate.com/simple-talk/databases/how-to-create-a-sql-server-linked-server-to-oracle-26ai-free/&quot;&gt;Greg Low. How to Create a SQL Server Linked Server to Oracle 26ai Free&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Легко перемещайте данные из SQL Server в  Oracle 26ai Free, используя это пошаговое руководство. Узнайте как установить связанный сервер, сконфигурировать FREEPDB1 и избежать типичных ошибок.&lt;br /&gt;
&lt;br /&gt;
Недавно мне пришлось перенести некоторые данные из  SQL Server на Oracle 26ai в редакции Free. Я решил проверить, поможет ли связанный сервер сделать эту работу, поскольку зачастую это самый простой способ…&lt;br /&gt;
&lt;br /&gt;
Это позволит мне просто писать операторы INSERT SELECT, но в SQL Server, связанные серверы с Oracle, известны своей &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://learn.microsoft.com/en-us/previous-versions/troubleshoot/sql/linked-servers/set-up-troubleshoot-linked-server&quot;&gt;неуклюжестью&lt;/a&gt; и часто имеют проблемы с некоторыми типами данных, настройками времени, и т. д.&lt;br /&gt;
&lt;br /&gt;
В прошлом мне не приходилось создавать связанный сервер к Oracle 26ai Free, поэтому я решил, что должен задокументировать свои действия, чтобы в будущем я мог легко найти их и, возможно, помочь кому-то еще.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-Server-Oracle-26ai-Free.html#extended&quot;&gt;Continue reading &quot;Как создать связанный сервер в SQL Server для  Oracle 26ai Free&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 23 Apr 2026 10:20:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3359.html</guid>
    
</item>
<item>
    <title>DROP COLUMN в PostgreSQL: столбец не удаляется сразу</title>
    <link>https://sql-ex.ru/blogs/?/DROP-COLUMN-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/DROP-COLUMN-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3358</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3358</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-drop-column-it-doesnt-remove-the-column-immediately-6957fda84299&quot;&gt;Tomasz Gintowt. PostgreSQL DROP COLUMN: It Doesn’t Remove the Column Immediately&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
При работе со схемами реляционных баз данных вы можете предполагать, что удаление столбца физически удаляет его из табличного хранилища. В PostgreSQL это не всегда так.&lt;br /&gt;
&lt;br /&gt;
Начиная с PostgreSQL 11, операция ALTER TABLE ... DROP COLUMN стала выполняться быстрее, поскольку PostgreSQL больше не переписывает всю таблицу сразу. Напротив, он:&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;Освобождает хранилище, только когда таблица переписывается (VACUUM FULL, CLUSTER или pg_repack).&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;
Такой подход позволяет избежать долгого выполнения переписывания таблицы и делает изменения схемы менее деструктивными для больших таблиц.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/DROP-COLUMN-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;DROP COLUMN в PostgreSQL: столбец не удаляется сразу&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 21 Apr 2026 17:00:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3358.html</guid>
    
</item>
<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>

</channel>
</rss>
