Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 15 вересня 2026

PostgreSQL Monitoring and Schema Linting для Laravel з пакетом Vacuum

Vacuum - це пакет для моніторингу PostgreSQL у Laravel-застосунках, створений Rati Rukhadze. Пакет зчитує статистику, яку PostgreSQL уже збирає у вбудованих view таких як pg_stat_user_tables, pg_stat_activity та pg_stat_statements, після чого складає список виявлених проблем разом із SQL-командами для їх виправлення.

Основні можливості

Vacuum пропонує широкий набір інструментів для моніторингу та аналізу бази даних:

  • 13 правил-радників (advisor rules): виявлення wraparound, bloat, dead tuples, невикористовуваних індексів, повільних запитів та інших проблем
  • Health score: оцінка здоров'я бази даних за 100-бальною шкалою на основі виявлених проблем
  • Підтримка Blade та Filament: готова панель за адресою /vacuum або плагін для Filament 4 чи 5
  • Команда vacuum:check: може провалити білд у CI/CD при виявленні критичних проблем
  • Команда vacuum:lint: виявляє проблеми зі схемою бази даних, такі як непроіндексовані зовнішні ключі
  • Історія: відстеження трендів та прогнозування на основі запланованих знімків (snapshots)
  • Уроки (Lessons): 13 пояснень щодо PostgreSQL, які використовують ваші власні таблиці як приклади
  • І багато іншого

Dashboard та правила аналізу

Кожна виявлена проблема має рівень серйозності (severity) та оцінку (grade), що в сукупності формує загальний health score із 100 балів.

Детальніше про правила можна дізнатися з readme пакета. Окрім того, пакет надає ендпоінт /learn, який пояснює, чому певні проблеми існують у вашій базі даних, використовуючи ваші власні таблиці як робочі приклади - наприклад, для пояснення N+1 запитів.

Робота з термінала

Ті самі правила можна запускати через командний рядок:

php artisan vacuum:check
php artisan vacuum:check --fail-on=warning   # critical, warning, info, or never
php artisan vacuum:check --format=json       # score, grade, deductions, findings

Використовуючи заплановану задачу (scheduled job) на staging-оточенні, ви можете налаштувати провал білду, коли freeze age таблиці перевищить критичний поріг. Кожне правило зчитує свої ліміти з конфігураційного файлу config/vacuum.php, зокрема dead_tuple_ratio (0.20) та slow_query_milliseconds (500).

Встановлення

Vacuum версії 1.2.0 вимагає PostgreSQL 14 та Laravel 11+. Розширення pg_stat_statements є опціональним - без нього dashboard просто повідомить про відсутність розширення.

composer require heyosseus/vacuum
php artisan vacuum:install

Налаштування доступу

За замовчуванням dashboard доступний лише в local-оточенні. Щоб відкрити доступ в інших середовищах, можна використати callback через метод Vacuum::auth():

use Heyosseus\Vacuum\Vacuum;

Vacuum::auth(fn (Request $request) => $request->user()?->isAdmin() === true);

Дізнатися більше про пакет, отримати повні інструкції зі встановлення та переглянути вихідний код можна на GitHub.

23

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Новини 04 листопада 2026

Laravel 13.40: довгі завдання черги, insertBefore() для middleware і strict для запиту

Laravel 13.40.0 додає Queue::whenJobRunsLongerThan() і Schedule::whenTaskRunsLongerThan() для завдань черги та планувальника, що виконуються задовго, а також insertBefore() і insertAfter() для вбудованого стеку middleware. Крім того - прапорець strict для $request->integer() і string() та DB::hasCommitId() для перевірки реплік.

2
Новини 04 листопада 2026

Вразливість у Concurrency: вивід задачі міг призвести до виконання коду в Laravel

Laravel 13.40.0 і 12.71.0 закривають вразливість у драйвері process фасаду Concurrency: задача, яка друкує текст від користувача, могла підробити свій результат, а батьківський процес робив його unserialize(). Пояснюємо, кого це стосується і що зробити до оновлення.

3

Вакансії за темою

Middle PHP developer

Middle PHP розробник для високонавантаженої веб-платформи Social Casino/Online Casino: розвиток продукту, перехід монолітного проєкту на мікросервіси (Symfony), оптимізація баз даних, написання unit та functional тестів. Стек: PHP 7.4, Symfony 4, Yii, PostgreSQL 14, Redis, RabbitMQ, NGINX. Вимоги: 3-4+ роки продуктового досвіду з PHP, Yii, Symfony, PostgreSQL, розуміння REST API, Git, ООП та SOLID. Досвід з брокерами повідомлень і DDD буде плюсом.

Vodworks Нова
Вчора

Full Stack (PHP / JavaScript / AI)

Senior-розробник на позиції індивідуального контриб'ютора без керування людьми: архітектура та розробка масштабованих застосунків, мікросервісів і API, переважно на PHP з Laravel, а також JavaScript і сучасний фронтенд. Завдання включають обробку даних у реальному часі, кешування, черги повідомлень і розподілені системи. Вимоги: 7+ років досвіду, практичне використання AI-інструментів у розробці, англійська C1 і вище, менторство молодших розробників.

King Group Нова
2 дні тому

PHP developer

Розробка та підтримка iGaming-продуктів із високим навантаженням (10k+ RPS): складна бізнес-логіка, оптимізація баз даних обсягом 10+ ТБ, розробка фічей і метамеханік, інтеграції з зовнішніми API. Очікуються 3+ роки досвіду з PHP, знання PostgreSQL, REST API, досвід з Yii або Symfony (Laravel бажаний), розуміння DDD, CQRS, мікросервісів; знання Kafka, Redis або RabbitMQ буде плюсом.

Пакети за темою

Laravel Query Detector

beyondcode/laravel-query-detector

Інструмент для виявлення та попередження проблем N+1 запитів у Laravel додатках. Допомагає оптимізувати запити до бази даних шляхом виявлення неефективних паттернів навантаження даних.

2,060 2.3.0 13 15

Lada Cache

spiritix/lada-cache

Redis-базований автоматизований рівень кешування для бази даних Laravel, який забезпечує масштабованість та оптимізацію продуктивності.

591 v6.1.1 13 3