<?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>Wed, 07 Oct 2026 17:34:07 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>5 причин, которые следует рассмотреть при падении производительности запроса</title>
    <link>https://sql-ex.ru/blogs/?/5-,.html</link>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/5-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=2724</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=2724</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.sqlshack.com/5-reasons-to-consider-on-your-query-performance-degradation/&quot;&gt;Esat Erkec. 5 reasons to consider on your Query Performance degradation&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Эта статья дает фундаментальные идеи относительно 5 причин, которые могут вызвать падение производительности запроса в SQL Server.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Введение&lt;/h2&gt;&lt;br /&gt;
Человек, профессионально работающий с базами данных, может получить сообщение или звонок с жалобой на производительность запроса. Обычно это звучит так: &quot;Мое приложение или отчет внезапно начало работать медленно, а вчера не было никаких проблем&quot;. Теперь давайте посмотрим, как подойти к решению таких проблем. На самом деле огромное число факторов могут привести в деградации производительности запроса. Например, мы можем перечислить следующие причины, которые первыми приходят на ум:&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/5-,.html#extended&quot;&gt;Continue reading &quot;5 причин, которые следует рассмотреть при падении производительности запроса&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 07 Oct 2022 16:14:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/2724.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: local_preload_libraries</title>
    <link>https://sql-ex.ru/blogs/?/GUC-local_preload_libraries.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-local_preload_libraries.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3581</wfw:comment>

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

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

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

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: Christophe Pettus, &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-enable_hashjoin/&quot;&gt;All Your GUCs in a Row: enable_hashjoin&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;enable_*&lt;/span&gt;&lt;/code&gt; для соединений — этот, &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-enableasyncappend/&quot;&gt;enable_mergejoin&lt;/a&gt;&lt;/span&gt;&lt;/code&gt; и &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-enableasyncappend/&quot;&gt;enable_nestloop&lt;/a&gt;&lt;/span&gt;&lt;/code&gt; — позволяют вам убрать один вариант со стола и посмотреть, что планировщик выберет вместо него. То же правило семейства, что и всегда (&lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_enable_async_append.html&quot;&gt;enable_async_append&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;): диагностические инструменты, а не регулировочные ручки. По умолчанию включён, контекст — &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;user&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-enable_hashjoin.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: enable_hashjoin&quot;&lt;/a&gt;
    </content:encoded>

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

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-lock_timeout/&quot;&gt;All Your GUCs in a Row: lock_timeout&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;lock_timeout — это параметр безопасности миграций схемы, который, кстати, применяется ко всем блокировкам в системе. Он ограничивает, как долго оператор будет ждать получения любой отдельной «тяжёлой» блокировки, прежде чем сдаться с ошибкой ERROR: canceling statement due to lock timeout (SQLSTATE 55P03, тот же код, что и у сбоев NOWAIT, что удобно для клиентского кода). Значение по умолчанию — 0, что означает «отключено». Контекст — пользовательский. Миллисекунды, если вы не указали единицы измерения. Он появился в 9.3, и то, что он дождался 2013 года, говорит вам о том, как долго люди жили с проблемой, которую он решает.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-lock_timeout.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: lock_timeout&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 07 Oct 2026 09:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3580.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: krb_caseins_users и krb_server_keyfile</title>
    <link>https://sql-ex.ru/blogs/?/GUC-krb_caseins_users-krb_server_keyfile.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-krb_caseins_users-krb_server_keyfile.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3579</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-krb_caseins_users-and-krb_server_keyfile/&quot;&gt;All Your GUCs in a Row: krb_caseins_users and krb_server_keyfile&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Ни один из этих параметров не имеет никакого отношения к методу аутентификации krb5, поскольку PostgreSQL удалил этот метод в версии 9.4. Приставка krb_ сохраняется по той обычной причине, по которой имена параметров переживают всё: переименование GUC ломает каждый postgresql.conf, который его упоминает. На самом деле они настраивают аутентификацию GSSAPI — метод gss в pg_hba.conf, который означает Kerberos, а на практике это обычно означает Active Directory (их «собратьям повезло меньше: krb_server_hostname ушёл в 8.4, а krb_srvname пошёл ко дну вместе с кораблём в 9.4).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Большая часть политики GSSAPI живёт в pg_hba.conf, построчно: include_realm, krb_realm, map. Эти две настройки являются общесерверными, поэтому они вообще являются GUC. Обе имеют контекст sighup; перезагрузки конфигурации достаточно, перезапуск не нужен.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-krb_caseins_users-krb_server_keyfile.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: krb_caseins_users и krb_server_keyfile&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 06 Oct 2026 13:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3579.html</guid>
    
