惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
Vercel News
Vercel News
爱范儿
爱范儿
B
Blog
月光博客
月光博客
M
MIT News - Artificial intelligence
S
SegmentFault 最新的问题
I
InfoQ
C
Cyber Attacks, Cyber Crime and Cyber Security
G
Google Developers Blog
腾讯CDC
A
Arctic Wolf
The Hacker News
The Hacker News
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
罗磊的独立博客
E
Exploit-DB.com RSS Feed
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
S
Secure Thoughts
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
量子位
B
Blog RSS Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Hacker News: Ask HN
Hacker News: Ask HN
C
Cisco Blogs
GbyAI
GbyAI
S
Security Archives - TechRepublic
博客园_首页
雷峰网
雷峰网
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
O
OpenAI News
P
Privacy International News Feed
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
WordPress大学
WordPress大学
K
Kaspersky official blog
S
Securelist
S
Schneier on Security
Google DeepMind News
Google DeepMind News
Microsoft Azure Blog
Microsoft Azure Blog
H
Heimdal Security Blog
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
PostgreSQL 19 Beta: неблокирующий REPACK — перепаковка раздутых таблиц без окна простоя (и графовые запросы в придачу)
Puma · 2026-06-17 · via Все публикации подряд на Хабре

4 мин

0

У всех, кто эксплуатирует Postgres под нагрузкой, есть один и тот же неприятный ритуал. Таблица за годы UPDATE/DELETE распухла, физический размер в разы больше реальных данных, индексы раздулись, диск кончается. Лечится это перепаковкой — но VACUUM FULL берёт ACCESS EXCLUSIVE lock на всю таблицу, то есть кладёт по ней любые чтения и записи на всё время операции. На терабайтной таблице это окно простоя, которое согласовывают неделями.

Стандартный обходной путь — внешнее расширение pg_repack: оно перепаковывает таблицу почти без блокировки, ловя изменения через триггеры и применяя их на копию. Работает, но это сторонняя зависимость, со своими нюансами по правам, индексам и внешним ключам.

4 июня 2026 вышла PostgreSQL 19 Beta 1, и там эта боль наконец закрывается штатно: в ядро завезли команду REPACK с неблокирующей опцией CONCURRENTLY. Это, на мой взгляд, главная операционная фича релиза — и про неё стоит говорить раньше, чем про распиаренные графовые запросы. Разберём обе, по официальному анонсу и release notes, без «я проверил в проде» — beta в прод не ставят.

REPACK (CONCURRENTLY): перепаковка без окна простоя

Идея та же, что у pg_repack, но теперь это часть СУБД, а не внешний бинарник. Опции, как и у других команд, идут в скобках:

-- блокирующая перепаковка (как VACUUM FULL — берёт ACCESS EXCLUSIVE)
REPACK orders;

-- неблокирующая: таблица остаётся доступной на чтение и запись
REPACK (CONCURRENTLY) orders;

REPACK (CONCURRENTLY) пересобирает таблицу и её индексы в новые файлы, освобождая раздутое место, и не держит эксклюзивную блокировку всё время работы. Изменения, прилетевшие в таблицу во время операции, захватываются через logical decoding (а не триггерами, как у pg_repack) и накатываются на новую копию; короткий тяжёлый lock остаётся только на финальную atomic-подмену — как у REINDEX CONCURRENTLY. Отсюда и новая серверная переменная max_repack_replication_slots: каждый одновременный repack забирает дополнительный слот репликации, а верхняя граница параллелизма задаётся этим параметром и общими ресурсными лимитами.

И вот тут — самое важное для тех, кто собрался катить это на прод. REPACK (CONCURRENTLY) не является MVCC-safe: документация прямо предупреждает, что транзакция со старым снапшотом в некоторых сценариях может увидеть перепакованную таблицу пустой. Для операционной команды это не мелкая сноска, а то, что нужно держать в голове, планируя окно.

Documented-ограничения беты, которые отсекают часть кейсов сразу — CONCURRENTLY нельзя применить:

  • к UNLOGGED-таблицам, секционированным таблицам, системным каталогам и TOAST;

  • к таблицам без primary key или index-based replica identity (логично: иначе нечем сопоставлять строки при логическом декодировании);

  • внутри transaction block;

  • а ещё операция может не завершиться, если по таблице параллельно пойдёт DDL.

