Ana içeriğe geç
Kesit SQL
İleri · Mülakat Hazırlığı

Mülakat: yavaş sorgu ve performans soruları

Mülakatta yavaş sorgu sorusuna yapılı yanıt, sık sorulan kısa sorular, planı yorumlama ve yeniden yazma görevleri.

Uygulamada aç, 12 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Sorunun amacı

"Bu sorgu yavaş, ne yaparsın?" sorusu ezber ölçmez. Mülakatı yapan kişi yönteme bakar: Önce soru mu soruyorsun, ölçüyor musun, kararın bedelini biliyor musun?

Yanıt iskeleti

  1. Netleştir: "Ne kadar yavaş, hedef ne, ne sıklıkla çalışıyor, tablo kaç satır, okuma ağırlıklı mı?"
  2. Ölç: "Planı alır, temel ölçümü yazarım: süre ve okunan sayfa."
  3. Darboğazı bul: "Büyük tablo taranıyor mu, tahmin ile gerçek ayrışıyor mu, geçici sıralama var mı, alt sorgu her satırda mı çalışıyor?"
  4. Yazımı düzelt: "Sütunu fonksiyondan çıkarır, gereksiz DISTINCT ve SELECT * kaldırırım."
  5. İndeksi tasarla: "Eşitlik, aralık, sıralama, sonra kapsama."
  6. Doğrula: "Sonuç aynı mı, sayı düştü mü, yazma bedeli ne?"

Sık sorulan kısa sorular

SoruKısa yanıt
Clustered ve nonclustered farkıClustered satırların kendisini anahtar sırasında tutar, tabloda tek olur. Nonclustered ayrı yapıdır ve satıra işaret eder.
Kapsayan indeksSorgunun bütün sütunları indekste, tabloya gidilmez.
Sargableİndeks aramasına uygun koşul. Sütun yalın kalır.
Index Scan ve Index SeekSeek ilgili bölgeye gider, Scan indeksin tamamını okur.
Key Lookup neden pahalıBulunan her satır için tabloya ayrı gidilir. Çok satırda büyür.
Hash ve Nested LoopHash büyük sırasız girdiler için, Nested Loop az dış satır ve indeksli iç taraf için.
OFFSET neden yavaşlarAtlanan satırlar yine hesaplanır. Keyset son anahtardan devam eder.
Parametre koklamaPlan ilk değere göre kurulup diğer değerlere de uygulanır.
Bölüm elemeBölüm sütunu süzülünce ilgisiz bölümler okunmaz.
Tahmin ve gerçek farkıBayat istatistik, fonksiyonlu koşul ya da çarpık veri belirtisi.

Tuzaklar

Motor burada SQLite olduğundan görevlerin planları SQLite planıdır. Mülakatta hangi motor sorulursa onun adlarıyla konuş.

Operasyon ve güvenlik soruları

SoruKısa yanıt
Kodu değiştiremiyorum, sorgu yavaşİstatistik ve indeks, sonra Query Store ile plan zorlama ya da ipucu. Hepsi geri alınabilir olmalı, takvime bağlanmalı.
En pahalı sorguları nasıl bulursun?Sabitleri ayıklayıp gruplarım: query_hash ya da Query Store. Şikâyetin saat aralığına süzerim.
Önbellek ne zaman yanlış?Bayat verinin bedeli yüksekse, çoğu istek ıskalıyorsa, sorgu hatalıysa.
SQL injection nasıl önlenir?Parametreli sorgu, adlar için izin listesi, en az yetki. Süzme asıl savunma değildir.
Parola denemesini nasıl görürsün?Adres başına farklı hesap, hesap başına deneme, başarısızlıktan sonra başarı.

Ayrıntı SQL Server Operasyon ve Güvenlik yolunda.

Alıştırmalara geç (12)