<?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>Tue, 10 Mar 2026 08:49: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>Как 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;Давайте признаем: существует множество инструментов высокой доступности (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>Общие проблемы в SQL Server: Invalid Length</title>
    <link>https://sql-ex.ru/blogs/?/SQL-Server-Invalid-Length.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-Server-Invalid-Length.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3323</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3323</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/sql-server/common-sql-server-problems-invalid-length/&quot;&gt;Aaron Bertrand. Common SQL Server Problems: Invalid Length&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Это еще одна часть моей &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/simple-talk/collections/common-issues-in-sql-server/&quot;&gt;серии&lt;/a&gt;, представляющей общие проблемы в SQL Server. Сейчас мы поговорим о самой распространенной ошибке: invalid length (неверная длина).&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Что означает ошибка invalid length в SQL Server?  &lt;/h2&gt;&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;Msg 537, Level 16, State 3&lt;br /&gt;
Invalid length parameter passed to the LEFT or SUBSTRING function.&lt;/pre&gt;&lt;br /&gt;
Как показано выше, ошибка invalid length возникает, когда вы передаете некорректный или неожиданный параметр в &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://sql-tutorial.ru/ru/book/second_phase_of_testing/transact_sql_string_datetime_functions/string_functions_in_sql_server/&quot;&gt;строковую функцию&lt;/a&gt;. Например:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;DECLARE @FirstName nvarchar(32) = N&#039;frank&#039;;&lt;br /&gt;
SELECT LEFT(@FirstName, -1);&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-Server-Invalid-Length.html#extended&quot;&gt;Continue reading &quot;Общие проблемы в SQL Server: Invalid Length&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 09 Mar 2026 15:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3323.html</guid>
    
</item>
<item>
    <title>Новости за 2026-02-28 - 2026-03-06</title>
    <link>https://sql-ex.ru/blogs/?/2026-02-28-2026-03-06.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-02-28-2026-03-06.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3322</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;h2&gt;&lt;font color=&quot;#ff0080&quot;&gt;Посетительниц сайта поздравляем с наступающим праздником 8 Марта! Желаем здоровья, счастья и вечной красоты!&lt;/font&gt;&lt;/h2&gt;  &lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt; Идя навстречу тем участникам, кто не является фанатом футбола, хоть и поздно, но опубликованы &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://sql-tutorial.ru/ru/book/typical_mistakes_select/football_database/#%d0%bf%d0%be%d1%8f%d1%81%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%ba-%d1%81%d1%85%d0%b5%d0%bc%d0%b5&quot;&gt;пояснения к схеме &quot;Футбольный клуб&quot;&lt;/a&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;.&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=0&amp;N=1&quot;&gt;Certification&lt;/a&gt;&amp;#09;&amp;#09;9&amp;#09;&amp;#09;12&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=55&quot;&gt;55 (DML)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=59&quot;&gt;59 (DML)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;4&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=51&quot;&gt;51 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;9&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=56&quot;&gt;56 (DML)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-02-28-2026-03-06.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-02-28 - 2026-03-06&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Wed, 04 Mar 2026 08:50:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3320.html</guid>
    
</item>
<item>
    <title>Теория множеств и пакетный режим в SQL Server</title>
    <link>https://sql-ex.ru/blogs/?/SQL-Server.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3319</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3319</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/blogs/set-theory-vs-batch-mode-in-sql-server&quot;&gt;SQLPals. Set Theory vs. Batch Mode in SQL Server&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Не так давно коллега был в совершенном шоке, когда впервые услышал о возможности пакетного режима в SQL Server. Его мгновенной реакцией было: &quot;Стой, но SQL основан на теории множеств. Не означает ли это, что он уже все обрабатывает как множество, а не построчно?&quot;&lt;br /&gt;
&lt;br /&gt;
Это действительно довольно общее представление, и на первый взгляд это имеет смысл. Кроме того, люди часто представляют силу реляционных баз данных в том, что они &quot;обрабатывают множества данных за один прием&quot;. Однако есть нюансы. Давайте проясним ситуацию. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-Server.html#extended&quot;&gt;Continue reading &quot;Теория множеств и пакетный режим в SQL Server&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

    <pubDate>Fri, 27 Feb 2026 19:39:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3318.html</guid>
    
</item>
<item>
    <title>Новости за 2026-02-21 - 2026-02-27</title>
    <link>https://sql-ex.ru/blogs/?/2026-02-21-2026-02-27.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-02-21-2026-02-27.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3317</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3317</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=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;selber&lt;/a&gt; опубликована под номером 59 (оценка сложности 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;w_sel&amp;#09;all_sel&amp;#09;select&amp;#09;dml&amp;#09;Всего&amp;#09;Рейтинг&lt;/b&gt;&lt;br /&gt; Kad V.Y.  (s108)              &amp;#09;19&amp;#09;34&amp;#09;31&amp;#09;0&amp;#09;31&amp;#09;1436&lt;br /&gt; &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=832048&#039;&gt;Новиков С.В.  (@Ser589QA)     &lt;/a&gt;&amp;#09;8&amp;#09;119&amp;#09;24&amp;#09;0&amp;#09;24&amp;#09;196&lt;br /&gt; Кайкова И.В.  (ira_kay)       &amp;#09;8&amp;#09;36&amp;#09;17&amp;#09;0&amp;#09;17&amp;#09;1373&lt;br /&gt; Заикин А.И.  (Fenrigrel)      &amp;#09;10&amp;#09;31&amp;#09;15&amp;#09;0&amp;#09;15&amp;#09;1549&lt;br /&gt; fioletovaya  (fioletovaya2)   &amp;#09;6&amp;#09;133&amp;#09;10&amp;#09;0&amp;#09;10&amp;#09;179&lt;br /&gt; Odnokurtsev  (AlFochino)      &amp;#09;4&amp;#09;37&amp;#09;10&amp;#09;0&amp;#09;10&amp;#09;1824&lt;br /&gt; Корсаков  (Wallen)            &amp;#09;4&amp;#09;4&amp;#09;7&amp;#09;0&amp;#09;7&amp;#09;6913&lt;br /&gt; Бадахьян С. (wamp.j)          &amp;#09;5&amp;#09;5&amp;#09;6&amp;#09;0&amp;#09;6&amp;#09;7226&lt;br /&gt; Burmenskiy D.O.  (dnlbrm)     &amp;#09;4&amp;#09;13&amp;#09;5&amp;#09;0&amp;#09;5&amp;#09;5511&lt;br /&gt; Zaichenko M.E.  (Makson4ikppcp&amp;#09;4&amp;#09;4&amp;#09;5&amp;#09;0&amp;#09;5&amp;#09;7822&lt;br /&gt; &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=791796&#039;&gt;Саркисьян Г. (gennadi_s)      &lt;/a&gt;&amp;#09;1&amp;#09;206&amp;#09;4&amp;#09;0&amp;#09;4&amp;#09;15&lt;br /&gt; Равчеев  (Nikitiwe)           &amp;#09;3&amp;#09;3&amp;#09;4&amp;#09;0&amp;#09;4&amp;#09;8483&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-02-21-2026-02-27.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-02-21 - 2026-02-27&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Wed, 25 Feb 2026 10:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3315.html</guid>
    
</item>
<item>
    <title>Лучшие практики SQL: уроки, усвоенные мной за годы работы инженером-программистом</title>
    <link>https://sql-ex.ru/blogs/?/SQL-,.html</link>
            <category>Articles</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3314</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3314</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://darren-tan0512.medium.com/sql-best-practices-hard-learned-lessons-from-my-years-as-a-software-engineer-1d50f6ea54b7&quot;&gt;Darren Tan. SQL Best Practices: Hard-Learned Lessons from my years as a Software Engineer&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;em&gt;База данных похожа на шутку: если ее приходится объяснять, значит, она, скорее всего, плохо спроектирована...&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Представьте: 3 часа утра в субботу, а я сижу за столом, три часа на то, что должно быть простой обработкой пакета производственных данных. Задача казалась простой - обработать набор данных 1200 заказчиков. Что я не мог предвидеть, так это то, что на каждый вызов API должен срабатывать триггер с тысячами операций, происходящих в базе данных, превращая простую работу в ночной кошмар.&lt;br /&gt;
&lt;br /&gt;
Эта бессонная ночь субботы дала мне больше в плане понимания оптимизации SQL, чем все курсы информатики, которые я когда-либо проходил. Хотя бизнес-команда в конце концов получила свои данные (хотя и с некоторым ожиданием), я получил нечто более ценное: глубокое уважение как к силе, так и подводным камням запросов SQL.&lt;br /&gt;
&lt;br /&gt;
Являетесь ли вы начинающим разработчиком, только приступающим к работе, или опытным архитектором, я надеюсь, что, делясь усвоенными мной уроками, я помогу вам избежать некоторого негативного опыта, который я получил той ночью. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-,.html#extended&quot;&gt;Continue reading &quot;Лучшие практики SQL: уроки, усвоенные мной за годы работы инженером-программистом&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 23 Feb 2026 10:53:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3314.html</guid>
    
</item>
<item>
    <title>Новости за 2026-02-14 - 2026-02-20</title>
    <link>https://sql-ex.ru/blogs/?/2026-02-14-2026-02-20.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-02-14-2026-02-20.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3313</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3313</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; Komov S. M. усилил проверку задачи 192 (SELECT, обуч. этап).&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt; Новая задача DML от &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; опубликована под номером 19 (оценка сложности 3 балла). При этом выполнены следующие перестановки:&lt;br /&gt;&lt;br /&gt;
19 (старая) -&gt; 13&lt;br /&gt;&lt;br /&gt;
13 -&gt; (-7)&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=13&quot;&gt;13 (DML)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=49&quot;&gt;49 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&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=10&quot;&gt;10 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&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=47&quot;&gt;47 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;7&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=17&quot;&gt;17 (DML)&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-02-14-2026-02-20.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-02-14 - 2026-02-20&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 20 Feb 2026 23:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3313.html</guid>
    
</item>
<item>
    <title>Уроки, извлечённые при создании MCP-сервера для PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/,-MCP-PostgreSQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/,-MCP-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3312</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Dave Page, &lt;a href=&quot;https://www.pgedge.com/blog/lessons-learned-writing-an-mcp-server-for-postgresql&quot;&gt;Lessons Learned Writing an MCP Server for PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;За последние несколько месяцев мы разрабатывали &lt;a href=&quot;https://github.com/pgEdge/pgedge-postgres-mcp&quot;&gt;pgEdge Postgres MCP Server&lt;/a&gt; — инструмент с открытым исходным кодом, который позволяет большим языковым моделям напрямую взаимодействовать с базами данных PostgreSQL через протокол &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;Model Context Protocol&lt;/a&gt;. Он поддерживает Claude, GPT, локальные модели через Ollama и практически любой MCP-совместимый клиент, который можно к нему подключить. В процессе мы многое узнали о том, как обеспечить эффективную совместную работу ИИ и баз данных, и самый главный урок касался токенов.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Если вы хоть раз пользовались большой языковой моделью, вы знаете, что контекстные окна конечны, а токены стоят денег. Однако при работе с базой данных проблема обостряется до такой степени, к которой простое общение по электронной почте или написание прозы вас не готовят. Один единственный SELECT * в скромной таблице может вернуть десятки тысяч строк, каждая с дюжиной столбцов, и каждый символ этого вывода потребляет токены. Умножьте это на диалог, в котором LLM исследует схему, выполняет запросы и уточняет своё понимание, — и вы можете исчерпать контекстное окно до того, как будет сделано что-то действительно полезное.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Эта статья описывает стратегии, которые мы разработали для удержания расхода токенов под контролем, одновременно предоставляя LLM достаточно информации для продуктивной работы. Если вы создаёте свой MCP-сервер или просто интересуетесь практическими аспектами подключения LLM к структурированным данным, надеюсь, некоторые из этих уроков помогут вам избежать ошибок.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/,-MCP-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Уроки, извлечённые при создании MCP-сервера для PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 20 Feb 2026 17:38:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3312.html</guid>
    
</item>
<item>
    <title>Комментирование в MySQL: синтаксис, версии и примеры</title>
    <link>https://sql-ex.ru/blogs/?/MySQL-,.html</link>
            <category>MySQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/MySQL-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3311</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/the-table-sql-and-devtalk/commenting-in-mysql-syntax-versions-and-examples-cf0833a181ad&quot;&gt;DbVisualizer. Commenting in MySQL: Syntax, Versions, and Examples&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Хорошие комментарии кода SQL помогают разработчикам понять, что делает запрос и почему он имеется - особенно, когда логика сложна и имеется множество соединений. MySQL предлагает несколько способов добавить контекст к вашему коду: однострочные комментарии, многострочные блоки и даже уникальные для MySQL комментарии с представлением версии и указаниями оптимизатору.&lt;br /&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>Fri, 20 Feb 2026 09:03:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3311.html</guid>
    
</item>
<item>
    <title>Оптимизация Top K в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/Top-K-PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Top-K-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3310</wfw:comment>

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

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

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

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

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

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

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

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

    <pubDate>Mon, 16 Feb 2026 18:08:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3308.html</guid>
    
</item>
<item>
    <title>JSON или TOON - новая эра структурированного ввода?</title>
    <link>https://sql-ex.ru/blogs/?/JSON-TOON.html</link>
            <category>Articles</category>
    
    <comments>https://sql-ex.ru/blogs/?/JSON-TOON.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3307</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3307</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/medialesson/json-vs-toon-a-new-era-of-structured-input-19cbb7fc552b&quot;&gt;Marius Schröder. JSON vs TOON — A new era of structured input&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Во времена, когда подсказки становятся все объемней, а модели искусственного интеллекта — все более мощными, встает один вопрос: как мы можем поддерживать низкими затраты и время обработки?&lt;br /&gt;
&lt;br /&gt;
При программной работе с LLM структурированный вывод стал уже стандартным подходом. Вы можете попросить ИИ ответить в определенном формате, например, JSON. Определяя схему модели и идеально описывая, что означает каждое поле, ИИ пытается понять контекст и наполнить вывод &quot;знанием, которое он считает лучшим и доверительным&quot; (или насколько близко к этому подходит LLM). &lt;br /&gt;
&lt;br /&gt;
Становится проще, чем когда-либо, работать с результатами ИИ. Но как насчет ввода?&lt;br /&gt;
&lt;br /&gt;
Хотя мы можем сделать вывод аккуратным и структурированным, большинство из нас все еще выгружает огромный JSON, YAML или даже набор данных в виде плоского текста в подсказки. Это не только долго и дорого, но также далеко не эффективно с точки зрения токенов.&lt;br /&gt;
&lt;br /&gt;
Поэтому было только делом времени появление нового формата, который бы исправил ситуацию.&lt;br /&gt;
&lt;br /&gt;
И тут появился TOON. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/JSON-TOON.html#extended&quot;&gt;Continue reading &quot;JSON или TOON - новая эра структурированного ввода?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 15 Feb 2026 23:34:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3307.html</guid>
    
</item>
<item>
    <title>Новости за 2026-02-07 - 2026-02-13</title>
    <link>https://sql-ex.ru/blogs/?/2026-02-07-2026-02-13.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-02-07-2026-02-13.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3306</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3306</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=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;Автор&lt;/a&gt; добавил данные для проверки задачи 55 (DML).&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=20&quot;&gt;20 (DML)&lt;/a&gt;&amp;#09;&amp;#09;5&amp;#09;&amp;#09;9&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=2&amp;N=12&quot;&gt;12 (DML)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;7&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;2&amp;#09;&amp;#09;9&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=128116&quot; target=&quot;_blank&quot;&gt;selber&lt;/a&gt;  &amp;#09;4&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;3&lt;br /&gt; s108&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-02-07-2026-02-13.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-02-07 - 2026-02-13&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Fri, 13 Feb 2026 11:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3305.html</guid>
    
</item>
<item>
    <title>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=3304</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3304</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-concatenating-strings&quot;&gt;Steve Jones. T-SQL in SQL Server 2025: Concatenating Strings&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Как и многие из вас, я часто соединяю строки (конкатенирую) при помощи простого арифметического оператора +. У нас есть еще и другие способы соединения строк, но в SQL Server 2025 появился еще один новый оператор. Это &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://learn.microsoft.com/en-us/sql/t-sql/language-elements/string-concatenation-pipes-transact-sql?view=sql-server-ver17&quot;&gt;оператор двойной трубы (||)&lt;/a&gt;. В этой статье мы разберемся, как он работает, и сравним с другими вариантами.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Новый оператор&lt;/h2&gt;&lt;br /&gt;
Он действительно документирован, хотя и после || в MS Learn. Идея состоит в том, что соединяться будут: &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>Fri, 13 Feb 2026 10:06:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3304.html</guid>
    
</item>
<item>
    <title>Важность настройки контрольной точки в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3301</wfw:comment>

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

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

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

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

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

    <pubDate>Wed, 11 Feb 2026 12:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3302.html</guid>
    
</item>
<item>
    <title>Эффективные стратегии для хранения и парсинга JSON в SQL Server</title>
    <link>https://sql-ex.ru/blogs/?/JSON-SQL-Server.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/JSON-SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3300</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3300</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/sql-server/t-sql-programming-sql-server/effective-strategies-for-storing-and-parsing-json-in-sql-server/&quot;&gt;Edward Pollack. Effective Strategies for Storing and Parsing JSON in SQL Server&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Подобно XML, JSON является открытым стандартным форматом хранения данных, метаданных, параметров или других неструктурированных или полуструктурированных данных. Из-за его активного использования в современных приложениях он обречен попасть в базы данных, где его необходимо будет хранить, сжимать, изменять, выполнять поиск и извлекать. &lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что реляционные базы данных не являются идеальным местом для хранения и управления мало структурированными данными, требования, предъявляемые приложениями, могут зачастую преодолевать &quot;оптимальный&quot; проект базы данных. Это удобно иметь данные JSON рядом со связанными с ними реляционными данными и эффективная организация хранилища с самого начала может сэкономить значительное время и ресурсы в будущем. &lt;br /&gt;
&lt;br /&gt;
Эта статья посвящена тому, как хранится JSON в SQL Server и разным способам, с помощью которых он записывается, читается и обслуживается. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/JSON-SQL-Server.html#extended&quot;&gt;Continue reading &quot;Эффективные стратегии для хранения и парсинга JSON в SQL Server&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <pubDate>Tue, 03 Feb 2026 14:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3296.html</guid>
    
</item>
<item>
    <title>Новости за 2026-01-31 - 2026-02-06</title>
    <link>https://sql-ex.ru/blogs/?/2026-01-31-2026-02-06.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-01-31-2026-02-06.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3298</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3298</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; Очередное усиление проверки задачи 20 (DML) данными от &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=801929&quot; target=&quot;_blank&quot;&gt;saphirion&lt;/a&gt;.&lt;br /&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;Автор&lt;/a&gt; добавил данные для проверки задачи 42 (DML).&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=308&quot;&gt;308 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;10&amp;#09;&amp;#09;3&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;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=42&quot;&gt;42 (DML)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=43&quot;&gt;43 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&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=21&quot;&gt;21 (DML)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;3&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-01-31-2026-02-06.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-01-31 - 2026-02-06&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Tue, 03 Feb 2026 11:24:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3295.html</guid>
    
</item>
<item>
    <title>Проблема неявных транзакций</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3293</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3293</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/blogs/the-challenge-of-implicit-transactions-sqlnewblogger&quot;&gt;Steve Jones. The Challenge of Implicit Transactions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Сценарий&lt;/h2&gt;&lt;br /&gt;
Вы выполняете такой код:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/02/implicit_trans_1.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Все выглядит хорошо. Я выполнил вставку и вижу данные в таблице. Я тороплюсь, поэтому щелкаю &quot;close&quot; (закрыть) на вкладке и вижу это:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/02/implicit_trans_2.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Я настолько привык к этим раздражающим меня сообщениям в SSMS, что я нажимаю «Нет», чтобы избавиться от них и закрыть окно.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/unknown.html#extended&quot;&gt;Continue reading &quot;Проблема неявных транзакций&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 01 Feb 2026 11:16:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3293.html</guid>
    
</item>
<item>
    <title>Новости за 2026-01-24 - 2026-01-30</title>
    <link>https://sql-ex.ru/blogs/?/2026-01-24-2026-01-30.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-01-24-2026-01-30.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3292</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3292</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=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;Автор&lt;/a&gt; уточнил формулировку и усилил проверку задачи 308 (SELECT, рейтинг).&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=0&amp;N=1&quot;&gt;Certification&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;12&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=3&quot;&gt;3 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;3&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=58&quot;&gt;58 (DML)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;3&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;2&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=191&quot;&gt;191 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-01-24-2026-01-30.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-01-24 - 2026-01-30&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 30 Jan 2026 18:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3292.html</guid>
    
</item>
<item>
    <title>Подводные камни Truncate Table</title>
    <link>https://sql-ex.ru/blogs/?/Truncate-Table.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/Truncate-Table.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3289</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3289</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/blogs/4667641&quot;&gt;Peter Skoglund. Truncate Table Pitfalls&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Усечение таблицы может быть замечательно быстрым - и чрезвычайно опасным при неосмотрительном использовании. Если вы хотите иметь скорость и не разочароваться, тут дается практическое, готовое для интервью руководство по реальным подводным камням TRUNCATE TABLE в SQL Server и то, как избежать их.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Справка&lt;/h2&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;TRUNCATE TABLE является операцией DDL, которая &lt;strong&gt;освобождает страницы&lt;/strong&gt; (эффективно журнализированные) и &lt;strong&gt;сбрасывает IDENTITY&lt;/strong&gt; к начальному значению. При этом &lt;strong&gt;триггеры DELETE не срабатывают&lt;/strong&gt;. &lt;strong&gt;Возможен&lt;/strong&gt; откат при выполнении внутри транзакции.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Завершается неудачно&lt;/strong&gt;, если на таблицу &lt;strong&gt;ссылается внешний ключ&lt;/strong&gt; (даже если дочерняя таблица пуста), используется в &lt;strong&gt;индексированных представлениях&lt;/strong&gt;, является &lt;strong&gt;системно-версионной (временной), опубликованной для репликации&lt;/strong&gt; или включена для CDC, или на нее ссылается &lt;strong&gt;ограничение EDGE графа&lt;/strong&gt;. Существует специальная возможность для самоссылающихся внешних ключей.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Начиная с &lt;strong&gt;SQL Server 2016&lt;/strong&gt;, вы можете &lt;strong&gt;усекать конкретные секции&lt;/strong&gt;: TRUNCATE TABLE dbo.Fact WITH (PARTITIONS (4 TO 6)); (индексы должны быть выровнены).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Truncate-Table.html#extended&quot;&gt;Continue reading &quot;Подводные камни Truncate Table&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 27 Jan 2026 09:41:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3289.html</guid>
    
</item>
<item>
    <title>Поведение команды ALTER TABLE для секционированных таблиц в PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/ALTER-TABLE-PostgreSQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/ALTER-TABLE-PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3287</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.highgo.ca/author/lichao/&quot;&gt;Chao Li&lt;/a&gt;, &lt;a href=&quot;https://www.highgo.ca/2026/01/21/understanding-alter-table-behavior-on-partitioned-tables-in-postgresql/&quot;&gt;Understanding ALTER TABLE Behavior on Partitioned Tables in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Секционированные таблицы — это базовая возможность PostgreSQL, но один аспект по-прежнему регулярно вызывает путаницу — даже у опытных пользователей:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Как именно ведёт себя команда &lt;code&gt;ALTER TABLE&lt;/code&gt;, когда задействованы секции?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Распространяется ли операция на секции? Влияет ли она на будущие секции? Действительно ли ключевое слово &lt;code&gt;ONLY&lt;/code&gt; делает то, что заявлено? Почему некоторые команды работают на родительской таблице, но не на секциях — или наоборот?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Сегодня документация PostgreSQL хорошо описывает отдельные подкоманды &lt;code&gt;ALTER TABLE&lt;/code&gt;, но редко объясняет их взаимодействие с секционированными таблицами в целом. В результате пользователи часто узнают о реальном поведении только методом проб и ошибок.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Эта статья обобщает систематическое исследование поведения &lt;code&gt;ALTER TABLE&lt;/code&gt; для секционированных таблиц, превращая разрозненные правила в последовательную классификационную модель.&lt;/p&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/ALTER-TABLE-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Поведение команды ALTER TABLE для секционированных таблиц в PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 24 Jan 2026 18:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3287.html</guid>
    
</item>
<item>
    <title>Новости за 2026-01-17 - 2026-01-23</title>
    <link>https://sql-ex.ru/blogs/?/2026-01-17-2026-01-23.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-01-17-2026-01-23.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3286</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3286</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/Lforum.php?F=3&amp;N=192&quot;&gt;192 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;12&amp;#09;&amp;#09;8&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=1&quot;&gt;1 (SELECT)&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/Lforum.php?F=3&amp;N=39&quot;&gt;39 (Learn)&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=2&amp;N=10&quot;&gt;10 (DML)&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/Lforum.php?F=3&amp;N=25&quot;&gt;25 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;9&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;12&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;8&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=414953&quot; target=&quot;_blank&quot;&gt;Meilleur_NG&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; KhNadezhda&amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-01-17-2026-01-23.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-01-17 - 2026-01-23&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 23 Jan 2026 19:23:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3286.html</guid>
    
</item>
<item>
    <title>Четыре причины раздувания таблиц в PostgreSQL и как с этим бороться</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3285</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://dev.to/shinyakato_&quot;&gt;Shinya Kato&lt;/a&gt;, &lt;a href=&quot;https://dev.to/shinyakato_/4-causes-of-table-bloat-in-postgresql-and-how-to-address-them-3ec9&quot;&gt;4 causes of table bloat in PostgreSQL and how to address them&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Раздувание таблиц в PostgreSQL — это явление, при котором «мёртвые записи» (dead tuples), образовавшиеся в результате операций &lt;code&gt;UPDATE&lt;/code&gt; или &lt;code&gt;DELETE&lt;/code&gt;, не собираются процессом &lt;code&gt;VACUUM&lt;/code&gt;, что приводит к неоправданному увеличению размеров файлов данных.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Чтобы &lt;code&gt;VACUUM&lt;/code&gt; мог освободить мёртвые записи, должна быть гарантия, что эти записи «точно не могут быть использованы какими-либо активными на данный момент транзакциями». Если старые транзакции сохраняются по какой-либо причине, сборка мусора процессом &lt;code&gt;VACUUM&lt;/code&gt; останавливается на этой точке.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В этой статье объясняются следующие четыре причины раздувания таблиц: как каждая проявляется, как определить коренную причину и как её устранить.&lt;/p&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;Запросы на серверах-репликах с включённым параметром &lt;code&gt;hot_standby_feedback&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;
  &lt;li&gt;Задержка логической репликации&lt;/li&gt;&lt;br /&gt;
&lt;/ol&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>Thu, 22 Jan 2026 21:08:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3285.html</guid>
    
</item>
<item>
    <title>Нестандартная оптимизация PostgreSQL</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3284</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Haki Benita, &lt;a href=&quot;https://hakibenita.com/postgresql-unconventional-optimizations&quot;&gt;Unconventional PostgreSQL Optimizations&lt;/a&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Когда дело доходит до оптимизации баз данных, разработчики часто хватаются за одни и те же старые инструменты: немного переписать запрос, навесить индекс на столбец, денормализовать, проанализировать, очистить, перестроить кластер и т.д. Традиционные методы эффективны, но иногда творческий подход может принести реальную пользу!&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;В этой статье я представляю нестандартные методы оптимизации в PostgreSQL.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Нестандартная оптимизация PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 21 Jan 2026 11:40:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3284.html</guid>
    
</item>
<item>
    <title>Индексы BRIN в PostgreSQL для специалистов в SQL Server</title>
    <link>https://sql-ex.ru/blogs/?/BRIN-PostgreSQL-SQL-Server.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/BRIN-PostgreSQL-SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3283</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.sqlpassion.at/archive/author/siteadmin/&quot;&gt;Klaus Aschenbrenner&lt;/a&gt;, &lt;a href=&quot;https://www.sqlpassion.at/archive/2026/01/19/brin-indexes-in-postgresql/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=brin-indexes-in-postgresql&quot;&gt;BRIN Indexes in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Когда специалисты по SQL Server начинают серьёзно работать с PostgreSQL, большая часть обучения кажется комфортной. Таблицы ведут себя ожидаемо, транзакции знакомы, а B-деревья выглядят обнадёживающе похожими на то, что вы использовали годами в SQL Server. Затем вы сталкиваетесь с индексами BRIN.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;На первый взгляд они кажутся почти безрассудными: нет указателей на строки, нет точной навигации и явное принятие ложных срабатываний. И всё же на очень больших таблицах индексы BRIN часто обеспечивают прирост производительности, для достижения которого в SQL Server потребовались бы кластерные индексы, секционирование или даже columnstore-индексы. Чтобы понять почему, нужно посмотреть не только на то, что делает BRIN, но и на то, как он работает внутри.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/BRIN-PostgreSQL-SQL-Server.html#extended&quot;&gt;Continue reading &quot;Индексы BRIN в PostgreSQL для специалистов в SQL Server&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 20 Jan 2026 11:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3283.html</guid>
    
</item>
<item>
    <title>Утраченный символ - от EBCDIC до Emoji</title>
    <link>https://sql-ex.ru/blogs/?/EBCDIC-Emoji.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/EBCDIC-Emoji.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3282</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    Автор: &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/getting-out-of-character/&quot;&gt;Getting Out of Character&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Молодые программисты выросли с ASCII и Unicode как единственными способами представления символьных данных в компьютере. Но в тёмные века, до того как мы изобрели грязь и вошли в каменный век, были и другие претенденты.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/EBCDIC-Emoji.html#extended&quot;&gt;Continue reading &quot;Утраченный символ - от EBCDIC до Emoji&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 19 Jan 2026 13:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3282.html</guid>
    
</item>
<item>
    <title>Массовая вставка T‑SQL или OPENROWSET: импорт CSV, проблемы доступа к файлам и скрипт PowerShell</title>
    <link>https://sql-ex.ru/blogs/?/TSQL-OPENROWSET-CSV,-PowerShell.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/TSQL-OPENROWSET-CSV,-PowerShell.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3281</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3281</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/11498/sql-bulk-insert-and-openrowset/&quot;&gt;Rick Dobson. T‑SQL BULK INSERT vs OPENROWSET: CSV Imports, File Access Gotchas, and A PowerShell Script&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Большинство руководств по массовой вставке SQL и SQL Server openrowset игнорируют проблемы доступа к файлам, которые могут прервать импорт. И оператор bulk insert, и функция openrowset выполняются под аккаунтом службы SQL Server при чтении файла источника. Аккаунт службы SQL Server должен иметь разрешение на чтение файла или папки, где файл находится. Также удобно иметь разрешения на чтение и выполнение, а также вывод содержимого папки. Кроме того, нестандартные места размещения файла источника (например, C:\Users\Public\Downloads) могут не предоставлять доступ на чтение по умолчанию аккаунту службы SQL Server - всегда проверяйте это перед использованием.&lt;br /&gt;
&lt;br /&gt;
Импорт данных из файла источника в таблицу SQL Server является обычной операцией, но она озадачивает многих новичков и порой вызывает трудности даже у опытных разработчиков в сложных сценариях. В этой статье изучается импорт файлов CSV в таблицы SQL Server либо с помощью оператора BULK INSERT, либо функции openrowset в операторе SELECT. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/TSQL-OPENROWSET-CSV,-PowerShell.html#extended&quot;&gt;Continue reading &quot;Массовая вставка T‑SQL или OPENROWSET: импорт CSV, проблемы доступа к файлам и скрипт PowerShell&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 18 Jan 2026 16:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3281.html</guid>
    
</item>
<item>
    <title>Новости за 2026-01-10 - 2026-01-16</title>
    <link>https://sql-ex.ru/blogs/?/2026-01-10-2026-01-16.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-01-10-2026-01-16.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3280</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3280</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; Новая задача от нового автора (Komov S. M.) выставлена на обучающий этап под номером 192 (сложность 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=1&amp;N=43&quot;&gt;43 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;6&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=58&quot;&gt;58 (DML)&lt;/a&gt;&amp;#09;&amp;#09;4&amp;#09;&amp;#09;5&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=17&quot;&gt;17 (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=53&quot;&gt;53 (DML)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;3&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=36&quot;&gt;36 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;9&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-01-10-2026-01-16.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-01-10 - 2026-01-16&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

    <pubDate>Mon, 12 Jan 2026 11:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3278.html</guid>
    
</item>
<item>
    <title>Основы GROUP BY в SQL</title>
    <link>https://sql-ex.ru/blogs/?/GROUP-BY-SQL.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/GROUP-BY-SQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3277</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3277</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/sql-server/t-sql-programming-sql-server/sql-group-by-basics/&quot;&gt;SQL GROUP BY Basics&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Предложения GROUP BY и HAVING в SQL существуют с самого начала языка, в своей простейшей форме. Изначальная идея заключалась в том, что вы создаёте рабочую таблицу с помощью предложений SELECT ... FROM ... WHERE, а затем разбиваете этот результирующий набор на группы. Группа определяется как набор строк с одинаковыми значениями для столбцов группировки. Негруппируемые столбцы должны были быть свойствами группы (обычно агрегатными функциями), формулами или вычислениями, выполненными на них, либо константами (что технически также является свойством группы).&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Затем каждая группа сводится к одной строке. Важное понятие здесь — исходная таблица больше не существует. Однако если вы достаточно взрослый, чтобы работать с самыми ранними версиями SQL Server, синтаксис Sybase не избавлялся от исходной таблицы. Это приводило к некоторым проблемам. Он предоставлял доступ к исходным данным строк вместе с агрегированными данными.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Исходное предложение HAVING затем применялось к каждой из строк в новой сгруппированной таблице. Это означало, что оно выполнялось после предложения WHERE, которое строило исходную таблицу.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Позже мы добавили оконные функции, расширения для GROUP BY в форме ROLLUP, CUBE и GROUPING SETS. Но с исходными простыми конструкциями GROUP BY – HAVING всё ещё можно сделать довольно много. Их преимущество в том, что они выполняют свою работу за один просмотр таблицы, в то время как более новые конструкции могут требовать временного хранения или нескольких проходов по данным. Исходные версии переносимы и предсказуемы. Спустя все эти десятилетия они теперь хорошо оптимизированы.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GROUP-BY-SQL.html#extended&quot;&gt;Continue reading &quot;Основы GROUP BY в SQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 10 Jan 2026 19:41:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3277.html</guid>
    
</item>
<item>
    <title>Новости за 2026-01-03 - 2026-01-09</title>
    <link>https://sql-ex.ru/blogs/?/2026-01-03-2026-01-09.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-01-03-2026-01-09.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3276</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3276</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=40&quot;&gt;40 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;6&amp;#09;&amp;#09;8&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=149&quot;&gt;149 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;5&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=189&quot;&gt;189 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;3&amp;#09;&amp;#09;3&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=128116&quot; target=&quot;_blank&quot;&gt;selber&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; Paulus73&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-01-03-2026-01-09.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-01-03 - 2026-01-09&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

    <pubDate>Wed, 07 Jan 2026 23:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3275.html</guid>
    
</item>

</channel>
</rss>
