Prompt
Sen büyük ölçekli veritabanlarında performans sorunları çözen kıdemli bir veritabanı mühendisisin.
Veritabanı ve sürüm: [VERITABANI]
Yavaş sorgu:
```sql
[SORGU]
```
EXPLAIN / EXPLAIN ANALYZE çıktısı (varsa):
```
[PLAN]
```
Tablo boyutları, mevcut indeksler ve sorgunun ne sıklıkla çalıştığı: [TABLO_BILGISI]
Analiz:
1. Darboğaz: Plan üzerinden sorgunun zamanı nerede harcadığı (tam tablo taraması, dosya sıralama, geçici tablo, hatalı birleştirme sırası).
2. İndeks önerisi: Bileşik indeksin sütun sırası ve nedeni (eşitlik → aralık → sıralama kuralı); mümkünse kapsayan (covering) indeks. CREATE INDEX komutu.
3. Sorgunun yeniden yazımı: SELECT * yerine gerekli sütunlar, alt sorgu → JOIN / CTE, OR → UNION, fonksiyona sarılmış sütunlar gibi indeks kullanımını engelleyen kalıpların düzeltilmesi.
4. Uygulama katmanı: N+1 sorgu, sayfalama (OFFSET yerine keyset), önbellek fırsatları.
5. Ölçüm planı: Değişiklik öncesi ve sonrası nasıl karşılaştırılacak (EXPLAIN ANALYZE, gecikme, taranan satır sayısı).
6. Riskler: Yeni indeksin yazma performansına ve disk alanına etkisi; canlı ortamda indeksin kilitlenmeden nasıl ekleneceği.
Kurallar: Plan verilmediyse tahminlerini "doğrulanmalı" diye işaretle ve hangi komutla doğrulayacağımı söyle.
Doldurulacak alanlar 4
- [VERITABANI]
- Veritabanı motoru ve sürümü Örn. MySQL 8.0
- [SORGU]
- Yavaş çalışan SQL sorgusu Örn. SELECT * FROM orders WHERE DATE(created_at) = CURDATE() AND status = 'pending' ORDER BY created_at DESC
- [PLAN]
- EXPLAIN çıktısı Örn. type: ALL, rows: 4800000, Extra: Using where; Using filesort
- [TABLO_BILGISI]
- Tablo boyutu, indeksler ve kullanım sıklığı Örn. orders 4,8 milyon satır, sadece PRIMARY KEY var; sorgu yönetim panelinde dakikada ~30 kez çalışıyor
Örnek çıktı
1. Darboğaz: type: ALL → 4,8 milyon satırın tamamı taranıyor. DATE(created_at) ifadesi, sütun fonksiyona sarıldığı için indeks kullanımını engelliyor; ORDER BY de dosya sıralamasına (filesort) yol açıyor.
2. İndeks
CREATE INDEX idx_orders_status_created ON orders (status, created_at);
Sıra: status eşitlik koşulu (önce), created_at aralık + sıralama (sonra).
3. Yeniden yazım
SELECT id, customer_id, total, created_at
FROM orders
WHERE status = 'pending'
AND created_at >= CURDATE()
AND created_at < CURDATE() + INTERVAL 1 DAY
ORDER BY created_at DESC;
Beklenen plan: type: range, taranan satır: yalnızca bugünün bekleyen siparişleri, filesort yok.
6. Risk: MySQL 8'de indeksi ALGORITHM=INPLACE, LOCK=NONE ile ekleyin; yoğun saat dışında çalıştırın.
2. İndeks
CREATE INDEX idx_orders_status_created ON orders (status, created_at);
Sıra: status eşitlik koşulu (önce), created_at aralık + sıralama (sonra).
3. Yeniden yazım
SELECT id, customer_id, total, created_at
FROM orders
WHERE status = 'pending'
AND created_at >= CURDATE()
AND created_at < CURDATE() + INTERVAL 1 DAY
ORDER BY created_at DESC;
Beklenen plan: type: range, taranan satır: yalnızca bugünün bekleyen siparişleri, filesort yok.
6. Risk: MySQL 8'de indeksi ALGORITHM=INPLACE, LOCK=NONE ile ekleyin; yoğun saat dışında çalıştırın.
0
- Kopyalanma
- 134
- Olumlu oy
- +0
- Yorum
- 0
Promptun aracı
ChatGPT için diğer promptlarBenzer promptlar
- Arama Niyetine Uygun SEO Blog Yazısı Hedef anahtar kelimenize göre arama niyetini analiz eden, önce taslak sunup onayınızı alan, sonra özgün deneyim ve örneklerle zenginleştirilmiş SEO uyumlu bir blog yazısı yazdırın.
- Dürüst ve Güven Veren Ürün İnceleme Yazısı Kullandığınız bir ürünü kendi deneyiminize dayanarak; artıları, eksileri, kime uygun olup olmadığı ve alternatifleriyle birlikte okurun karar vermesini kolaylaştıran dürüst bir incelemeye dönüştürün.
- "En İyi X Öneri" Formatında Liste Yazısı (Listicle) "En iyi 10 ...", "... için 7 öneri" gibi liste yazılarını; her maddesi gerçekten fark yaratan, seçim kriterleri açık ve okuyucuya "hangisi bana uygun?" sorusunun cevabını veren biçimde yazın.
- Okunan ve Tıklanan E-Bülten (Newsletter) Hazırlama Haftalık veya aylık e-bülteniniz için; açılma oranını artıran konu satırları, kişisel bir giriş, taranabilir bölümler ve tek net eylem çağrısıyla okunan bir bülten hazırlayın.
Topluluk denemeleri (0)
Bu promptla üretilen görseller. Siz de denediyseniz sonucunuzu paylaşın; editör onayından sonra burada görünür.
Henüz paylaşılan deneme yok. İlk sonucu siz paylaşın.
Yorumlar (0)
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap