<?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</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>Fri, 08 May 2026 16:27:00 GMT</pubDate>

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

<item>
    <title>Новости за 2026-05-02 - 2026-05-08</title>
    <link>https://sql-ex.ru/blogs/?/2026-05-02-2026-05-08.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-05-02-2026-05-08.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3371</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=200&quot;&gt;200 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;9&amp;#09;&amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=159&quot;&gt;159 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;7&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=153&quot;&gt;153 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;5&amp;#09;&amp;#09;8&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=180&quot;&gt;180 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;8&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=42&quot;&gt;42 (DML)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;7&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Изменения среди лидеров рейтинга&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09;Участник (решенные задачи)&lt;/b&gt;&lt;br /&gt; 11&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=10925&#039;&gt;alex_v&lt;/a&gt; (160, 217, 232, 233)&lt;br /&gt; 15&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=791796&#039;&gt;gennadi_s&lt;/a&gt; (201)&lt;br /&gt; 19&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=128116&#039;&gt;selber&lt;/a&gt; (147)&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-05-02-2026-05-08.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-05-02 - 2026-05-08&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 08 May 2026 19:27:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3371.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>Новости за 2026-04-25 - 2026-05-01</title>
    <link>https://sql-ex.ru/blogs/?/2026-04-25-2026-05-01.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-04-25-2026-05-01.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3367</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Проверка задачи 153 (SELECT, рейтинг) усилена данными от &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=69553&quot; target=&quot;_blank&quot;&gt;pegoopik&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=153&quot;&gt;153 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=-15&quot;&gt;-15 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=197&quot;&gt;197 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=29&quot;&gt;29 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;7&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-04-25-2026-05-01.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-04-25 - 2026-05-01&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 01 May 2026 23:45:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3367.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>Треугольник производительности Postgres</title>
    <link>https://sql-ex.ru/blogs/?/Postgres.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/Postgres.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3365</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: R&lt;a href=&quot;https://richyen.com/&quot;&gt;ichard Yen&lt;/a&gt;, &lt;a href=&quot;https://richyen.com/postgres/2026/04/20/throughput_triangle.html&quot;&gt;The Postgres Performance Triangle&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждый, кто хотя бы по колено погрузился в фотографию, знает о существовании треугольника экспозиции: диафрагма, выдержка и светочувствительность (ISO). В зависимости от того, какого художественного эффекта вы хотите добиться, вы регулируете эти три параметра, понимая, что у каждого изменения есть своя цена. Проработав несколько реальных случаев и предложив решения заказчикам, я начал думать о настройке производительности Postgres схожим образом. Существуют базовые параметры, которые можно настраивать, и у каждого выбора администратора баз данных есть свои последствия:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
    &lt;li&gt;&lt;strong&gt;Распределение памяти (Memory Allocation)&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;strong&gt;Дисковый ввод-вывод (Disk I/O)&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;strong&gt;Конкурентность (Concurrency)&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&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;br /&gt;
&lt;p&gt;Давайте поговорим о том, как каждый из этих трёх аспектов взаимодействует со всей системой и как выглядят сопутствующие компромиссы.&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>Thu, 30 Apr 2026 18:31:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3365.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>Новости за 2026-04-18 - 2026-04-24</title>
    <link>https://sql-ex.ru/blogs/?/2026-04-18-2026-04-24.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-04-18-2026-04-24.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3360</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Авторы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Автор&amp;#09;&amp;#09;Сообщений&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=165216&quot; target=&quot;_blank&quot;&gt;rock_4&lt;/a&gt;  &amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=69553&quot; target=&quot;_blank&quot;&gt;pegoopik&lt;/a&gt;  &amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=791796&quot; target=&quot;_blank&quot;&gt;gennadi_s&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Изменения среди лидеров рейтинга&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09;Участник (решенные задачи)&lt;/b&gt;&lt;br /&gt; 12&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=10925&#039;&gt;alex_v&lt;/a&gt; (235, 236, 238, 239)&lt;br /&gt; 15&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=791796&#039;&gt;gennadi_s&lt;/a&gt; (198, 199)&lt;br /&gt; 20&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=128116&#039;&gt;selber&lt;/a&gt; (212)&lt;br /&gt; 37&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=512176&#039;&gt;Шведа Сауля&lt;/a&gt; (159)&lt;br /&gt; 87&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=165216&#039;&gt;rock_4&lt;/a&gt; (162, 166)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-04-18-2026-04-24.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-04-18 - 2026-04-24&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 24 Apr 2026 18:57:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3360.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>