</item>
<item>
    <title>Отказоустойчивость PostgreSQL на Kubernetes за 10 минут</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-Kubernetes-10.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-Kubernetes-10.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3578</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Hans-Juergen Schoenig: &lt;a href=&quot;https://www.cybertec-postgresql.com/en/highly-available-postgresql-on-kubernetes-in-10-minutes/&quot;&gt;Highly Available PostgreSQL on Kubernetes in 10 Minutes&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;«Отказоустойчивый PostgreSQL» обычно означает выборы лидера, потоковые реплики, автоматическое переключение при сбое, проверки работоспособности и массу тщательного связывания. С оператором CYBERTEC PG Operator (CPO) это означает YAML-файл из 14 строк. Вот он целиком, от начала до конца, на ноутбуке с minikube.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Каждая команда и каждый вывод ниже взяты из учебного руководства, которое мы выполнили от начала до конца на свежем minikube (Kubernetes 1.30, CPO 0.9.2, PostgreSQL 18.4).&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-Kubernetes-10.html#extended&quot;&gt;Continue reading &quot;Отказоустойчивость PostgreSQL на Kubernetes за 10 минут&quot;&lt;/a&gt;
    </content:encoded>

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

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-joincollapselimit/&quot;&gt;All Your GUCs in a Row: join_collapse_limit&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;PostgreSQL, как известно, не реализует подсказки к запросам. Это примерно на 95% правда, и join_collapse_limit — это те самые оставшиеся 5%: установите его в 1, и планировщик соединит ваши таблицы ровно в том порядке, в котором вы их написали. Это не эксплойт и не случайность реализации; это задокументировано, и, по словам Тома Лейна (Tom Lane) в списке &lt;a href=&quot;https://www.postgresql.org/message-id/603c8f070905251800g5b86d2dav26eca7f417d15dbf@mail.gmail.com&quot;&gt;pgsql-hackers&lt;/a&gt;, это по сути причина, по которой параметр всё ещё существует. Проект годами говорил людям, что они могут навязать порядок соединений, написав явное вложение JOIN, и удаление этого аварийного люка показалось плохой идеей. Так что у PostgreSQL есть ровно одна подсказка порядка соединений. Просто она не пишется как подсказка.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-join_collapse_limit.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: join_collapse_limit&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 06 Oct 2026 12:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3577.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: jit и jit_provider</title>
    <link>https://sql-ex.ru/blogs/?/GUC-jit-jit_provider.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-jit-jit_provider.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3572</wfw:comment>

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

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

    <pubDate>Sun, 04 Oct 2026 14:40:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3572.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: jit_debugging_support, jit_dump_bitcode и jit_profiling_support</title>
    <link>https://sql-ex.ru/blogs/?/GUC-jit_debugging_support,-jit_dump_bitcode-jit_profiling_support.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-jit_debugging_support,-jit_dump_bitcode-jit_profiling_support.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3576</wfw:comment>

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

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

    <pubDate>Mon, 05 Oct 2026 20:39:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3576.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: jit_above_cost, jit_inline_above_cost и jit_optimize_above_cost</title>
    <link>https://sql-ex.ru/blogs/?/GUC-jit_above_cost,-jit_inline_above_cost-jit_optimize_above_cost.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-jit_above_cost,-jit_inline_above_cost-jit_optimize_above_cost.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3575</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-jit_above_cost-jit_inline_above_cost-and-jit_optimize_above_cost/&quot;&gt;All Your GUCs in a Row: jit_above_cost, jit_inline_above_cost, and jit_optimize_above_cost&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Третий блок семейства jit_* — тот, который решает, когда JIT срабатывает, и именно здесь живут неприятности. Все три появились вместе с подсистемой в PostgreSQL 11, у всех трёх контекст — пользовательский, и все три выражены в единицах стоимости планировщика — той безразмерной валюте, привязанной к seq_page_cost = 1.0. Когда планировщик завершает план, он сравнивает общую оценочную стоимость плана с этими порогами и запечатывает результат в сам план. Стоимость выше jit_above_cost (по умолчанию 100000): компилировать выражения и деформирование кортежей. Выше jit_inline_above_cost (по умолчанию 500000): также встраивать тела встроенных функций и операторов, извлекаемые из биткода LLVM, установленного вместе с сервером. Выше jit_optimize_above_cost (тоже 500000): также прогонять дорогостоящие проходы оптимизации LLVM по результату. Установка любого из них в -1 отключает этот уровень; jit_above_cost = -1 отключает всю затею, поскольку два других уровня надстраиваются над первым.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-jit_above_cost,-jit_inline_above_cost-jit_optimize_above_cost.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: jit_above_cost, jit_inline_above_cost и jit_optimize_above_cost&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 05 Oct 2026 17:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3575.html</guid>
    
</item>
<item>
    <title>Тригонометрические функции T-SQL в SQL Server</title>
    <link>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/T-SQL-SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3573</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3573</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-trigonometric-functions-in-sql-server&quot;&gt;Imran2629. T-SQL Trigonometric Functions in SQL Server&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Введение&lt;/h2&gt;&lt;br /&gt;
