gram news
SQL-Ex channel avatar

SQL-Ex

@sqlexercises

Канал посвящён событиям на сайте "Упражнения SQL" The channel is dedicated to the events on the site "SQL Exercises" www.sql-ex.ru

ProjectsENProgramming

1,987subscribers

Open the Channel

Latest posts

  • SQL-Ex

    22 Sept, 12:43edited

    Всё о GUC по порядку: idle_session_timeout https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_idle_session_timeout.htmlАвтор Christophe Pettus: All Your GUCs in a Row: idle_session_timeout (https://postgr.es/p/9rn)idle_session_timeout — это уборка, а не защита. Его «собрат», idle_in_transaction_session_timeout, защищает базу данных от реального вреда: простаивающая транзакция удерживает блокировки и фиксирует горизонт xmin, и vacuum от этого страдает. Сессия, простаивающая вне транзакции, ничего из этого не делает. Она занимает слот соединения, фоновый процесс и немного памяти. Вот и весь счёт, и этот параметр существует, чтобы его выставить. В документации сказано то же самое, отмечая, что простаивающая сессия без транзакции не создаёт больших затрат, поэтому необходимости в этом таймауте меньше, чем в его «собрате».Продолжить чтение "Всё о GUC по порядку: idle_session_timeout"
  • SQL-Ex

    21 Sept, 15:45edited

    Всё о GUC по порядку: idle_replication_slot_timeout https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_idle_replication_slot_timeout.htmlАвтор Christophe Pettus: All Your GUCs in a Row: idle_replication_slot_timeout (https://thebuild.com/blog/all-your-gucs-in-a-row-idle_replication_slot_timeout/)idle_replication_slot_timeout делит алфавитное соседство с idle_in_transaction_session_timeout и idle_session_timeout, но решает противоположную проблему. Те отключают клиентов, которые остаются слишком долго. Этот же, новый в PostgreSQL 18, имеет дело с клиентами, которые вообще перестают появляться: он ставит срок годности на слоты репликации.Продолжить чтение "Всё о GUC по порядку: idle_replication_slot_timeout" (https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_idle_replication_slot_timeout.html#extended)
  • SQL-Ex

    21 Sept, 11:46edited

    За пределами VARBINARY: как сохранить PDF в SQL Server, используя FILESTREAM и FileTable https://sql-ex.ru/blogs/?/Za_predelami_VARBINARY_kak_sohranit_PDF_v_SQL_Server,_ispolzuJa_FILESTREAM_i_FileTable.htmlПересказ статьи gbargsley. Beyond VARBINARY: How to Store PDFs in SQL Server Using FILESTREAM and FileTable (https://www.sqlservercentral.com/blogs/beyond-varbinary-how-to-store-pdfs-in-sql-server-using-filestream-and-filetable)Сегодня мы поговорим о теме, которая возникает чаще, чем вы думаете: хранение PDF-документов внутри SQL Server.Будут ли это счета, отчеты, отсканированные формы или контракты, приложениям часто нужно где-то хранить файлы. Вы могли бы хранить их в общей сетевой папке и надеяться, что ничто не повредит ссылку, или вы можете полностью перенести их в SQL Server, где они будут находиться вместе с вашими данными. В этой статье я собираюсь рассказать вам о
  • SQL-Ex

    18 Sept, 17:35edited

    Новости за 2026-09-12 - 2026-09-18 https://sql-ex.ru/blogs/?/Novosti_za_2026-09-12_-_2026-09-18.html§ Выполнена следующая цепочка переносов:53 -> 11 -> 3 -> обучающий (167). Второй этап начинается теперь с задачи №3. Под номером 53 опубликована новая задача от pegoopik (https://sql-ex.ru/users_page.php?uid=69553) (сложность 3 балла). Актуализируйте свой сертификат!§ Популярные темы недели на форуме Топик Сообщений Просмотров 54 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=54) 3 6 58 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=58) 2 7 Guest's book (https://sql-ex.ru/forum/forum.php?F=0&N=0) 2 8§ Авторы недели на форуме Автор Сообщений Nividimka 2 selber (https://sql-ex.ru/users_page.php?uid=128116) 2
  • SQL-Ex

    18 Sept, 17:34edited

    Граница вашей транзакции принадлежит программе, а не имени файла https://sql-ex.ru/blogs/?/Granica_vashej_tranzakcii_prinadleZhit_programme,_a_ne_imeni_fajla.htmlAlexey Evlampiev: Your Transaction Boundary Belongs in the Program, Not the Filename (https://vvka-141.github.io/pgmi/articles/transaction-boundary-in-the-program/)Поэтапное изменение схемы охватывает транзакционную и нетранзакционную работу. Большинство фреймворков миграций выражают это различие как метаданные, другие делает его частью SQL-программы.Продолжить чтение "Граница вашей транзакции принадлежит программе, а не имени файла" (https://sql-ex.ru/blogs/?/Granica_vashej_tranzakcii_prinadleZhit_programme,_a_ne_imeni_fajla.html#extended)
  • SQL-Ex

    18 Sept, 11:01edited

    Всё о GUC по порядку: idle_in_transaction_session_timeout https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_idle_in_transaction_session_timeout.htmlАвтор Christophe Pettus: All Your GUCs in a Row: idle_in_transaction_session_timeout (https://thebuild.com/blog/all-your-gucs-in-a-row-idle_in_transaction_session_timeout/)idle_in_transaction_session_timeout существует потому, что на код приложения нельзя положиться в том, что он доведёт до конца то, что начал. ORM открывает транзакцию, исключение уводит выполнение по неожиданному пути, соединение возвращается в пул с всё ещё открытой транзакцией, и теперь у PostgreSQL есть сессия, которая будет удерживать всё, к чему прикоснулась, пока кто-нибудь это не заметит. Этот параметр и есть тот самый «кто-нибудь».Продолжить чтение "Всё о GUC по порядку: idle_in_transaction_session_timeout"
  • SQL-Ex

    17 Sept, 21:35edited

    Всё о GUC по порядку: ident_file https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_ident_file.htmlАвтор Christophe Pettus: All Your GUCs in a Row: ident_file (https://thebuild.com/blog/all-your-gucs-in-a-row-identfile/)ident_file сообщает серверу, где находится pg_ident.conf. Вот и вся функция. Интересная часть — это то, что происходит, когда он указан неправильно, а именно: ничего, громко, в журнале, который никто не читает.Значение по умолчанию — pg_ident.conf в каталоге конфигурации, то есть в каталоге, содержащем postgresql.conf, а не обязательно в каталоге данных. Контекст — postmaster, поэтому для изменения требуется перезапуск, и он несёт флаг «только для суперпользователя», поэтому непривилегированная роль, запрашивающая SHOW ident_file, получает ошибку прав доступа вместо ответа. Относительный путь разрешается относительно рабочего каталога того, кто запустил postgres, а
  • SQL-Ex

    16 Sept, 10:22edited

    Всё о GUC по порядку: hot_standby_feedback https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_hot_standby_feedback.htmlАвтор Christophe Pettus: All Your GUCs in a Row: hot_standby_feedback (https://thebuild.com/blog/all-your-gucs-in-a-row-hot_standby_feedback/)hot_standby_feedback не устраняет проблему. Он перемещает её — с резервного сервера на первичный, и вопрос о том, является ли это хорошим обменом, — это и есть весь вопрос.Проблема заключается в конфликтах восстановления, которые отменяют долго выполняющиеся запросы на резервном сервере. Резервный сервер воспроизводит изменения первичного, одновременно отвечая на читающие запросы, и когда первичный очищает vacuum мёртвые версии строк, воспроизведение этой очистки на резервном сервере сталкивается с любым запросом, который всё ещё полагается на эти версии. Резервный сервер разрешает столкновение, убивая запрос, и пользователь
  • SQL-Ex

    15 Sept, 15:10edited

    https://sql-ex.ru/blogs/?/unknown.htmlАвтор Alexey Evlampiev: Your ALTER TABLE Is Fast. The Queue Behind It Is Not (https://vvka-141.github.io/pgmi/articles/lock-queue-fast-is-not-safe/)Изменение схемы, которое выполняется шесть миллисекунд, всё ещё может остановить каждое чтение из таблицы на шестнадцать секунд — ущерб наносит ожидание, а не работа.Вот один и тот же оператор, выполненный дважды для одной и той же таблицы — PostgreSQL 16.14 в локальном контейнере, таблица orders на 100 000 строк, конкурирующая сессия удерживается открытой через pg_sleep. Это иллюстративные числа с одной машины, а не бенчмарк; важен сам ratio, и вы можете воспроизвести его примерно за минуту.-- Без конкуренции:ALTER TABLE orders ADD COLUMN note text;Time: 5.786 ms-- С одним обычным долго выполняющимся SELECT, открытым на таблице:ALTER TABLE orders ADD COLUMN note text;Time: 18065.050 ms
  • SQL-Ex

    15 Sept, 11:04edited

    Всё о GUC по порядку: hot_standby https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_hot_standby.htmlАвтор Christophe Pettus: All Your GUCs in a Row: hot_standby (https://thebuild.com/blog/all-your-gucs-in-a-row-hot_standby/)hot_standby — это переключатель, который решает, является ли резервный сервер запасным, на который можно только переключиться, или репликой, с которой можно ещё и читать. По умолчанию он установлен во второе положение начиная с PostgreSQL 10, поэтому для большинства людей, использующих репликацию сегодня, это переключатель, уже находящийся в нужном положении, которое никогда не приходится трогать.Это логический параметр, по умолчанию включён, его контекст — postmaster, поэтому он фиксируется при запуске сервера. Он включает возможность подключаться к серверу, находящемуся в режиме восстановления, воспроизводящему WAL из архива или от потокового первичного
  • SQL-Ex

    14 Sept, 17:10edited

    Всё о GUC по порядку: hba_file https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_hba_file.htmlАвтор Christophe Pettus: All Your GUCs in a Row: hba_file (https://thebuild.com/blog/all-your-gucs-in-a-row-hba_file/)hba_file — это указатель, а не политика. Он сообщает серверу, где найти pg_hba.conf — файл, который фактически решает, кто может подключиться, откуда, под каким именем и каким методом аутентификации. Обо всех этих решениях hba_file ничего не говорит. Его единственная задача — адрес.Это строка, её контекст — postmaster, поэтому она фиксируется при запуске сервера, и её можно установить в postgresql.conf. Значение по умолчанию — pg_hba.conf в каталоге данных, куда initdb записывает его при создании кластера. У вас очень редко будет причина его менять, и все возможные причины сводятся к желанию, чтобы файл аутентификации находился где-то вне каталога данных.Продолжить чтение
  • SQL-Ex

    14 Sept, 12:02edited

    Как работают пользовательские типы в PostgreSQL: полное руководство https://sql-ex.ru/blogs/?/Kak_rabotajut_polzovatelskie_tipy_v_PostgreSQL_polnoe_rukovodstvo.htmlПересказ статьи Grant Fritchey. How User-Defined Types work in PostgreSQL: a complete guide (https://www.red-gate.com/simple-talk/databases/postgresql/learning-postgresql-with-grant-user-defined-types/)Узнайте, как работать с определяемыми пользователем типами в PostgreSQL, в том числе как эффективно их определять, использовать и управлять ими. В этом руководстве объясняется, как пользовательские типы могут улучшить проектирование схемы, усилить целостность данных и поддерживать более ясные и более удобные в обслуживании структуры баз данных в реальных приложениях.Я уверен, что не одинок, когда говорю: иногда я отвлекаюсь. В данном конкретном случае я не собирался изучать пользовательские типы (UDT) в PostgreSQL
  • SQL-Ex

    11 Sept, 17:52edited

    Новости за 2026-09-05 - 2026-09-11 https://sql-ex.ru/blogs/?/Novosti_za_2026-09-05_-_2026-09-11.html§ Новая задача от Pegoopik (1 балл) выставлена для обсуждения под номером 303.§ Популярные темы недели на форуме Топик Сообщений Просмотров 58 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=58) 6 6 207 (SELECT) (https://sql-ex.ru/forum/forum.php?F=1&N=207) 2 4 53 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=53) 2 6§ Авторы недели на форуме Автор Сообщений Steamboat 3 Murderface_ (https://sql-ex.ru/users_page.php?uid=556296) 3 Demon_gr 2 pegoopik (https://sql-ex.ru/users_page.php?uid=69553) 2 selber (https://sql-ex.ru/users_page.php?uid=128116) 2Продолжить чтение "Новости за 2026-09-05 - 2026-09-11" (https://sql-ex.ru/blogs/?/Novosti_za_2026-09-05_-_2026-09-11.html#extended)
  • SQL-Ex

    11 Sept, 12:16edited

    Всё о GUC по порядку: hash_mem_multiplier https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_hash_mem_multiplier.htmlАвтор Christophe Pettus: All Your GUCs in a Row: hash_mem_multiplier (https://thebuild.com/blog/all-your-gucs-in-a-row-hash_mem_multiplier/)Сортировки и хэш-операции имеют разное отношение к памяти, и этот параметр существует потому, что PostgreSQL большую часть своей истории делал вид, что это не так.hash_mem_multiplier — это значение с плавающей точкой, по умолчанию 2.0, контекст — пользовательский, диапазон от 1.0 до 1000. Что он делает, легко сформулировать: операциям на основе хэширования разрешено использовать work_mem, умноженный на это значение, в то время как операции на основе сортировки получают обычный work_mem. При значениях по умолчанию сортировка может использовать 4 МБ, прежде чем сбросить данные на диск, а хэш-таблица может использовать 8 МБ. Под
  • SQL-Ex

    10 Sept, 22:31edited

    Всё о GUC по порядку: gss_accept_delegation https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_gss_accept_delegation.htmlАвтор Christophe Pettus: All Your GUCs in a Row: gss_accept_delegation (https://thebuild.com/blog/all-your-gucs-in-a-row-gss_accept_delegation/)gss_accept_delegation — это логический параметр, по умолчанию выключен, его контекст — sighup. Он управляет тем, будет ли ваш сервер PostgreSQL принимать учётные данные Kerberos, которые передаёт ему клиент, и причина, по которой он по умолчанию выключен, заключается в том, что принятие этих данных означает, что сервер сможет затем действовать от имени этого пользователя по отношению к другим системам. Это один из тех параметров, где значение по умолчанию является безопасным выбором, а его включение — это сознательное решение принять на себя риск в обмен на определённую возможность. Поэтому полезное, что может сделать эта
  • SQL-Ex

    9 Sept, 21:27edited

    Всё о GUC по порядку: gin_fuzzy_search_limit https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_gin_fuzzy_search_limit.htmlАвтор Christophe Pettus: All Your GUCs in a Row: gin_fuzzy_search_limit (https://thebuild.com/blog/all-your-gucs-in-a-row-gin_fuzzy_search_limit/)Это название вводит в заблуждение сразу дважды. Параметр никак не связан с нечётким сопоставлением, то есть с поиском по триграммному сходству или близости написания, ради которого обычно обращаются к pg_trgm. И это на самом деле не совсем ограничение поиска. Неопределённость заключается в размере набора результатов: этот параметр фактически велит PostgreSQL вернуть меньше строк, чем соответствует вашему запросу, причём выбранных случайным образом, и ничего вам об этом не сообщить.Из-за этого параметр почти уникален среди GUC. Многие параметры позволяют обменивать один ресурс на другой, а некоторые жертвуют надёжностью
  • SQL-Ex

    8 Sept, 14:29edited

    Всё о GUC по порядку: семейство geqo https://sql-ex.ru/blogs/?/Vsjo_o_GUC_po_porJadku_semejstvo_geqo.htmlChristophe Pettus: All Your GUCs in a Row: The geqo Family (https://thebuild.com/blog/all-your-gucs-in-a-row-the-geqo-family/)Семь параметров, одна функция и разумная цель — никогда не использовать ни один из них.geqo, geqo_threshold, geqo_effort, geqo_pool_size, geqo_generations, geqo_selection_bias и geqo_seed — все они настраивают Генетический оптимизатор запросов (Genetic Query Optimizer), альтернативный поиск порядка соединений, к которому PostgreSQL прибегает, когда в запросе слишком много отношений для полного перебора обычным планировщиком. Все семь параметров имеют контекст user, поэтому любой из них можно установить для сессии, роли или базы данных.Причина рассматривать их как группу в том, что шесть из семи имеют значение только в том случае, если вы уже
  • SQL-Ex

    8 Sept, 09:20

    Продолжить чтение "Как работает многостолбцовая статистика" (https://sql-ex.ru/blogs/?/Kak_rabotaet_mnogostolbcovaJa_statistika.html#extended)
  • SQL-Ex

    8 Sept, 09:20

    Image from a post by SQL-ExImage from a post by SQL-Ex
  • SQL-Ex

    8 Sept, 09:20edited

    Как работает многостолбцовая статистика https://sql-ex.ru/blogs/?/Kak_rabotaet_mnogostolbcovaJa_statistika.htmlПересказ статьи Brent Ozar. How Multi-Column Statistics Work (https://www.brentozar.com/archive/2026/04/how-multi-column-statistics-work/)Краткий ответ: в реальных ситуациях работает только первый столбец. Когда SQL Server необходимы данные о втором столбце, он строит вместо этого свою собственную статистику по этому столбцу (предполагая, что ее не существует) и использует эти две статистики совместно - но на самом деле они не связаны.Чтобы дать более подробный ответ, давайте возьмем большую версию базы данных Stack Overflow (https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/), создадим двухстолбцовый индекс на таблице Users, а затем посмотрим на полученную статистику:DropIndexes; GO CREATE INDEX Location_Reputation ON d