<item>
    <title>Новости за 2026-04-11 - 2026-04-17</title>
    <link>https://sql-ex.ru/blogs/?/2026-04-11-2026-04-17.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-04-11-2026-04-17.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3356</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=146&quot;&gt;146 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;8&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=24&quot;&gt;24 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;9&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=197&quot;&gt;197 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;6&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Авторы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Автор&amp;#09;&amp;#09;Сообщений&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=69553&quot; target=&quot;_blank&quot;&gt;pegoopik&lt;/a&gt;  &amp;#09;7&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=165216&quot; target=&quot;_blank&quot;&gt;rock_4&lt;/a&gt;  &amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=791796&quot; target=&quot;_blank&quot;&gt;gennadi_s&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-04-11-2026-04-17.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-04-11 - 2026-04-17&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

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

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

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

    <pubDate>Thu, 16 Apr 2026 09:26:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3353.html</guid>
    
</item>
<item>
    <title>Ошибки проектирования баз данных и как избежать и исправить их</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>Articles</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3352</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3352</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://dbschema.com/blog/design/database-design-mistakes/&quot;&gt;Roxana Haidiner. Database Design Errors to Avoid &amp;amp; How To Fix Them&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Даже сейчас, в 2025 году, при наличии мощных инструментов баз данных и облачных платформ разработчики все еще допускают элементарные ошибки при проектировании схемы.  Они вызывают проблемы производительности, несогласованности данных и другие технологические проблемы.&lt;br /&gt;
&lt;br /&gt;
В этой статье рассматриваются наиболее общие ошибки проектирования баз данных, способы их избежать и то, как графические инструменты типа &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://dbschema.com/&quot;&gt;Dbschema&lt;/a&gt; могут помочь создать лучший проект с самого начала:&lt;br /&gt;
&lt;ol&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;Использование JSON и JSONB в реляционных базах данных.&lt;/li&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;Отсутствие документации к схеме.&lt;/li&gt;&lt;/ol&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, 14 Apr 2026 11:22:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3352.html</guid>
    
</item>
<item>
    <title>Сравнение функций STUFF, REPLACE и WRITE в SQL Server</title>
    <link>https://sql-ex.ru/blogs/?/STUFF,-REPLACE-WRITE-SQL-Server.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/STUFF,-REPLACE-WRITE-SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=2842</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.mssqltips.com/sqlservertip/7563/sql-stuff-sql-replace-sql-write-similarities-differences/&quot;&gt;Aubrey Love. SQL STUFF vs SQL REPLACE vs SQL WRITE in SQL Server&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Если вы когда-либо решали задачу со строками в Microsoft SQL Server, то, вероятно, уже знакомы с различными строковыми функциями, которые могут упростить процесс решения. Функции &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;http://www.sql-tutorial.ru/ru/book_replicate_stuff_functions.html&quot;&gt;STUFF()&lt;/a&gt; и &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;http://www.sql-tutorial.ru/ru/book_replace_function.html&quot;&gt;REPLACE()&lt;/a&gt; наиболее часто используются для обновления строковых значений в таблице. Но .WRITE() является относительно менее известной, не так ли? &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/STUFF,-REPLACE-WRITE-SQL-Server.html#extended&quot;&gt;Continue reading &quot;Сравнение функций STUFF, REPLACE и WRITE в SQL Server&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 01 Jul 2023 08:31:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/2842.html</guid>
    
</item>
<item>
    <title>Обзор оконных функций PostgreSQL </title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=2840</wfw:comment>

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

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

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

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

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

    <pubDate>Sat, 11 Apr 2026 18:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3351.html</guid>
    