SQL Server содержит несколько встроенных математических функций, которые позволяют разработчикам выполнять сложные вычисления непосредственно в запросах.  Среди них имеются такие тригонометрические функции, как SIN(), COS() и TAN(), полезные в сценариях, которые включают инженерные расчеты, обработку географических данных, моделирование и аналитику.&lt;br /&gt;
&lt;br /&gt;
Хотя эти функции довольно просты в использовании, разработчики время от времени сталкиваются с неожиданными результатами при работе с углами и тригонометрическими вычислениями. Во многих случаях проблема связана не с самой функцией, а с тем, как SQL Server выполняет преобразование типов данных, и с точностью вычислений с плавающей запятой.  &lt;br /&gt;
&lt;br /&gt;
В этой статье рассматриваются несколько практических примеров, демонстрирующих поведение тригонометрических вычислений в SQL Server. Мы также исследуем несколько распространенных ошибок и покажем, как небольшие изменения, такие как выбор правильного типа данных или результаты округления, помогут избежать сбивающего с толку вывода. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/T-SQL-SQL-Server.html#extended&quot;&gt;Continue reading &quot;Тригонометрические функции T-SQL в SQL Server&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 04 Oct 2026 20:26:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3573.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=3574</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор &lt;a href=&quot;https://www.linkedin.com/in/ajin-cherian-8827b241/&quot;&gt;Ajin Cherian&lt;/a&gt;: &lt;a href=&quot;https://www.postgresql.fastware.com/blog/failover-slot-synchronization-in-postgresql&quot;&gt;Failover slot synchronization in PostgreSQL&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Высокая доступность критически важна для сред логической репликации, но до недавнего времени переключение при сбое всё ещё могло оставлять подписчиков отключёнными от слотов репликации, от которых они зависят. PostgreSQL 17 решил это, представив синхронизацию слотов при переключении при сбое, что позволяет держать слоты логической репликации готовыми на резервных серверах и снижает потребность в полной пересинхронизации подписчиков после повышения.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;PostgreSQL 19 развивает эту основу с помощью повторно-осведомлённой ручной синхронизации и более ясной видимости пропущенных попыток синхронизации слотов. В этой статье мы рассмотрим, как работают эти возможности и как вклад команды разработчиков PostgreSQL из Fujitsu помогает сделать переключение при сбое логической репликации более надёжным и простым в эксплуатации.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;em&gt;Узнайте, как PostgreSQL улучшает синхронизацию слотов при переключении при сбое для логической репликации, повышая надёжность и сокращая время простоя при переключениях.&lt;/em&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>Sun, 04 Oct 2026 20:25:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3574.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: jit_expressions и jit_tuple_deforming</title>
    <link>https://sql-ex.ru/blogs/?/GUC-jit_expressions-jit_tuple_deforming.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-jit_expressions-jit_tuple_deforming.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3571</wfw:comment>

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

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

    <pubDate>Sun, 04 Oct 2026 14:35:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3571.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: io_method и io_workers</title>
    <link>https://sql-ex.ru/blogs/?/GUC-io_method-io_workers.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-io_method-io_workers.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3570</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-io_method-and-io_workers/&quot;&gt;All Your GUCs in a Row: io_method and io_workers&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Параметры io_*, которые мы рассматривали до сих пор, описывают сами запросы ввода-вывода: насколько велик каждый из них, сколько процесс может держать в полёте. Эти два решают, кто фактически их выполняет. Я писал об архитектуре и о том, что PostgreSQL 19 с ней делает, в статье &lt;em&gt;AIO Grows Up&lt;/em&gt;; здесь — взгляд на уровне параметров, и он включает исправление того, что я там сказал.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-io_method-io_workers.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: io_method и io_workers&quot;&lt;/a&gt;
    </content:encoded>

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

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3569</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;Рейтинговая задача 254 от &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=66802&#039;&gt;Baser&lt;/a&gt; перенесена на обучающий этап под номером 168 (сложность 3 балла).&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=53&quot;&gt;53 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;12&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=303&quot;&gt;303 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;6&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;8&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=791796&quot; target=&quot;_blank&quot;&gt;gennadi_s&lt;/a&gt;  &amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=178836&quot; target=&quot;_blank&quot;&gt;vasilyvanc&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-09-26-2026-10-02.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-09-26 - 2026-10-02&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 02 Oct 2026 19:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3569.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: io_max_concurrency</title>
    <link>https://sql-ex.ru/blogs/?/GUC-io_max_concurrency.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-io_max_concurrency.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3568</wfw:comment>

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

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

    <pubDate>Fri, 02 Oct 2026 14:35:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3568.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=3567</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Umair Shahid: &lt;a href=&quot;https://stormatics.tech/blogs/postgresql-lockup-vs-stale-connection-how-to-tell-them-apart&quot;&gt;PostgreSQL Lockup vs Stale Connection: How to Tell Them Apart&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;«База данных зависла». Мы слышали ту или иную версию этого предложения не раз за прошедшую неделю, от одной и той же команды, по поводу того, что выглядело как одна и та же проблема. Это была не одна и та же проблема. Однажды Postgres действительно перестал отвечать. Все остальные разы Postgres был в порядке, а соединение, находившееся в пуле приложения, тихо умерло где-то между приложением и базой данных.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Обе неисправности приводят к одному и тому же вызову в 2 часа ночи: приложение не может связаться с базой данных. Только одна из них означает, что база данных действительно в беде. Путаница между ними стоит вам самого дорогого ресурса в инциденте — первых десяти минут, когда вы ещё решаете, с каким типом проблемы имеете дело.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Истинное зависание PostgreSQL означает, что сам сервер перестал отвечать на уровне операционной системы. Вы не можете открыть новую сессию к нему, ни с какого клиента, ниоткуда. Проблема устаревшего соединения означает, что Postgres здоров и доступен. Проблема в конкретном соединении, уже находящемся в пуле вашего приложения, которое указывает на сокет, умерший где-то по пути, обычно без того, чтобы какая-либо из сторон получила чистый сигнал о том, что это произошло.&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, 01 Oct 2026 09:26:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3567.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: io_combine_limit и io_max_combine_limit</title>
    <link>https://sql-ex.ru/blogs/?/GUC-io_combine_limit-io_max_combine_limit.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-io_combine_limit-io_max_combine_limit.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3566</wfw:comment>

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

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

    <pubDate>Wed, 30 Sep 2026 18:01:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3566.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: IntervalStyle</title>
    <link>https://sql-ex.ru/blogs/?/GUC-IntervalStyle.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-IntervalStyle.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3565</wfw:comment>

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

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

    <pubDate>Tue, 29 Sep 2026 18:01:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3565.html</guid>
    
</item>
<item>
    <title>Транзакции в PostgreSQL: COMMIT, ROLLBACK и SAVEPOINT</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-COMMIT,-ROLLBACK-SAVEPOINT.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-COMMIT,-ROLLBACK-SAVEPOINT.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3564</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://tomasz-gintowt.medium.com/postgresql-transactions-commit-rollback-and-savepoint-da33115c0614&quot;&gt;PostgreSQL Transactions: COMMIT, ROLLBACK and SAVEPOINT&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Когда вы работаете с базой данных, то часто выполняете несколько запросов, которые связаны друг с другом. Например, перемещение денег с одного счета на другой.&lt;br /&gt;
