概要
sql-tap は、アプリケーションとデータベースの間に配置する リアルタイムSQLトラフィックビューア。 PostgreSQL や MySQL のクエリをキャプチャし、 TUI(ターミナルUI) で表示。 アプリケーションコードの変更なしで、 EXPLAIN やトランザクションの確認が可能。 インストール方法やクイックスタート、主要な操作方法を解説。 MITライセンス で提供。
sql-tapとは
- sql-tap は、SQLトラフィックを リアルタイムで可視化 するプロキシデーモン+TUIクライアント。
- アプリケーションとデータベース( PostgreSQL または MySQL)の間に設置し、 全クエリをキャプチャ。
- インタラクティブなTUIで クエリ確認・トランザクション表示・EXPLAIN実行 が可能。
- アプリケーション側の コード変更は不要、ポートを切り替えるだけで導入可能。
- EXPLAIN や EXPLAIN ANALYZE もTUIから直接実行可能。
インストール方法
- Homebrew
brew install --cask mickamy/tap/sql-tap
- Go
go install github.com/mickamy/sql-tap@latestgo install github.com/mickamy/sql-tap/cmd/sql-tapd@latest
- ソースからビルド
git clone https://github.com/mickamy/sql-tap.gitcd sql-tapmake install
- Docker(PostgreSQL用)
FROM postgres:18-alpineADDコマンドでバイナリ取得・展開ENTRYPOINTでsql-tapd起動(ポート:5433→5432へ転送)
- Docker(MySQL用)
FROM mysql:8- PostgreSQLと同様の手順(ポート:3307→3306へ転送)
クイックスタート
- 1. プロキシデーモンの起動
- PostgreSQLの場合
DATABASE_URL="postgres://user:pass@localhost:5432/db?sslmode=disable" sql-tapd --driver=postgres --listen=:5433 --upstream=localhost:5432
- MySQLの場合
DATABASE_URL="user:pass@tcp(localhost:3306)/db" sql-tapd --driver=mysql --listen=:3307 --upstream=localhost:3306
- PostgreSQLの場合
- 2. アプリケーションの接続先をプロキシポートへ変更
- アプリケーションコードの修正不要
- データベースのポートをプロキシのポート(例:5433や3307)に切り替え
- 3. TUIの起動
sql-tap localhost:9091- リアルタイムで全クエリが表示
主なコマンド・オプション
- sql-tapd(プロキシデーモン)
-driver:postgresまたはmysqlを指定(必須)-listen:クライアントからの待受アドレス(必須)-upstream:上流DBアドレス(必須)-grpc:TUI用gRPCサーバーアドレス(デフォルト::9091)-dsn-env:EXPLAIN用DSN格納環境変数(デフォルト:DATABASE_URL)-version:バージョン表示- EXPLAIN機能利用時は
DATABASE_URLの設定が必要
- sql-tap(TUIクライアント)
-version:バージョン表示<addr>:sql-tapdのgRPCアドレス(例:localhost:9091)
TUIのキーバインド
- リストビュー
j/↓:下に移動k/↑:上に移動Ctrl+d/PgDn:半ページ下Ctrl+u/PgUp:半ページ上/:インクリメンタルサーチs:ソート切替(時系列/実行時間)Enter:クエリ/トランザクション詳細Space:トランザクション展開/折りたたみEsc:検索解除x:EXPLAINX:EXPLAIN ANALYZEe:クエリ編集+EXPLAINE:クエリ編集+EXPLAIN ANALYZEa:アナリティクスビューc:クエリコピーC:バインド済みクエリコピーq:終了
- 詳細ビュー・アナリティクスビュー・EXPLAINビューも同様に直感的なキーバインド
動作原理
- sql-tapd はデータベースの ワイヤプロトコル (PostgreSQL/MySQL)を解析し、 クエリを透過的にインターセプト。
- プリペアドステートメント、 パラメータバインド、 トランザクション、 実行時間、 影響行数、 エラー などを追跡。
- イベントは gRPC でTUIクライアントへ リアルタイム配信。
- アプリケーションコードの変更不要、ポートの切り替えのみで導入可能。
ライセンス
- MITライセンス で提供。
- 商用・個人利用問わず自由に使用可能。
sql-tapの特徴まとめ
- 透過的なSQLプロキシ によるクエリキャプチャ
- PostgreSQL/MySQL両対応
- EXPLAIN や EXPLAIN ANALYZE の実行サポート
- アプリケーションのコード変更不要
- TUIによる直感的な操作性
- 簡単な導入手順 と多様なインストール方法
- MITライセンス による自由な利用
推奨ユースケース
- SQLパフォーマンス解析
- クエリの実行時間や頻度の可視化
- トラブルシューティング
- エラークエリや異常なトランザクションの特定
- 開発・検証環境でのSQL監視
- アプリケーションの動作確認やチューニング時に最適
参考リンク
- GitHubリポジトリ: https://github.com/mickamy/sql-tap