</item>
<item>
    <title>Новости за 2026-04-04 - 2026-04-10</title>
    <link>https://sql-ex.ru/blogs/?/2026-04-04-2026-04-10.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-04-04-2026-04-10.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3350</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Авторы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Автор&amp;#09;&amp;#09;Сообщений&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;selber&lt;/a&gt;  &amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=57324&quot; target=&quot;_blank&quot;&gt;qwrqwr&lt;/a&gt;  &amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=791796&quot; target=&quot;_blank&quot;&gt;gennadi_s&lt;/a&gt;  &amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=30229&quot; target=&quot;_blank&quot;&gt;_Bkmz_&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Изменения среди лидеров рейтинга&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09;Участник (решенные задачи)&lt;/b&gt;&lt;br /&gt; 15&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=791796&#039;&gt;gennadi_s&lt;/a&gt; (196, 197)&lt;br /&gt; 38&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=512176&#039;&gt;Шведа Сауля&lt;/a&gt; (158)&lt;br /&gt; 116&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=165216&#039;&gt;rock_4&lt;/a&gt; (254)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-04-04-2026-04-10.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-04-04 - 2026-04-10&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Thu, 09 Apr 2026 17:30:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3348.html</guid>
    
</item>
<item>
    <title>Секционирование или шардинг в базах данных: в чем разница?</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>Articles</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3347</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3347</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://sandeeppant.medium.com/%EF%B8%8F-partitioning-vs-sharding-in-databases-whats-the-difference-41ce48502afc&quot;&gt;Sandeeppant. Partitioning vs. Sharding in Databases: What’s the Difference?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
По мере масштабирования приложений базы данных становятся слабым звеном. Когда таблицы разрастаются до миллионов или даже миллиардов строк, запросы замедляются, бэкапы делаются вечно, и единственный сервер начинает с трудом справляться с нагрузкой.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы обычно применяются две технологии - &lt;strong&gt;секционирование&lt;/strong&gt; и &lt;strong&gt;шардинг&lt;/strong&gt;. Обе используют разбиение данных на более мелкие фрагменты, но они служат разным целям и работают на разных уровнях.&lt;br /&gt;
&lt;br /&gt;
В этой статье мы узнаем:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Что такое секционирование и как это работает.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Что такое шардинг и чем оно отличается.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Практические примеры в MySQL и PostgreSQL.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Реальные случаи использования, которые освещают каждую технологию.&lt;/li&gt;&lt;/ul&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>Thu, 09 Apr 2026 09:58:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3347.html</guid>
    
</item>
<item>
    <title>Внутреннее устройство WAL в PostgreSQL для инженеров данных</title>
    <link>https://sql-ex.ru/blogs/?/WAL-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/WAL-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3346</wfw:comment>

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

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

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

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

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

    <pubDate>Sun, 05 Apr 2026 13:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3345.html</guid>
    
</item>
<item>
    <title>Новости за 2026-03-28 - 2026-04-03</title>
    <link>https://sql-ex.ru/blogs/?/2026-03-28-2026-04-03.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-03-28-2026-04-03.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3344</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Новая задача от &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=66802&#039;&gt;Baser&lt;/a&gt; и &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=69553&#039;&gt;pegoopik&lt;/a&gt; опубликована на рейтинговом этапе под номером 24 (оценка сложности 2 балла).&lt;br /&gt;
Выполнены следующие переносы:&lt;br /&gt;
Новая задача -&gt; 24 -&gt; 4 -&gt; 166 (обуч.этап).&lt;br /&gt;
Второй этап теперь начинается с задачи 4.&lt;p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=193&quot;&gt;193 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;7&amp;#09;&amp;#09;9&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=140&quot;&gt;140 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;5&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=0&amp;N=0&quot;&gt;Guest&#039;s book&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;16&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-03-28-2026-04-03.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-03-28 - 2026-04-03&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Thu, 02 Apr 2026 15:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3342.html</guid>
    