&lt;br /&gt;
Но что если в середине произойдет сбой?&lt;br /&gt;
&lt;br /&gt;
Вот почему PostgreSQL использует транзакции - для гарантии, что ваши данные останутся корректными.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-COMMIT,-ROLLBACK-SAVEPOINT.html#extended&quot;&gt;Continue reading &quot;Транзакции в PostgreSQL: COMMIT, ROLLBACK и SAVEPOINT&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 29 Sep 2026 16:50:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3564.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: integer_datetimes</title>
    <link>https://sql-ex.ru/blogs/?/GUC-integer_datetimes.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-integer_datetimes.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3563</wfw:comment>

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

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

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

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-in_hot_standby/&quot;&gt;All Your GUCs in a Row: in_hot_standby&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;in_hot_standby — это лампочка, а не переключатель. Он сообщает, является ли сервер, к которому вы подключены, в данный момент горячим резервом: включён, когда ваша сессия работает на реплике, которая воспроизводит WAL и принимает запросы только для чтения (состояние, которое включает hot_standby), выключен на первичном сервере. Это логический параметр, он появился в PostgreSQL 14, и его контекст — ни один из обычных четырёх, потому что никто не может его изменить:&lt;/p&gt;&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;&lt;code&gt;postgres=# SET in_hot_standby = off;&lt;br /&gt;
ERROR:  parameter &quot;in_hot_standby&quot; cannot be changed&lt;br /&gt;
postgres=# ALTER SYSTEM SET in_hot_standby = off;&lt;br /&gt;
ERROR:  parameter &quot;in_hot_standby&quot; cannot be changed&lt;/code&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-in_hot_standby.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: in_hot_standby&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 27 Sep 2026 11:15:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3562.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: ignore_system_indexes</title>
    <link>https://sql-ex.ru/blogs/?/GUC-ignore_system_indexes.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-ignore_system_indexes.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3561</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-ignore_system_indexes/&quot;&gt;All Your GUCs in a Row: ignore_system_indexes&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;ignore_system_indexes завершает череду из трёх последовательных параметров с именем ignore_-что-то и с удобным отрывом является самым вежливым в этом семействе. ignore_checksum_failure и ignore_invalid_pages говорят PostgreSQL продолжать, несмотря на доказательства повреждения; этот же просто говорит ему перестать доверять набору путей доступа. Это логический параметр, по умолчанию выключен, и он живёт в редком контексте backend: его можно установить только до того, как сессия существует, либо в postgresql.conf (влияя только на новые сессии), либо во время подключения, что удобнее всего сделать как PGOPTIONS=&quot;-P&quot;, эквивалентный серверный переключатель. Установите его после подключения — и получите ошибку. Во всех поддерживаемых версиях это один из ровно двух параметров с таким контекстом (другой — post_auth_delay), он классифицирован как параметр разработчика и не появляется в образце файла конфигурации. Всё это — способ сервера сказать: вы не должны были это находить.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-ignore_system_indexes.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: ignore_system_indexes&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 25 Sep 2026 23:18:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3561.html</guid>
    
</item>
<item>
    <title>Новости за 2026-09-19 - 2026-09-25</title>
    <link>https://sql-ex.ru/blogs/?/2026-09-19-2026-09-25.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-09-19-2026-09-25.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3560</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3560</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=53&quot;&gt;53 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;7&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=55&quot;&gt;55 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;5&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Претенденты на попадание в TOP 100&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09; Участник (решенные задачи, время в днях)&lt;/b&gt;&lt;br /&gt; 140&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=651026&#039;&gt;Rujan&lt;/a&gt; (143, 453.871)&lt;br /&gt; 316&amp;#09;&amp;#09;saah (109, 48.785)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-09-19-2026-09-25.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-09-19 - 2026-09-25&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 25 Sep 2026 18:58:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3560.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: ignore_invalid_pages</title>
    <link>https://sql-ex.ru/blogs/?/GUC-ignore_invalid_pages.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-ignore_invalid_pages.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3559</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-ignore_invalid_pages/&quot;&gt;All Your GUCs in a Row: ignore_invalid_pages&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Никто не находит ignore_invalid_pages, читая документацию от корки до корки. Вы находите его, вставив &lt;em&gt;PANIC: WAL contains references to invalid pages&lt;/em&gt; в поисковую систему, обычно в час, когда вы предпочли бы спать. Это параметр разработчика, отсутствующий в postgresql.conf.sample, присутствующий начиная с PostgreSQL 13. По умолчанию он выключен, а контекст — postmaster, что на этот раз ничего не стоит: сервер, который вам нужно было бы перезапустить, уже не работает.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-ignore_invalid_pages.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: ignore_invalid_pages&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 24 Sep 2026 15:28:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3559.html</guid>
    
</item>
<item>
    <title>Первая нормальная форма (1NF): нарушение &quot;ненарушаемого правила&quot; в проектировании базы данных</title>
    <link>https://sql-ex.ru/blogs/?/1NF.html</link>
            <category>Articles</category>
    
    <comments>https://sql-ex.ru/blogs/?/1NF.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3558</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3558</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/first-normal-form-1nf-breaking-the-unbreakable-rule-in-database-design/&quot;&gt;Lee Asher. First Normal Form (1NF): Breaking the ‘unbreakable rule’ in database design&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/databases/theory-and-design/first-normal-form-gets-no-respect/&quot;&gt;Первая нормальная форма (1NF)&lt;/a&gt; является самым известным правилом в &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/database-normalization-basics/&quot;&gt;нормализации базы данных&lt;/a&gt;. Оно требует, чтобы таблицы не содержали повторяющихся групп и каждый столбец содержал атомарные значения. Но в реальных системах баз данных разработчики часто намеренно нарушают это правило при моделировании сложных данных. Давайте выясним почему.&lt;br /&gt;
&lt;br /&gt;
Правильная нормализация данных является критической проблемой при проектировании базы данных, контролируемой набором правил &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/blog/data-modeling-basics/&quot;&gt;моделирования данных&lt;/a&gt;, известных как &quot;нормальные формы&quot;. Хотя даже лучшие разработчики затрудняются в объяснении различия между более высокими нормальными формами, одно правило, которое мы все знаем, это Первая Нормальная Форма. Обычно ее называют 1НФ, а правило часто выражают просто тремя словами: нет &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/simple-talk/databases/sql-server/learn/facts-and-fallacies-about-first-normal-form/#the-ambiguity-of-repeating-groups:~:text=The%20ambiguity%20of-,Repeating%20Groups,-Some%20of%20the&quot;&gt;повторяющихся групп&lt;/a&gt;.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/1NF.html#extended&quot;&gt;Continue reading &quot;Первая нормальная форма (1NF): нарушение &amp;quot;ненарушаемого правила&amp;quot; в проектировании базы данных&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

    <pubDate>Wed, 23 Sep 2026 18:21:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3557.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: idle_session_timeout</title>
    <link>https://sql-ex.ru/blogs/?/GUC-idle_session_timeout.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-idle_session_timeout.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3556</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://postgr.es/p/9rn&quot;&gt;All Your GUCs in a Row: idle_session_timeout&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;idle_session_timeout — это уборка, а не защита. Его «собрат», idle_in_transaction_session_timeout, защищает базу данных от реального вреда: простаивающая транзакция удерживает блокировки и фиксирует горизонт xmin, и vacuum от этого страдает. Сессия, простаивающая &lt;em&gt;вне&lt;/em&gt; транзакции, ничего из этого не делает. Она занимает слот соединения, фоновый процесс и немного памяти. Вот и весь счёт, и этот параметр существует, чтобы его выставить. В документации сказано то же самое, отмечая, что простаивающая сессия без транзакции не создаёт больших затрат, поэтому необходимости в этом таймауте меньше, чем в его «собрате».&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-idle_session_timeout.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: idle_session_timeout&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 22 Sep 2026 14:33:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3556.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: idle_replication_slot_timeout</title>
    <link>https://sql-ex.ru/blogs/?/GUC-idle_replication_slot_timeout.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-idle_replication_slot_timeout.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3555</wfw:comment>

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

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

    <pubDate>Mon, 21 Sep 2026 17:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3555.html</guid>
    