Что прогнать на staging до GA:

  • Дисковый оверхед. Перепаковка строит новую копию таблицы и индексов: нужно место минимум под таблицу + индексы, а на пике (seq scan + сортировка) — до двойного размера таблицы плюс индексы. Для терабайтника это не мелочь.

  • Бюджет слотов и лаг репликации. Если уже есть физические/логические реплики — посчитайте слоты заранее, иначе упрётесь.

  • Поведение под нагрузкой на копии самых проблемных таблиц, с поправкой на MVCC-оговорку выше.

Заменит ли он pg_repack полностью? Для типового «раздуло таблицу, нужно вернуть место без даунтайма» — во многом да, и без внешней зависимости. Но с оглядкой на список ограничений выше и не раньше, чем прогоните на своих данных.

SQL/PGQ: графовые запросы без отдельной графовой БД

Вторая большая фича — нативные property-graph запросы по стандарту SQL/PGQ (часть SQL:2023, GRAPH_TABLE). Ключевое, что многие пропускают: это не новое хранилище. Граф описывается как метаданные поверх таблиц, которые у вас уже есть — фактически view. Данные не дублируются и не синхронизируются, Postgres переписывает graph-паттерн в обычные джойны на этапе планирования.

-- граф — это метаданные над существующими users/posts/follows
CREATE PROPERTY GRAPH social_graph
  VERTEX TABLES (
    users LABEL person PROPERTIES (id, name),
    posts LABEL post   PROPERTIES (id, title)
  )
  EDGE TABLES (
    follows
      SOURCE KEY (follower_id) REFERENCES users (id)
      DESTINATION KEY (followed_id) REFERENCES users (id)
      LABEL follows
  );

-- на кого подписана Alice
SELECT followed_name
FROM GRAPH_TABLE (social_graph
  MATCH (a IS person WHERE a.name = 'Alice')
        -[IS follows]->
        (b IS person)
  COLUMNS (b.name AS followed_name)
);

То, что раньше было лесенкой из самоджойнов или рекурсивного CTE, становится читаемым паттерном (a)-[follows]->(b). Для follower-графов, деревьев зависимостей, тегов и прочих связей средней глубины это снимает реальную боль — и убирает из стека отдельный Neo4j, который держали только ради двух графовых запросов.

Но честная граница Beta 1: переменной длины пути пока нет. То есть «найди всех, до кого можно дойти за 1…N переходов» (классический обход графа неизвестной глубины) этим синтаксисом ещё не выразить — это всё ещё территория рекурсивных CTE или специализированных графовых движков. Так что SQL/PGQ закрывает паттерны фиксированной глубины, а не заменяет графовую БД целиком.

Что ещё приехало

Коротко, чтобы было видно вектор релиза:

  • Параллельный autovacuum (autovacuum_max_parallel_workers) и новая система приоритизации таблиц для вакуума — давняя боль больших баз.

  • Автоскейлинг I/O-воркеров поверх асинхронного I/O из 18-й версии (io_min_workers / io_max_workers).

  • pg_plan_advice / pg_stash_advice — стабилизация и контроль решений планировщика без хаков с pg_hint_plan.

  • До 2x быстрее INSERT при наличии проверок внешних ключей, плюс пачка оптимизаций планировщика (anti-join, инкрементальные сортировки, eager aggregation).

Вывод

Графовые запросы — красивый заголовок, но для большинства из нас новость релиза в другом: рутинная перепаковка раздутых таблиц перестаёт требовать окна простоя и внешнего расширения. REPACK (CONCURRENTLY) — это та фича, ради которой стоит поднять PostgreSQL 19 на staging уже сейчас и прогнать на копии своих самых проблемных таблиц: проверить дисковый оверхед, бюджет слотов и documented-ограничения (включая то, что команда не MVCC-safe) до того, как версия дойдёт до GA.

SQL/PGQ берите как приятный бонус: для связей фиксированной глубины он реально убирает отдельную графовую БД из стека, но обходы переменной глубины пока мимо.

А вы чем сейчас перепаковываете раздутые таблицы — pg_repack, VACUUM FULL в окно, pg_squeeze или живёте с bloat’ом до мажорного обновления?