</item>
<item>
    <title>Сочетания, перестановки и беспорядочность</title>
    <link>https://sql-ex.ru/blogs/?/,.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3341</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.red-gate.com/simple-talk/author/joe-celko/&quot;&gt;Joe Celko&lt;/a&gt;, &lt;a href=&quot;https://www.red-gate.com/simple-talk/databases/theory-and-design/combinations-permutations-and-derangements/&quot;&gt;Combinations, permutations, and derangements&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Прежде чем перейти к вопросам баз данных, приведу тут несколько математических предварительных сведений.&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Факториалы&lt;/h2&gt;&lt;br /&gt;
&lt;p&gt;Функция факториала обычно записывается как (n)!, и она определяется как произведение первых (n) натуральных чисел. Таким образом, 5! равно (5 · 4 · 3 · 2 · 1) = 120. Как обычно, ноль — это особый случай: 0! = 1, что можно доказать с помощью несколько иного определения факториала. Вместо определения через произведение определим его рекурсивно следующим образом: n! = CASE WHEN n = 0 THEN 1 ELSE n · (n-1)! END.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Показывая процесс шаг за шагом, рекурсия разворачивается так:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;5! = 5 · 4!&lt;br /&gt;
4! = 4 · 3!&lt;br /&gt;
3! = 3 · 2!&lt;br /&gt;
2! = 2 · 1!&lt;br /&gt;
1! = 1 · 0!&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Посмотрите на последний шаг рекурсии. Теперь разделите обе части на единицу, чтобы получить (1! / 1) = 0! или 1 = 0! Обратите внимание, что всё, что было сделано до сих пор, является процедурным, а не ориентированным на множества. Специалисты по реляционным СУБД предпочитают уходить от процедурного кода. Для остальной части этой статьи вы можете думать о n! как о количестве способов упорядочить (n) элементов множества в последовательность. Очевидно, если у вас есть один элемент, то у вас есть только один способ упорядочивания. Но точно так же, если у вас ноль элементов, вы также на этом закончили. Как существует только одно пустое множество, так существует и только одна пустая последовательность.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Да, можно определить факториалы для отрицательных чисел, мнимых чисел, гамма-функцию для действительных чисел и другие вещи. Если вы не студент-математик, вам совершенно не понадобятся эти изощрённые трюки. Поскольку SQL — это язык баз данных, а не вычислительный язык, возможно, вы захотите использовать поиск по таблице, а не это рекурсивное определение. Вы можете найти таблицу чисел от одного до ста для заполнения таблицы. Факториальная функция растёт очень быстро!&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;0! = 1&lt;br /&gt;
1! = 1&lt;br /&gt;
2! = 2&lt;br /&gt;
3! = 6&lt;br /&gt;
4! = 24&lt;br /&gt;
5! = 120&lt;br /&gt;
6! = 720&lt;br /&gt;
7! = 5 040&lt;br /&gt;
8! = 40 320&lt;br /&gt;
9! = 362 880&lt;br /&gt;
10! = 3 628 800&lt;br /&gt;
11! = 39 916 800&lt;br /&gt;
12! = 479 001 600&lt;/code&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/,.html#extended&quot;&gt;Continue reading &quot;Сочетания, перестановки и беспорядочность&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Mon, 30 Mar 2026 10:12:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3339.html</guid>
    
</item>
<item>
    <title>Новости за 2026-03-21 - 2026-03-27</title>
    <link>https://sql-ex.ru/blogs/?/2026-03-21-2026-03-27.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-03-21-2026-03-27.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3338</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Новая задача от &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=69553&#039;&gt;pegoopik&lt;/a&gt; опубликована на обучающем этапе под номером 193 (оценка сложности 2 балла).&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=27&quot;&gt;27 (DML)&lt;/a&gt;&amp;#09;&amp;#09;7&amp;#09;&amp;#09;4&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=89&quot;&gt;89 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=24&quot;&gt;24 (DML)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=138&quot;&gt;138 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;5&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-03-21-2026-03-27.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-03-21 - 2026-03-27&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

    <pubDate>Fri, 27 Mar 2026 14:02:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3337.html</guid>
    