</item>
<item>
    <title>За пределами VARBINARY: как сохранить PDF в SQL Server, используя FILESTREAM и FileTable</title>
    <link>https://sql-ex.ru/blogs/?/VARBINARY-PDF-SQL-Server,-FILESTREAM-FileTable.html</link>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/VARBINARY-PDF-SQL-Server,-FILESTREAM-FileTable.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3554</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3554</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/beyond-varbinary-how-to-store-pdfs-in-sql-server-using-filestream-and-filetable&quot;&gt;gbargsley. Beyond VARBINARY: How to Store PDFs in SQL Server Using FILESTREAM and FileTable&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Сегодня мы поговорим о теме, которая возникает чаще, чем вы думаете: хранение PDF-документов внутри SQL Server.&lt;br /&gt;
&lt;br /&gt;
Будут ли это счета, отчеты, отсканированные формы или контракты, приложениям часто нужно где-то хранить файлы. Вы могли бы хранить их в общей сетевой папке и надеяться, что ничто не повредит ссылку, или вы можете полностью перенести их в SQL Server, где они будут находиться вместе с вашими данными. В этой статье я собираюсь рассказать вам о настройке &lt;strong&gt;FILESTREAM и FileTable&lt;/strong&gt; в SQL Server, средствах, которые дают вам лучшее из двух миров: транзакционная целостность от SQL Server и производительность файловой системы от NTFS. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/VARBINARY-PDF-SQL-Server,-FILESTREAM-FileTable.html#extended&quot;&gt;Continue reading &quot;За пределами VARBINARY: как сохранить PDF в SQL Server, используя FILESTREAM и FileTable&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 21 Sep 2026 11:32:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3554.html</guid>
    
</item>
<item>
    <title>Новости за 2026-09-12 - 2026-09-18</title>
    <link>https://sql-ex.ru/blogs/?/2026-09-12-2026-09-18.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-09-12-2026-09-18.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3553</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3553</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;br /&gt;
