Dasturlash

SQL‑tap: Ma'lumotlar bazasidagi so'rovlarni real‑vaqt rejimida kuzatish vositasi

3-mart, 2026, 15:265 ko'rish3 daqiqa o'qish
SQL‑tap: Ma'lumotlar bazasidagi so'rovlarni real‑vaqt rejimida kuzatish vositasi

Ma'lumotlar bazasiga kiruvchi har bir so'rovni nazorat qilish, dasturchilar va DBA'lar uchun muhim vazifalardan biridir. SQL‑tap bu ehtiyojni qondirishga mo'ljallangan, real‑time (real‑vaqt) SQL trafikini ko‘rish, tahlil qilish va optimallashtirish imkonini beruvchi yangi ochiq manba vositadir. Ushbu maqolada SQL‑tap'ning qanday ishlashi, o'rnatish bosqichlari va asosiy funksiyalari haqida batafsil ma'lumot beramiz.

SQL‑tap nima?

SQL‑tap – bu proxy daemon (oraliq server) va TUI/Web client (terminal yoki veb interfeys) kombinatsiyasidan iborat vosita. U dastur va ma'lumotlar bazasi (PostgreSQL, MySQL yoki TiDB) orasiga joylashib, har bir SQL so'rovini tutadi va foydalanuvchiga interaktiv tarzda ko‘rsatadi. Dastur kodini o‘zgartirish shart emas; faqat sql‑tapd ga ma'lumotlar bazasiga ulanish manzilini ko‘rsatish kifoya.

O'rnatish va ishga tushirish

  • Homebrew (macOS): brew install mickamy/tap/sql-tap
  • Go ekosistemi: go install github.com/mickamy/sql-tap@latest va go install github.com/mickamy/sql-tap/cmd/sql-tapd@latest
  • GitHub klonlash: git clone https://github.com/mickamy/sql-tap.gitmake install
  • Nix/Flake: nix profile install github:mickamy/sql-tap

Docker imijlari ham tayyor: PostgreSQL yoki MySQL konteyneriga sql‑tapd ni qo‘shish orqali proxy funksiyasini bir necha satr kod bilan yo‘qotish mumkin.

Proxy daemonni ishga tushirish

PostgreSQL uchun:

DATABASE_URL="postgres://user:pass@localhost:5432/db?sslmode=disable" \
sql-tapd --driver=postgres --listen=:5433 --upstream=localhost:5432

MySQL uchun:

DATABASE_URL="user:pass@tcp(localhost:3306)/db" \
sql-tapd --driver=mysql --listen=:3307 --upstream=localhost:3306

TiDB uchun ham --driver=tidb parametrini ishlatish kifoya.

TUI (terminal) va Web UI

Proxy ishga tushgandan so‘ng, terminalda quyidagicha buyruq bilan UI ni ochish mumkin:

sql-tap localhost:9091

Bu yerda har bir so'rov real‑vaqt rejimida oqim ko‘rinishida paydo bo‘ladi, filtrlar, vaqt bo‘yicha saralash va EXPLAIN (so'rovni tahlil qilish) imkoniyatlari mavjud.

Web interfeysni yoqish uchun --http=:8080 parametrini qo‘shing:

sql-tapd ... --http=:8080

Keyin brauzerda http://localhost:8080 manziliga kirish orqali grafik ko‘rinishda so'rovlarni kuzatish mumkin. Web UI quyidagilarni taqdim etadi:

  • Server‑sent events (SSE) orqali real‑vaqt oqimi
  • So'rov tafsilotlarini ko‘rish va EXPLAIN / EXPLAIN ANALYZE bajarish
  • Matnli qidiruv va strukturalangan filtrlar (masalan, op:select d>100ms)
  • N+1 so'rovlarining avtomatik aniqlanishi – bu bir xil SELECT so‘rovi qisqa vaqt ichida bir necha marta takrorlanishi.

N+1 muammosini aniqlash

SQL‑tap N+1 detection funksiyasini standart holatda yoqadi. So'rov shabloni belgilangan vaqt oynasida (default 1 s) ma'lum bir son (default 5) dan ortiq takrorlansa, tizim toast bildirishnomasi va qator rangini o‘zgartirish orqali foydalanuvchini ogohlantiradi. Bu xatolikni tezda aniqlash va optimallashtirishga yordam beradi.

Qo‘shimcha sozlamalar

  • --nplus1-threshold=0 – N+1 aniqlashni o‘chirish.
  • --dsn-envEXPLAIN uchun DSN (Data Source Name) o‘zgaruvchisini belgilash.
  • --http yoki --grpc – turli interfeyslar uchun portlarni sozlash.

Kimlar uchun foydali?

SQL‑tap dasturchilar, test muhandislari, DBA'lar va performance tahlilchilari uchun ideal. U kodga qo‘shimcha instrumentatsiya kiritmasdan, ma'lumotlar bazasiga yo‘naltirilgan har bir so'rovni ko‘rish, tahlil qilish va muammolarni aniqlash imkonini beradi.

Xulosa

SQL‑tap – bu ochiq manba, yengil va kengaytiriladigan vosita bo‘lib, real‑vaqt SQL monitoringini soddalashtiradi. Docker, Nix, Homebrew yoki Go paketlari orqali o‘rnatish oson, TUI va Web UI orqali qulay ko‘rinishda ma'lumotlarni taqdim etadi. N+1 aniqlash, EXPLAIN integratsiyasi va filtrlar kabi funksiyalar yordamida ma'lumotlar bazasining samaradorligini oshirishga katta hissa qo‘shadi.

Manba: Hacker News
#SQL #PostgreSQL #MySQL #real-time monitoring #open source
Telegram da muhokama qilish