</item>
<item>
    <title>Как Patroni обеспечивает высокую доступность PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Patroni-PostgreSQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3324</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Shaun Thomas, &lt;a href=&quot;https://www.pgedge.com/blog/how-patroni-brings-high-availability-to-postgres&quot;&gt;How Patroni Brings High Availability to Postgres&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Статьи серии:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Kak_Patroni_obespechivaet_vysokuju_dostupnost_PostgreSQL.html&quot;&gt;Как Patroni обеспечивает высокую доступность PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_1_etcd.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 1: etcd&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_2_Postgres_i_Patroni.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 2: Postgres и Patroni&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Ispolzovanie_Patroni_dlJa_sozdaniJa_klastera_vysokoj_dostupnosti_Postgres__Chast_3_HAProx.html&quot;&gt;Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Давайте признаем: существует множество инструментов высокой доступности (High Availability) для управления кластерами Postgres. Этот ландшафт эволюционировал на протяжении десятилетий, достигнув своего нынешнего состояния, и в сообществе царит немалая путаница. Будь то Reddit, списки рассылки Postgres, Slack, Discord, IRC, доклады на конференциях или любые другие площадки, один из самых частых вопросов, которые мне задают: «Как сделать Postgres отказоустойчивым?»&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Где-то с 2017 года мой ответ неизменен: «Просто используйте Patroni». Если только в экосистеме Postgres не произойдёт что-то чудесное, этот ответ вряд ли изменится. Но почему? Что делает Patroni «окончательным ответом», когда речь заходит о Postgres и высокой доступности? Это во многом связано с тем, как Patroni выполняет свою работу, и именно это мы и рассмотрим в данной статье.&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Слон в посудной лавке&lt;/h2&gt;&lt;br /&gt;
&lt;p&gt;Сам по себе Postgres не является кластером в том смысле, который большинство людей вкладывает в это слово. Они могут представлять себе сложную массу взаимосвязанных серверов, яростно моргающих лампочками друг на друга, осведомлённых о каждом вычислении, совершаемом другими, и готовых взять на себя управление в случае сбоя одного из них. В реальности же «официальное» использование слова «кластер» в мире Postgres означает просто одну или несколько баз данных, связанных с одним экземпляром Postgres. Это прямо указано в документации по &lt;a href=&quot;https://www.postgresql.org/docs/current/creating-cluster.html&quot;&gt;Creating a Database Cluster&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;«A database cluster is a collection of databases that is managed by a single instance of a running database server».&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Концепция взаимодействия нескольких таких экземпляров была настолько чужда Postgres, что даже не существовала до выхода версии 9.0, которая в 2010 году представила &lt;a href=&quot;https://www.postgresql.org/docs/9.0/hot-standby.html&quot;&gt;горячие резервные серверы (Hot Standbys) и потоковую репликацию&lt;/a&gt;. А как работают горячие резервные экземпляры? Так же, как и основной узел: они применяют страницы WAL к файлам кучи. Эти страницы WAL могут поступать из архивированных файлов WAL или передаваться потоком с основного сервера, но по сути это всё ещё непрерывное восстановление после сбоя под другим именем.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Это важно, потому что каждый узел Postgres до сих пор почти ничего не знает о других узлах в этом импровизированном кластере, спустя более чем 15 лет. Само по себе это не обязательно проблема, но это выдает определённую долю умышленного неведения со стороны каждого узла. Почему каждый узел не заботится о существовании других узлов или даже не признаёт их существования?&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Конечно же, каждый узел должен заботиться о том, что другие узлы существуют! Именно так и родился каждый инструмент высокой доступности для Postgres.&lt;a href=&quot;https://slony.info/&quot;&gt; Slony&lt;/a&gt; и &lt;a href=&quot;https://www.pgpool.net/docs/latest/en/html/&quot;&gt;PgPool-II&lt;/a&gt; были, вероятно, первыми из них, использование &lt;a href=&quot;https://clusterlabs.org/pacemaker/&quot;&gt;Pacemaker&lt;/a&gt; и &lt;a href=&quot;https://corosync.github.io/corosync/&quot;&gt;Corosync&lt;/a&gt; всегда было популярно в ранние дни, затем появились &lt;a href=&quot;https://bucardo.org/Bucardo/&quot;&gt;Bucardo&lt;/a&gt;, &lt;a href=&quot;https://www.repmgr.org/&quot;&gt;repmgr&lt;/a&gt; и &lt;a href=&quot;https://www.enterprisedb.com/docs/efm/latest/&quot;&gt;EFM&lt;/a&gt;. Это лишь наиболее примечательные примеры, известные большинству сообщества.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Но после первоначального выпуска Patroni произошла забавная вещь: неумолимый поток инструментов высокой доступности для Postgres внезапно прекратился. Все сразу поняли, что в нём есть что-то, что кардинально отличает его от предшественников. Давайте поговорим о том, почему.&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>Tue, 10 Mar 2026 11:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3324.html</guid>
    