53 -&gt; 11 -&gt; 3 -&gt; обучающий (167).&lt;br /&gt;
Второй этап начинается теперь с задачи №3.&lt;br /&gt;
Под номером 53 опубликована новая задача от &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; (сложность 3 балла).&lt;br /&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/Lforum.php?F=3&amp;N=54&quot;&gt;54 (Learn)&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=58&quot;&gt;58 (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=0&amp;N=0&quot;&gt;Guest&#039;s book&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;8&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; Nividimka&amp;#09;2&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;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=791796&quot; target=&quot;_blank&quot;&gt;gennadi_s&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-09-12-2026-09-18.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-09-12 - 2026-09-18&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 18 Sep 2026 19:22:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3553.html</guid>
    
</item>
<item>
    <title>Граница вашей транзакции принадлежит программе, а не имени файла</title>
    <link>https://sql-ex.ru/blogs/?/,.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3552</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Alexey Evlampiev: &lt;a href=&quot;https://vvka-141.github.io/pgmi/articles/transaction-boundary-in-the-program/&quot;&gt;Your Transaction Boundary Belongs in the Program, Not the Filename&lt;/a&gt;&lt;/p&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/?/,.html#extended&quot;&gt;Continue reading &quot;Граница вашей транзакции принадлежит программе, а не имени файла&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 18 Sep 2026 14:50:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3552.html</guid>
    
</item>
<item>
    <title>ALTER TABLE выполняется быстро. Очередь за ним — нет</title>
    <link>https://sql-ex.ru/blogs/?/ALTER-TABLE-..html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/ALTER-TABLE-..html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3548</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Alexey Evlampiev: &lt;a href=&quot;https://vvka-141.github.io/pgmi/articles/lock-queue-fast-is-not-safe/&quot;&gt;Your ALTER TABLE Is Fast. The Queue Behind It Is Not&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Изменение схемы, которое выполняется шесть миллисекунд, всё ещё может остановить каждое чтение из таблицы на шестнадцать секунд — ущерб наносит ожидание, а не работа.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Вот один и тот же оператор, выполненный дважды для одной и той же таблицы — PostgreSQL 16.14 в локальном контейнере, таблица orders на 100 000 строк, конкурирующая сессия удерживается открытой через pg_sleep. Это иллюстративные числа с одной машины, а не бенчмарк; важен сам ratio, и вы можете воспроизвести его примерно за минуту.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;&lt;code&gt;-- Без конкуренции:&lt;br /&gt;
ALTER TABLE orders ADD COLUMN note text;&lt;br /&gt;
Time: 5.786 ms&lt;br /&gt;
&lt;br /&gt;
-- С одним обычным долго выполняющимся SELECT, открытым на таблице:&lt;br /&gt;
ALTER TABLE orders ADD COLUMN note text;&lt;br /&gt;
Time: 18065.050 ms (00:18.065)&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;Именно это стоит усвоить, и это верно независимо от того, какой инструмент миграции вы используете. Время выполнения без конкуренции говорит вам, сколько стоит оператор, когда ничто не стоит у него на пути; оно не предсказывает, во что он обойдётся вашим пользователям. Режим блокировки, время, проведённое в ожидании, и длина окружающей транзакции дополняют эту картину — и только первое число появляется в таймингах ваших миграций.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Безопасное развёртывание с точки зрения блокировок состоит из двух половин. Одна — это проектирование операторов: выбор форм SQL, которые берут более слабые блокировки или откладывают свою дорогостоящую работу до момента, когда блокировка слаба. Другая — это структура программы: выбор того, где проходят границы ваших транзакций, потому что блокировка живёт до конца своей транзакции, а не до конца своего оператора. Эта статья — о первой половине. Она чисто про PostgreSQL и применима независимо от того, с помощью чего вы развёртываете.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/ALTER-TABLE-..html#extended&quot;&gt;Continue reading &quot;ALTER TABLE выполняется быстро. Очередь за ним — нет&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 15 Sep 2026 16:12:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3548.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: idle_in_transaction_session_timeout</title>
    <link>https://sql-ex.ru/blogs/?/GUC-idle_in_transaction_session_timeout.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-idle_in_transaction_session_timeout.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3551</wfw:comment>

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

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

    <pubDate>Fri, 18 Sep 2026 11:33:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3551.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: ident_file</title>
    <link>https://sql-ex.ru/blogs/?/GUC-ident_file.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-ident_file.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3550</wfw:comment>

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

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

    <pubDate>Thu, 17 Sep 2026 17:05:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3550.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: hot_standby_feedback</title>
    <link>https://sql-ex.ru/blogs/?/GUC-hot_standby_feedback.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-hot_standby_feedback.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3549</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-hot_standby_feedback/&quot;&gt;All Your GUCs in a Row: hot_standby_feedback&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;hot_standby_feedback не устраняет проблему. Он перемещает её — с резервного сервера на первичный, и вопрос о том, является ли это хорошим обменом, — это и есть весь вопрос.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Проблема заключается в конфликтах восстановления, которые отменяют долго выполняющиеся запросы на резервном сервере. Резервный сервер воспроизводит изменения первичного, одновременно отвечая на читающие запросы, и когда первичный очищает vacuum мёртвые версии строк, воспроизведение этой очистки на резервном сервере сталкивается с любым запросом, который всё ещё полагается на эти версии. Резервный сервер разрешает столкновение, убивая запрос, и пользователь видит ERROR: canceling statement due to conflict with recovery. hot_standby_feedback останавливает это, прося первичный сервер вообще не удалять эти строки. Стоимость ложится на первичный сервер в виде раздувания, потому что строки, которые он иначе освободил бы, теперь удерживаются запросом, выполняющимся на другой машине.&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/?/GUC-hot_standby_feedback.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: hot_standby_feedback&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

    <pubDate>Tue, 15 Sep 2026 11:24:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3547.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: hba_file</title>
    <link>https://sql-ex.ru/blogs/?/GUC-hba_file.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-hba_file.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3546</wfw:comment>

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

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

    <pubDate>Mon, 14 Sep 2026 16:07:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3546.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=3545</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3545</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/postgresql/learning-postgresql-with-grant-user-defined-types/&quot;&gt;Grant Fritchey. How User-Defined Types work in PostgreSQL: a complete guide&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Узнайте, как работать с определяемыми пользователем типами в PostgreSQL, в том числе как эффективно их определять, использовать и управлять ими. В этом руководстве объясняется, как пользовательские типы могут улучшить проектирование схемы, усилить целостность данных и поддерживать более ясные и более удобные в обслуживании структуры баз данных в реальных приложениях.&lt;br /&gt;
&lt;br /&gt;
Я уверен, что не одинок, когда говорю: иногда я отвлекаюсь. В данном конкретном случае я не собирался изучать &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.postgresql.org/docs/current/xtypes.html&quot;&gt;пользовательские типы (UDT) в PostgreSQL&lt;/a&gt; — я просто хотел протестировать поведение, связанное с созданием UDT. Но как только я начал читать, меня зацепило. Я имею в виду четыре разных UDT с разным поведением. Это очень круто. Давайте займемся этим.&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>Mon, 14 Sep 2026 09:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3545.html</guid>
    
</item>
<item>
    <title>Почему SUM после JOIN завышает итог — и почему DISTINCT не всегда помогает</title>
    <link>https://sql-ex.ru/blogs/?/SUM-JOIN-DISTINCT.html</link>
            <category>Articles</category>
    
    <comments>https://sql-ex.ru/blogs/?/SUM-JOIN-DISTINCT.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3543</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Автор Глеб Зайцев&lt;/p&gt;&lt;br /&gt;
В отчёте два оплаченных заказа на 1 600 рублей, а запрос возвращает 2 600. Синтаксис правильный, ошибок выполнения нет. Причина может быть в том, что после соединения таблиц одна и та же сумма заказа встречается несколько раз.&lt;br /&gt;
&lt;br /&gt;
Разберём этот случай на маленькой базе SQLite и проверим исправление не только на удачном примере, но и на пограничных данных. Для запуска полного скрипта в конце статьи нужны Python 3 и встроенный модуль `sqlite3`. Внешняя база, аккаунт и дополнительные пакеты не требуются.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SUM-JOIN-DISTINCT.html#extended&quot;&gt;Continue reading &quot;Почему SUM после JOIN завышает итог — и почему DISTINCT не всегда помогает&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 11 Sep 2026 16:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3543.html</guid>
    
</item>
<item>
    <title>Новости за 2026-09-05 - 2026-09-11</title>
    <link>https://sql-ex.ru/blogs/?/2026-09-05-2026-09-11.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-09-05-2026-09-11.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3544</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3544</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;Новая задача от Pegoopik (1 балл) выставлена для обсуждения под номером 303.&lt;/p&gt; &lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Популярные темы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Топик&amp;#09;&amp;#09;Сообщений&amp;#09;Просмотров&lt;/b&gt;&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/Lforum.php?F=3&amp;N=58&quot;&gt;58 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;6&amp;#09;&amp;#09;6&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/forum/forum.php?F=1&amp;N=207&quot;&gt;207 (SELECT)&lt;/a&gt;&amp;#09;&amp;#09;2&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=53&quot;&gt;53 (Learn)&lt;/a&gt;&amp;#09;&amp;#09;2&amp;#09;&amp;#09;6&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Авторы недели на форуме&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Автор&amp;#09;&amp;#09;Сообщений&lt;/b&gt;&lt;br /&gt; Steamboat&amp;#09;3&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=556296&quot; target=&quot;_blank&quot;&gt;Murderface_&lt;/a&gt;  &amp;#09;3&lt;br /&gt; Demon_gr&amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=69553&quot; target=&quot;_blank&quot;&gt;pegoopik&lt;/a&gt;  &amp;#09;2&lt;br /&gt; &lt;a class=&quot;let&quot; href=&quot;https://sql-ex.ru/users_page.php?uid=128116&quot; target=&quot;_blank&quot;&gt;selber&lt;/a&gt;  &amp;#09;2&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-09-05-2026-09-11.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-09-05 - 2026-09-11&quot;&lt;/a&gt;
    </content:encoded>

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

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

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

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

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

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

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

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-gin_fuzzy_search_limit/&quot;&gt;All Your GUCs in a Row: gin_fuzzy_search_limit&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Это название вводит в заблуждение сразу дважды. Параметр никак не связан с нечётким сопоставлением, то есть с поиском по триграммному сходству или близости написания, ради которого обычно обращаются к &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;pg_trgm&lt;/span&gt;&lt;/code&gt;. И это на самом деле не совсем ограничение поиска. Неопределённость заключается в размере набора результатов: этот параметр фактически велит PostgreSQL вернуть меньше строк, чем соответствует вашему запросу, причём выбранных случайным образом, и ничего вам об этом не сообщить.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Из-за этого параметр почти уникален среди GUC. Многие параметры позволяют обменивать один ресурс на другой, а некоторые жертвуют надёжностью ради скорости. Этот же жертвует корректностью ради скорости.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Целочисленный параметр, по умолчанию 0, что означает отсутствие ограничения; контекст &lt;code&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;user&lt;/span&gt;&lt;/code&gt;, допустимое значение — до 2147483647.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-gin_fuzzy_search_limit.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: gin_fuzzy_search_limit&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 09 Sep 2026 20:02:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3540.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: семейство geqo</title>
    <link>https://sql-ex.ru/blogs/?/GUC-geqo.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-geqo.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3539</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Christophe Pettus: &lt;a href=&quot;https://thebuild.com/blog/all-your-gucs-in-a-row-the-geqo-family/&quot;&gt;All Your GUCs in a Row: The geqo Family&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Семь параметров, одна функция и разумная цель — никогда не использовать ни один из них.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;geqo, geqo_threshold, geqo_effort, geqo_pool_size, geqo_generations, geqo_selection_bias и geqo_seed — все они настраивают Генетический оптимизатор запросов (Genetic Query Optimizer), альтернативный поиск порядка соединений, к которому PostgreSQL прибегает, когда в запросе слишком много отношений для полного перебора обычным планировщиком. Все семь параметров имеют контекст user, поэтому любой из них можно установить для сессии, роли или базы данных.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Причина рассматривать их как группу в том, что шесть из семи имеют значение только в том случае, если вы уже «проиграли». Тот, который имеет значение, — это geqo_threshold, и он определяет, вступают ли в игру остальные шесть вообще.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/GUC-geqo.html#extended&quot;&gt;Continue reading &quot;Всё о GUC по порядку: семейство geqo&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 08 Sep 2026 11:49:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3539.html</guid>
    
</item>
<item>
    <title>Как работает многостолбцовая статистика</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3538</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.brentozar.com/archive/2026/04/how-multi-column-statistics-work/&quot;&gt;Brent Ozar. How Multi-Column Statistics Work&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Краткий ответ: в реальных ситуациях работает только первый столбец. Когда SQL Server необходимы данные о втором столбце, он строит вместо этого свою собственную статистику по этому столбцу (предполагая, что ее не существует) и использует эти две статистики совместно - но на самом деле они не связаны.&lt;br /&gt;
&lt;br /&gt;
Чтобы дать более подробный ответ, давайте возьмем большую версию &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/&quot;&gt;базы данных Stack Overflow&lt;/a&gt;, создадим двухстолбцовый индекс на таблице Users, а затем посмотрим на полученную статистику:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;DropIndexes;&lt;br /&gt;
GO&lt;br /&gt;
CREATE INDEX Location_Reputation&lt;br /&gt;
    ON dbo.Users(Location, Reputation);&lt;br /&gt;
GO&lt;br /&gt;
DBCC SHOW_STATISTICS(&#039;dbo.Users&#039;, &#039;Location_Reputation&#039;);&lt;br /&gt;
GO&lt;/pre&gt;&lt;br /&gt;
Вывод DBCC SHOW_STATISTICS показывает, что мы получили 22 миллиона строк в этой таблице. Итак, что гистограмма статистики говорит нам о связи между  locations и reputations?&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/09/multi_column_statistics_1.jpg&quot; /&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/unknown.html#extended&quot;&gt;Continue reading &quot;Как работает многостолбцовая статистика&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 08 Sep 2026 08:48:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3538.html</guid>
    
</item>
<item>
    <title>MVCC в PostgreSQL — это плохо, как и у других</title>
    <link>https://sql-ex.ru/blogs/?/MVCC-PostgreSQL-,.html</link>
    
    <comments>https://sql-ex.ru/blogs/?/MVCC-PostgreSQL-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3537</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Radim Marek: &lt;a href=&quot;https://boringsql.com/posts/mvcc-bad-bad/&quot;&gt;PostgreSQL&#039;s MVCC is bad. So is everyone else&#039;s&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Первое, что вы, вероятно, узнаете о Postgres, если следите за людьми, которым он не нравится, — это то, что MVCC — это плохо. Ошибка дизайна сорокалетней давности. Её признаки повсюду: раздутые таблицы, удваивающиеся в размере, 32-битный лимит счётчика транзакций, бесконечная борьба с VACUUM, кошмары с мёртвыми кортежами. Это подтверждается и авторитетами: Uber измерил амплификацию (здесь - усиление) записи в 2016 году и ушёл на MySQL из-за этого; группа баз данных Энди Павло назвала MVCC частью PostgreSQL, которую они ненавидят больше всего. Это реально. Postgres настолько плох, насколько это возможно.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Хотя всё это не преувеличено, это сводится к реальному дизайнерскому выбору. Раздувание, амплифицированные записи, постоянный уход за VACUUM — все эти обвинения связаны с решением, а не с дефектом, и мы воспроизводим каждое из них ниже на живом экземпляре PostgreSQL 19 beta2, чтобы вы могли увидеть ущерб своими глазами. Но вердикт, который распространяется из сообщества в сообщество, всегда останавливается на один вопрос раньше: по сравнению с чем? Что вместо этого делают все другие движки, и во что это обходится?&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Потому что MVCC не является опциональным. Любая база данных, которая хочет, чтобы читатели не блокировали писателей, должна где-то хранить несколько версий строк, и каждый движок, который это делает, отвечает на одни и те же четыре вопроса:&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;/li&gt;&lt;br /&gt;
    &lt;li&gt;Кто выполняет очистку и когда? Фоновый процесс позже или сама транзакция?&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Ответы PostgreSQL: в таблице, от старых к новым, физическое расположение, фоновый процесс позже. Каждая стоимость, которую перечисляют критики, следует из этих четырёх ответов. И каждая альтернатива — это другой набор ответов, где счёт выставляется кому-то другому: писателю, читателю истории, tempdb, кэшу, компактору. Одна из них потратила годы инженерной работы, чтобы купить одно свойство, которое дизайн PostgreSQL имел бесплатно с первого дня. Все они терпят неудачу по-разному, когда транзакция остаётся открытой во время обеда...&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/MVCC-PostgreSQL-,.html#extended&quot;&gt;Continue reading &quot;MVCC в PostgreSQL — это плохо, как и у других&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 07 Sep 2026 15:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3537.html</guid>
    
</item>
<item>
    <title>Всё о GUC по порядку: full_page_writes</title>
    <link>https://sql-ex.ru/blogs/?/GUC-full_page_writes.html</link>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/GUC-full_page_writes.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3536</wfw:comment>

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

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

    <pubDate>Mon, 07 Sep 2026 11:36:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3536.html</guid>
    
</item>
<item>
    <title>CONVERT_IMPLICIT: Почему SQL Server игнорирует ваш индекс</title>
    <link>https://sql-ex.ru/blogs/?/CONVERT_IMPLICIT-SQL-Server.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/CONVERT_IMPLICIT-SQL-Server.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3535</wfw:comment>

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

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.sqlfingers.com/2026/04/convertimplicit-why-sql-server-is.html&quot;&gt;rebecca@sqlfingers. CONVERT_IMPLICIT: Why SQL Server Is Ignoring Your Index&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Вы построили индекс и протестировали запрос в SSMS.  Index seek. Идеально. Вы пошли домой.&lt;br /&gt;
&lt;br /&gt;
Между тем ваше приложение сканировало каждую строку в этой таблице, начиная со дня его запуска.&lt;br /&gt;
&lt;br /&gt;
Это CONVERT_IMPLICIT - один из наиболее скрытых убийц производительности в SQL Server. Никаких ошибок. Никаких предупреждений в журнале приложения. Запрос возвращает правильные результаты, а ваш индекс отлично структурирован, но оптимизатор его не использует, поскольку тип данных, приходящих из приложения, не соответствует типу данных столбца - и SQL Server должен преобразовывать каждую строку, прежде чем он сможет выполнить сравнение.&lt;br /&gt;
&lt;br /&gt;
Здесь рассказывается, как найти, понять и доказать разработчику, который продолжает говорить вам, что &quot;все прекрасно работает на моей машине&quot;. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/CONVERT_IMPLICIT-SQL-Server.html#extended&quot;&gt;Continue reading &quot;CONVERT_IMPLICIT: Почему SQL Server игнорирует ваш индекс&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 06 Sep 2026 08:44:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3535.html</guid>
    
</item>
<item>
    <title>Новости за 2026-08-29 - 2026-09-04</title>
    <link>https://sql-ex.ru/blogs/?/2026-08-29-2026-09-04.html</link>
            <category>Site news</category>
    
    <comments>https://sql-ex.ru/blogs/?/2026-08-29-2026-09-04.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3534</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3534</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;w_sel&amp;#09;all_sel&amp;#09;select&amp;#09;dml&amp;#09;Всего&amp;#09;Рейтинг&lt;/b&gt;&lt;br /&gt; Цыбин А.В.  (magicdragon)     &amp;#09;4&amp;#09;38&amp;#09;11&amp;#09;3&amp;#09;14&amp;#09;1524&lt;br /&gt; Шибаев  (saah)                &amp;#09;4&amp;#09;90&amp;#09;9&amp;#09;0&amp;#09;9&amp;#09;537&lt;br /&gt; Скоков Б.С.  (leks$$)         &amp;#09;4&amp;#09;48&amp;#09;8&amp;#09;0&amp;#09;8&amp;#09;1097&lt;br /&gt; &lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=233431&#039;&gt;Виноградова С.М.  (Tigra1)    &lt;/a&gt;&amp;#09;2&amp;#09;154&amp;#09;7&amp;#09;0&amp;#09;7&amp;#09;148&lt;br /&gt; Powkh N.M.  (I_AiLL_I)        &amp;#09;4&amp;#09;4&amp;#09;5&amp;#09;21&amp;#09;26&amp;#09;4141&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;font color=&quot;#ff0080&quot;&gt;&amp;sect; &lt;/font&gt;Претенденты на попадание в TOP 100&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;Рейтинг&amp;#09; Участник (решенные задачи, время в днях)&lt;/b&gt;&lt;br /&gt; 148&amp;#09;&amp;#09;&lt;a class=&#039;let&#039; href=&#039;/users_page.php?uid=233431&#039;&gt;Tigra1&lt;/a&gt; (154, 31.674)&lt;br /&gt;&lt;/pre&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/2026-08-29-2026-09-04.html#extended&quot;&gt;Continue reading &quot;Новости за 2026-08-29 - 2026-09-04&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 04 Sep 2026 19:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3534.html</guid>
    
</item>

</channel>
</rss>
