Live Monitoring
Активные запросы обновляются каждую секунду. PID, пользователь, БД, состояние, длительность — вся информация в реальном времени.
Real-timeLive Query Monitor
| PID | User | DB | State | WaitEvent | Duration | Query | |
|---|---|---|---|---|---|---|---|
| 87342 | app_user | PG | active | ClientRead | 2.3s | SELECT u.id, u.name, o.total FROM users u JOIN orders o … | |
| 87341 | replicator | PG | idle | — | 15.8s | COPY analytics_events FROM '/data/export.csv' | |
| 87338 | ml_user | PG | active | ExtendedQuery | 8.1s | WITH features AS (SELECT …) UPDATE predictions SET score = … | |
| 87335 | analytics | MY | locked | Lock | 22.7s | UPDATE inventory SET quantity = quantity - 1 WHERE id = … | |
| 87330 | etl_user | CH | active | IO | 45.2s | SELECT toDate(timestamp), count(*), uniq(user_id) FROM events … | |
| 87328 | app_user | PG | idle | — | 0.4s | COMMIT | |
| 87295 | batch_user | PG | error | PgSleep | 120.0s | SELECT pg_sleep(120) — killed |
SQL-Top — TUI-профайлер для мониторинга PostgreSQL, MySQL и ClickHouse в реальном времени. Single binary на Go 1.25+ (~21MB, zero deps), запуск за 70ms. Diff Engine, EXPLAIN без ANALYZE, Kill Query, кольцевой буфер на 5000 запросов, Hexagonal Architecture.
SQL-Top в сухих метриках — производительность, покрытие и совместимость.
Go 1.25+ и доступ к целевой БД — всё, что нужно. Single binary, zero dependencies.
go install github.com/turkprogrammer/sql-top/cmd/sql-top@latest
git clone https://github.com/turkprogrammer/sql-top.git
12 ключевых функций, которые делают SQL-Top незаменимым инструментом для DBA и разработчика.
Активные запросы обновляются каждую секунду. PID, пользователь, БД, состояние, длительность — вся информация в реальном времени.
Real-timeОтслеживание новых и завершённых запросов. Delta Highlighting — изменения подсвечиваются цветом: зелёный (новый), оранжевый (завершён), голубой (изменён).
DeltaПросмотр плана выполнения запроса без выхода из TUI. Safe EXPLAIN без ANALYZE — не выполняет запрос, только показывает план.
ProfilingЗавершение долгих запросов по PID с подтверждением. Timeout настраивается через SQLTOP_KILL_TIMEOUT (по умолчанию 5s).
SafetyКольцевой буфер на 5000 запросов — полная история активностей. Ни один запрос не потеряется, даже при высокой нагрузке.
HistoryКопирование текста запроса в буфер обмена одной клавишей (y). Подтверждение копирования с таймаутом 2 секунды.
UXАдаптивная вёрстка под размер терминала. Bubbletea с модальными окнами для EXPLAIN, Kill confirmation и Copy notification.
BubbleteaPorts & Adapters + Dependency Injection. Интерфейсы в domain, реализация в infrastructure. Легко добавлять новые СУБД.
ArchitecturePostgreSQL 12+, MySQL 5.7+/8.0+, ClickHouse 21.8+. Единый DSN-формат, общий интерфейс, специфичные для каждой СУБД детали.
3-in-1Context cancellation + signal handling. Корректное завершение всех соединений с БД при Ctrl+C или q.
ReliabilityПинг-мониторинг подключения к БД каждые 5 секунд (настраивается через SQLTOP_PING_INTERVAL). Визуальный индикатор статуса.
HealthEXPLAIN без ANALYZE — план выполнения без риска модификации данных. Безопасность на первом месте, в отличие от GUI-инструментов с ANALYZE по умолчанию.
SecurityВсё управление — с клавиатуры. Минимум движений, максимум эффективности.
| Клавиша | Действие | Описание |
|---|---|---|
| ↑ k | Navigation Up | Переместиться вверх по списку запросов |
| ↓ j | Navigation Down | Переместиться вниз по списку запросов |
| Enter | Show EXPLAIN | Показать план выполнения для выбранного запроса |
| k | Kill Query | Завершить выбранный запрос (с подтверждением) |
| y | Copy Query | Скопировать текст запроса в буфер обмена |
| ESC | Close Modal | Закрыть модальное окно (EXPLAIN / Kill confirmation) |
| q | Quit | Выход из приложения |
| Ctrl+C | Graceful Shutdown | Корректное завершение: закрытие соединений, освобождение ресурсов |
Hexagonal Architecture (Ports & Adapters) с Dependency Injection и композицией через BaseAdapter.
*base.BaseAdapter и реализует порты:*slog.Logger через конструкторSQL-Top vs альтернативы: почему Go single binary выигрывает у Python-зависимостей и тяжёлых IDE.
| Критерий | 🚀 SQL-Top | 🐍 pg_activity | 🐘 DBeaver / DataGrip |
|---|---|---|---|
| Тип инструмента | TUI (Terminal UI) | TUI (Terminal UI) | GUI (Desktop IDE) |
| Язык / Стек | Go (Single Binary) | Python (pip deps) | Java / Eclipse |
| Портативность | ✅ Отличная (~21MB, zero deps) | ⚠️ Средняя (нужен Python) | 📦 Низкая (500MB+ installer) |
| Время запуска | ⏱️ Мгновенно (~70ms) | ⏱️ Быстро (<500ms) | ⏳ Долго (5–15 сек) |
| Поддержка СУБД | 🔌 PG, MySQL, ClickHouse | ❌ Только PostgreSQL | ✅ Все популярные |
| Безопасность | 🛡️ Safe EXPLAIN (No ANALYZE) | ❌ Нет EXPLAIN в TUI | ⚠️ Опасно (ANALYZE по умолчанию) |
| Нагрузка на БД | 📉 Минимальная (оптимизирован) | Минимальная | 📊 Зависит от плагинов |
| Киллер-фича | 💡 Delta Highlighting | Simple Monitor | Визуальный конструктор |
go install github.com/turkprogrammer/sql-top/cmd/sql-top@latest. Требуется Go 1.25+. После установки бинарник будет доступен как sql-top. Также можно скачать готовый бинарник со страницы релизов на GitHub.Настройка через константы в domain/config.go и переменные окружения.
SQLTOP_DEBUG0 (по умолчанию)SQLTOP_KILL_TIMEOUT5sSQLTOP_EXPLAIN_TIMEOUT10sSQLTOP_PING_INTERVAL5sSQLTOP_CLIPBOARD_TIMEOUT2sDSN как positional аргумент или через флаг -dsn. Работает из коробки.
sql-top postgres://postgres:***@localhost:5432/mydb
postgres://user:***@db.example.com:5432/prod?sslmode=requirepostgres://user:***@localhost:5432/db?search_path=analyticssql-top mysql://root:***@localhost:3306/mydb
mysql://app:***@db.example.com:3306/productionmysql://user:***@localhost:3306/db?tls=preferredsql-top clickhouse://default:***@localhost:9000/mydb
clickhouse://admin:***@clickhouse.example.com:9000/analyticssql-top -dsn postgres://user:***@host:5432/dbKISS, YAGNI, SOLID, Hexagonal Architecture — каждый принцип соблюдается на всех уровнях кода.