</item>
<item>
    <title>Использование Patroni для создания кластера высокой доступности Postgres — Часть 3: HAProx</title>
    <link>https://sql-ex.ru/blogs/?/Patroni-Postgres-3-HAProx.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Patroni-Postgres-3-HAProx.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3336</wfw:comment>

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

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

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

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

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

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

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

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

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

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

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

    <pubDate>Wed, 25 Mar 2026 17:29:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3335.html</guid>
    
</item>
<item>
    <title>Вычисление скользящего среднего с помощью оконных функций в T-SQL</title>
    <link>https://sql-ex.ru/blogs/?/T-SQL.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/T-SQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3334</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3334</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/8124/calculate-a-moving-average-with-t-sql-windowing-functions/&quot;&gt;Jared Westover. Calculate a Moving Average with T-SQL Windowing Functions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Хотя мне нравится использовать SQL Server, есть несколько вещей, для которых лучше подходят другие инструменты. Например, вычисление скользящего среднего или накопительных итогов зачастую проще выполнить с помощью таких инструментов, как  Power BI или Excel. Это связано с тем, что Microsoft разрабатывала эти программы, имея в виду подобную функциональность. Недавно мы оптимизировали сложный запрос скользящего среднего, написанный для SQL Server 2008R2. Сюрприз! В SQL Server нет встроенной функции для вычисления скользящего среднего. Но не беспокойтесь, я покажу вам, как это сделать.&lt;br /&gt;
&lt;br /&gt;
В этой статье я рассмотрю два метода для создания скользящего среднего в SQL Server. Мы начнем со старого и менее производительного способа, который присутствовал в  нашей производственной системе. Кто знает, может быть вы все еще используете устаревшую версию SQL Server. Затем я покажу современный способ с использованием оконных функций и то, как добавление индекса, все меняет. К концу статьи вы будете готовы, чтобы справиться с этим скользящим средним в следующий раз, когда это кому-то понадобится, а не просто скажете: &quot;Используй Excel&quot;.&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/T-SQL.html#extended&quot;&gt;Continue reading &quot;Вычисление скользящего среднего с помощью оконных функций в T-SQL&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Sun, 22 Mar 2026 07:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3331.html</guid>
    
</item>
<item>
    <title>Новости за 2026-03-14 - 2026-03-20</title>
    <link>https://sql-ex.ru/blogs/?/2026-03-14-2026-03-20.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-03-14-2026-03-20.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3330</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Новая задача DML от &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=69553&#039;&gt;pegoopik&lt;/a&gt; опубликована под номером 27 (оценка сложности 2 балла).&lt;br /&gt; &lt;br /&gt;
Выполнены следующие переносы:&lt;br /&gt;&lt;br /&gt;
27 (старая) -&gt; 18 -&gt; 9 -&gt; (-8)&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=179&quot;&gt;179 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;6&amp;#09;&amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=0&amp;N=0&quot;&gt;Guest&#039;s book&lt;/a&gt;&amp;#09;&amp;#09;5&amp;#09;&amp;#09;10&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=20&quot;&gt;20 (DML)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;7&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Авторы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Автор&amp;#09;&amp;#09;Сообщений&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=69553&quot; target=&quot;_blank&quot;&gt;pegoopik&lt;/a&gt;  &amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=875433&quot; target=&quot;_blank&quot;&gt;s108&lt;/a&gt;  &amp;#09;3&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;selber&lt;/a&gt;  &amp;#09;3&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=165216&quot; target=&quot;_blank&quot;&gt;rock_4&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-03-14-2026-03-20.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-03-14 - 2026-03-20&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Mon, 16 Mar 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3327.html</guid>
    
</item>
<item>
    <title>Новости за 2026-03-07 - 2026-03-13</title>
    <link>https://sql-ex.ru/blogs/?/2026-03-07-2026-03-13.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-03-07-2026-03-13.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3326</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Изменения среди лидеров рейтинга&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09;Участник (решенные задачи)&lt;/b&gt;&lt;br /&gt; 20&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=128116&#039;&gt;selber&lt;/a&gt; (179)&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Лидеры недели&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;&amp;#09;Участник&amp;#09;&amp;#09;w_sel&amp;#09;all_sel&amp;#09;select&amp;#09;dml&amp;#09;Всего&amp;#09;Рейтинг&lt;/b&gt;&lt;br /&gt; Lysenko O. (Oleg15062025)     &amp;#09;15&amp;#09;26&amp;#09;22&amp;#09;0&amp;#09;22&amp;#09;2327&lt;br /&gt; Бадахьян С. (wamp.j)          &amp;#09;16&amp;#09;21&amp;#09;22&amp;#09;0&amp;#09;22&amp;#09;4014&lt;br /&gt; Odnokurtsev  (AlFochino)      &amp;#09;12&amp;#09;63&amp;#09;21&amp;#09;0&amp;#09;21&amp;#09;1099&lt;br /&gt; Kad V.Y.  (s108)              &amp;#09;11&amp;#09;57&amp;#09;17&amp;#09;0&amp;#09;17&amp;#09;968&lt;br /&gt; Сафронов П.А.  (Paulus73)     &amp;#09;7&amp;#09;97&amp;#09;14&amp;#09;3&amp;#09;17&amp;#09;260&lt;br /&gt; Сильван  (silvr)              &amp;#09;2&amp;#09;67&amp;#09;4&amp;#09;0&amp;#09;4&amp;#09;709&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-03-07-2026-03-13.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-03-07 - 2026-03-13&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 13 Mar 2026 23:21:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3326.html</guid>
    
</item>
<item>
    <title>T-SQL в SQL Server 2025: нечеткий поиск строки II</title>
    <link>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025-II.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025-II.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3325</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3325</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-fuzzy-string-search-ii&quot;&gt;Steve Jones. T-SQL in SQL Server 2025: Fuzzy String Search II&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
В &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.sqlservercentral.com/articles/t-sql-in-sql-server-2025-the-string-similarity-functions&quot;&gt;последней статье&lt;/a&gt; мы проверяли нечеткое соответствие строк при помощи новых функций в SQL Server 2025. Мы знаем, что сравнение строк всегда вызывало сложности, когда у нас нет качественных данных. Если нам нужно точное совпадение, SQL Server работает отлично. Однако мы часто ждем от пользователей ввода значений без опечаток и знать, какие значения они хотят найти. Или хотя бы знать часть строки.&lt;br /&gt;
&lt;br /&gt;
В SQL Server 2025 появилось несколько новых функций, которые помогают с нечетким совпадением строк. В последней статье были рассмотрены функции расстояния, EDIT_DISTANCE() и EDIT_DISTANCE_SIMILARITY(). В этой статье мы проверим две другие функции, JARO_WINKLER_DISTANCE() и JARO_WINKLER_SIMILARITY(). Как и другие функции, они находятся в предварительной версии (по состоянию на январь 2026 г.), так что будьте осторожны с использованием их в продакшене. Вам также необходимо включить эти функции как часть конфигурации области базы данных. Мы рассмотрели это в первой статье. &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Это часть серии статей, посвященной тому, как язык T-SQL развивается в SQL Server 2025. &lt;br /&gt;
&lt;br /&gt;
Примечание. Некоторые из этих изменений уже доступны в различных продуктах Azure SQL.&lt;/em&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/T-SQL-SQL-Server-2025-II.html#extended&quot;&gt;Continue reading &quot;T-SQL в SQL Server 2025: нечеткий поиск строки II&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 13 Mar 2026 08:40:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3325.html</guid>
    
</item>

</channel>
</rss>
