En Popüler 50 T-SQL Mülakat Soruları ve Cevapları (2026)

T-SQL mülakatına mı hazırlanıyorsunuz? Veritabanlarının yüzeyin altında nasıl çalıştığına dair anlayışınızı keskinleştirmenin zamanı geldi. T-SQL mülakat sorularıİşe alım uzmanları yalnızca söz dizimini hatırlama yeteneğinizi değil, aynı zamanda veri işleme, optimizasyon ve mantıksal yapılandırma konusundaki hakimiyetinizi de değerlendirir.
İşletmeler veri odaklı içgörülere bağımlı hale geldikçe, bu alandaki fırsatlar artmaya devam ediyor. Güçlü teknik uzmanlığa, analiz becerilerine ve gerçek dünya problemlerini çözme becerilerine sahip adaylar öne çıkıyor; ister yeni mezunlar ister 5 ila 10 yıllık deneyime sahip profesyoneller olsun. Hem temel hem de ileri düzey soru ve cevapları anlamak, ekip liderlerinin, yöneticilerin ve kıdemli teknik personelin güçlü SQL becerilerini ve kök düzey deneyimlerini belirlemelerine yardımcı olur.
Rehberimiz, 65'ten fazla işe alım yöneticisi, 40'tan fazla kıdemli geliştirici ve sektörlerden veri profesyonelinin görüşlerinden yararlanarak, temel SQL mantığından dünya çapındaki teknik liderlerin güvendiği gelişmiş optimizasyon tekniklerine kadar kapsamı garantiliyor. Daha fazla oku…
👉 Ücretsiz PDF İndirme: T-SQL Mülakat Soruları ve Cevapları
En İyi T-SQL Mülakat Soruları ve Cevapları
1) T-SQL nedir ve standart SQL'den nasıl farklıdır?
Transact-SQL (T-SQL) MicrosoftSQL dilinin tescilli uzantısı, öncelikle Microsoft SQL ServerDeğişkenler, koşullar, döngüler, hata yönetimi ve yerleşik işlevler gibi prosedürel programlama özelliklerini sunarak standart SQL'i geliştirir. Standart SQL veri işlemeye (SELECT, INSERT, UPDATE, DELETE) odaklanırken, T-SQL akış denetimi ifadelerini (IF…ELSE, WHILE), işlem yönetimini ve geliştiricilerin karmaşık betikler yazmalarına olanak tanıyan sistem işlevlerini destekler.
| Görünüş | SQL | T-SQL |
|---|---|---|
| Mülkiyet | ANSI/ISO Standard | Microsoft |
| İşlemsel Mantık | Sınırlı | Desteklenen (değişkenler, döngüler) |
| Hata işleme | asgari | TRY…CATCH desteklendi |
| Birincil kullanım | Genel Veritabanları | SQL Server |
Örnek:
DECLARE @count INT = 5;
WHILE @count > 0
BEGIN
PRINT @count;
SET @count -= 1;
END;
2) T-SQL'deki farklı join türlerini örneklerle açıklayınız.
T-SQL'deki birleştirmeler, iki veya daha fazla tablodaki satırları ilgili sütunlara göre birleştirir. İlişkisel veri sorguları için türlerini anlamak çok önemlidir.
| Birleştirme Türü | Tanım | Örnek Sözdizimi |
|---|---|---|
| INNER JOIN | Yalnızca eşleşen satırları döndürür | SELECT * FROM A INNER JOIN B ON A.id = B.id; |
| SOL KATILIN | Hepsi soldan + eşleşmeler sağdan | SELECT * FROM A LEFT JOIN B ON A.id = B.id; |
| DOĞRU BİRLEŞTİR | Hepsi sağdan + eşleşmeler soldan | SELECT * FROM A RIGHT JOIN B ON A.id = B.id; |
| TAM KATIL | SOL + SAĞ'ı birleştirir | SELECT * FROM A FULL JOIN B ON A.id = B.id; |
| ÇAPRAZ KATIL | Kartezyen ürün | SELECT * FROM A CROSS JOIN B; |
Pratik Örnek: birleştirme Orders ve Customers hangi müşterilerin sipariş verdiğini bulmak için INNER JOIN.
3) Ortak Tablo İfadeleri (CTE'ler) nedir ve avantajları nelerdir?
Ortak Tablo İfadesi (CTE), bir tablo içinde başvurulabilen geçici bir adlandırılmış sonuç kümesi sağlar. SELECT, INSERT, UPDATEya da DELETE ifadesi. Okunabilirliği artırır ve yinelemeli sorguları basitleştirir.
Avantajları:
- Sorgu netliğini ve bakımını artırır.
- (Organizasyon şemaları gibi hiyerarşik veriler için) yinelemeyi etkinleştirir.
- Tekrarlanan alt sorguların önlenmesine yardımcı olur.
- Büyük betiklerde modülerliği artırır.
Örnek:
WITH EmployeeCTE AS (
SELECT EmpID, EmpName, ManagerID
FROM Employees
)
SELECT * FROM EmployeeCTE WHERE ManagerID IS NULL;
4) T-SQL'de geçici tablolar ve tablo değişkenleri arasında nasıl bir fark vardır?
Her ikisi de ara sonuçları depolamak için kullanılır, ancak davranışları ve kapsamları önemli ölçüde farklıdır.
| Özellikler | Geçici Tablo (#Temp) |
Tablo Değişkeni (@TableVar) |
|---|---|---|
| Depolanan | TempDB | Bellek (sınırlı TempDB kullanımıyla) |
| İşlemsel Kapsam | İşlemleri takip eder | İşlemlerden bağımsız |
| Dizinler | destekli | Sınırlı |
| Performans | Büyük veri kümeleri için daha iyi | Küçük veri kümeleri için daha iyi |
Örnek:
DECLARE @TableVar TABLE (ID INT, Name NVARCHAR(50)); INSERT INTO @TableVar VALUES (1, 'Alice');
Büyük veri kümeleriyle çalışırken veya endekslere ihtiyaç duyduğunuzda geçici tablolar kullanın.
5) T-SQL'de işlem kavramını ve yaşam döngüsünü açıklayınız.
T-SQL'deki bir işlem, bir dizi işlemin tek bir mantıksal birim olarak yürütülmesini sağlar. Yaşam döngüsü şunları içerir: İŞLEM BAŞLAT, KOMİTE, ve GERİ DÖNÜŞ.
| Aşama | Tanım |
|---|---|
| İŞLEM BAŞLAT | İşlemi başlatır |
| İŞLEMİ TAAHHÜT | Tüm değişiklikleri kalıcı olarak kaydeder |
| GERİ ALMA İŞLEMİ | Son BEGIN'den bu yana yapılan tüm işlemleri geri alır |
Örnek:
BEGIN TRANSACTION; UPDATE Accounts SET Balance = Balance - 100 WHERE AccID = 1; UPDATE Accounts SET Balance = Balance + 100 WHERE AccID = 2; COMMIT TRANSACTION;
Eğer bir hata yarı yolda meydana gelirse, ROLLBACK veri bütünlüğünü korur.
6) DELETE, TRUNCATE ve DROP komutları arasındaki fark nedir?
| Komuta | İşlev | Rollback | Yapıyı Etkiler | hız |
|---|---|---|---|---|
| SİL | Belirli satırları kaldırır | Evet | Yok hayır | yavaş |
| KIRMIZI | Tüm satırları kaldırır | Hayır (genellikle) | Yok hayır | Hızlı |
| DAMLA | Tüm tabloyu siler | Yok hayır | Evet | Hızlı |
Örnek:
DELETE FROM Employees WHERE Department = 'HR'; TRUNCATE TABLE TempData; DROP TABLE OldLogs;
Kullanım DELETE seçici çıkarma için, TRUNCATE temizleme için ve DROP masayı tamamen kaldırmak.
7) T-SQL'de hata yönetimi nasıl çalışır?
T-SQL, yapılandırılmış hata işlemeyi şu şekilde sağlar: TRY...CATCH geliştiricilerin çalışma zamanı hatalarını zarif bir şekilde yönetmelerine olanak tanıyan bir blok.
Örnek:
BEGIN TRY
INSERT INTO Employees VALUES (1, 'John');
END TRY
BEGIN CATCH
PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH;
Bu yaklaşım, hatalı işlemi izole eder ve işlemin veri bütünlüğünü bozmasını önler. Geliştiriciler ayrıca aşağıdaki gibi sistem işlevlerine de erişebilir: ERROR_NUMBER() or ERROR_SEVERITY() teşhis için.
8) T-SQL sorgu performansını optimize etmenin farklı yolları nelerdir?
Optimizasyon, SQL tasarımının, indekslemenin ve yürütme stratejilerinin ince ayarını içerir.
Anahtar Teknikler:
- Kullanım uygun indeksleme Sıkça sorgulanan sütunlarda.
- Önlemek
SELECT *— sütunları açıkça belirtin. - Kullanım küme tabanlı işlemler imleçler yerine.
- SQL Server Management Studio'yu kullanarak yürütme planlarını analiz edin.
- Kullanım JOIN'ler verimli bir şekilde uygun AÇIK koşulları ile.
- Azaltmak iç içe alt sorgular; CTE'leri veya geçici tabloları tercih edin.
T-SQL'de performans ayarlaması, sorgu yürütme istatistiklerini kullanarak izlemeyi de içerir SET STATISTICS IO ON.
9) Pencere fonksiyonları nelerdir ve ne zaman kullanılmalıdır?
Pencere işlevleri, geçerli satırla ilgili bir dizi satırda hesaplamalar gerçekleştirir ve bunları tek bir sonuca indirgemez. Sıralama, toplamlar ve hareketli ortalamalar için kullanışlıdırlar.
Örnek:
SELECT
EmployeeID,
Salary,
RANK() OVER (ORDER BY Salary DESC) AS RankBySalary
FROM Employees;
Ortak işlevler şunları içerir: RANK(), ROW_NUMBER(), DENSE_RANK(), ve SUM() OVER().
Bunlar, hem toplu hem de satır düzeyinde verilere ihtiyaç duyduğunuz analitik iş yükleri için kritik öneme sahiptir.
10) Kümelenmiş ve kümelenmemiş indeksler arasındaki farkı açıklayınız.
| Özellikler | ClusterDüzenlenmiş Dizin | Olmayan-ClusterDüzenlenmiş Dizin |
|---|---|---|
| Veri depolama | Tabloyu fiziksel olarak yeniden düzenler | Ayrı yapı |
| Tablo Başına Sayı | Bir | çoklu |
| Performans | Aralık sorguları için daha hızlı | Belirli aramalar için daha hızlı |
| Kullanım Örneği | Birincil anahtar | İkincil aramalar |
Örnek:
CREATE CLUSTERED INDEX IX_EmployeeID ON Employees(EmployeeID); CREATE NONCLUSTERED INDEX IX_Dept ON Employees(Department);
Doğru dizin türünün seçilmesi sorgu yürütme hızını ve depolama verimliliğini doğrudan etkiler.
11) T-SQL'de saklı yordamlar nelerdir ve neden kullanılırlar?
Saklı yordam, sunucuda depolanan bir veya daha fazla SQL ifadesinin önceden derlenmiş bir koleksiyonudur. Mantığı kapsüllemenize ve yeniden derlemeden tekrar tekrar çalıştırmanıza olanak tanıyarak performansı, güvenliği ve yeniden kullanılabilirliği artırır. Saklı yordamlar ağ trafiğini azaltır ve dinamik yürütme için parametreleri destekler.
Örnek:
CREATE PROCEDURE GetEmployeeDetails @Dept NVARCHAR(50)
AS
BEGIN
SELECT EmpName, Position FROM Employees WHERE Department = @Dept;
END;
Faydaları:
- Ön derleme sayesinde daha iyi performans.
- Kontrollü yürütme yoluyla geliştirilmiş güvenlik.
- Daha kolay kod bakımı ve modülerleştirme.
12) T-SQL'de saklı yordam ile fonksiyon arasındaki farkı açıklayınız.
| Görünüş | Saklı yordam | İşlev |
|---|---|---|
| Dönüş Tipi | Birden fazla değer döndürebilir | Tek bir değer veya tablo döndürülmelidir |
| SELECT'te kullanın | İzin yok | İzin verildi |
| Hata işleme | TRY…CATCH desteklendi | Sınırlı |
| infaz | Aracılığıyla yürütüldü EXEC |
SQL ile satır içi olarak kullanılır |
| İşlem Kontrolü | destekli | Desteklenmez |
Örnek:
- Prosedür:
EXEC GetEmployeeDetails 'HR'; - Fonksiyon:
SELECT dbo.GetSalary(101);
Fonksiyonlar hesaplamalar için idealdir; prosedürler ise iş mantığı ve veri işleme için daha iyidir.
13) T-SQL'de tetikleyici nedir ve türleri nelerdir?
Tetikleyici, bir tablo veya görünümdeki belirli olaylara (INSERT, UPDATE, DELETE) yanıt olarak otomatik olarak yürütülen özel bir saklı yordamdır. Tetikleyiciler, iş kurallarını uygulamak, değişiklikleri denetlemek veya bilgi bütünlüğünü korumak için kullanılır.
| Menşei | Tanım |
|---|---|
| Tetikten Sonra | Etkinlik tamamlandıktan sonra yangınlar |
| Tetikleyici Yerine | Tetikleyici olayın yerine yürütülür |
Örnek:
CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
PRINT 'New employee record added!';
END;
Tetikleyicileri aşırı kullanmaktan kaçının; bunlar performansı etkileyebilir ve hata ayıklamayı zorlaştırabilir.
14) T-SQL'de NULL değerleri nasıl işlersiniz?
NULL, eksik veya bilinmeyen verileri temsil eder. T-SQL, bu verileri etkili bir şekilde işlemek için çeşitli işlevler sunar:
ISNULL(expression, replacement)→ NULL'u varsayılan değerle değiştirir.COALESCE(expression1, expression2, ...)→ ilk NULL olmayan değeri döndürür.NULLIF(expression1, expression2)→ ifadeler eşitse NULL döndürür.
Örnek:
SELECT ISNULL(Manager, 'No Manager') AS ManagerName FROM Employees;
En iyi uygulama: Beklenmeyen sonuçlardan kaçınmak için birleştirmelerde ve koşullarda her zaman NULL'ları hesaba katın.
15) T-SQL'de imleçler nedir ve ne zaman kaçınılmalıdır?
İmleç, sorgu sonuçlarının satır satır işlenmesine olanak tanır; küme tabanlı işlemlerin yetersiz olduğu karmaşık mantıklar için kullanışlıdır. Ancak imleçler, yavaş ve kaynak ağırlıklı küme tabanlı alternatiflere kıyasla.
Örnek:
DECLARE emp_cursor CURSOR FOR SELECT EmpName FROM Employees; OPEN emp_cursor; FETCH NEXT FROM emp_cursor; -- process CLOSE emp_cursor; DEALLOCATE emp_cursor;
Dezavantajları:
- Artan bellek kullanımı.
- Zayıf ölçeklenebilirlik.
- Düşük performans.
Alternatif: Mümkün olduğunca tablo birleştirmelerini, alt sorguları veya pencere fonksiyonlarını kullanın.
16) MERGE ifadesini ve kullanım durumlarını açıklayınız.
MKS MERGE ifade gerçekleştirir INSERT, GÜNCELLEME, ve SİL Tek bir komutta işlemler — iki tabloyu senkronize etmek için idealdir.
Sözdizimi Örneği:
MERGE INTO Target AS T USING Source AS S ON T.ID = S.ID WHEN MATCHED THEN UPDATE SET T.Name = S.Name WHEN NOT MATCHED BY TARGET THEN INSERT (ID, Name) VALUES (S.ID, S.Name) WHEN NOT MATCHED BY SOURCE THEN DELETE;
Kullanım Durumları:
- Veri ambarı (eşitleme aşaması ve hedef tablolar).
- Artımlı veri yükleme.
- Denetim veya boyut tablolarının tutulması.
17) T-SQL'de kullanıcı tanımlı fonksiyonların (UDF) farklı türleri nelerdir?
| Menşei | Tanım | Örnek E-posta |
|---|---|---|
| sayısal | Tek bir değer döndürür | CREATE FUNCTION GetTax(@Salary DECIMAL) RETURNS DECIMAL |
| Satır İçi Tablo Değerli | Tek bir tabloyu döndürür SELECT |
RETURN SELECT * FROM Employees WHERE Dept = 'HR' |
| Çoklu İfade Tablosu Değerli | Birden fazla ifadeden sonra bir tablo döndürür | Karmaşık mantık için kullanışlıdır |
Fonksiyonlar kodun yeniden kullanımını destekler ve modüler sorgu tasarımını geliştirir.
Performans optimizasyonu için mümkün olduğunca kesin (aynı girdi için aynı sonucu döndüren) olmaları gerekir.
18) Normalizasyon nedir, avantajları ve dezavantajları nelerdir?
Normalizasyon, bir veritabanındaki verileri, gereksizliği en aza indirmek ve bütünlüğü artırmak için düzenleme sürecidir. Tabloları daha küçük, ilişkili varlıklara bölmeyi içerir.
| normal biçim | Kural | Örnek E-posta |
|---|---|---|
| 1NF | Tekrar eden grupları ortadan kaldırın | Virgülle ayrılmış verileri böl |
| 2NF | Kısmi bağımlılıkları kaldırın | Birincil anahtara tam bağımlılığı sağlayın |
| 3NF | Geçişli bağımlılıkları kaldırın | Türetilmiş öznitelikleri taşı |
Avantajları:
- Tekrarlılığı azaltır.
- Veri tutarlılığını sağlar.
- Bakımı kolaylaştırır.
Dezavantajları:
- Karmaşık birleşimler.
- Analitik sorgular için potansiyel performans dezavantajları.
19) T-SQL'deki farklı kısıtlama türleri nelerdir?
Kısıtlamalar bir tablonun içindeki veri bütünlüğüne ilişkin kuralları uygular.
| Kısıtlama | Amaç | Örnek E-posta |
|---|---|---|
| BİRİNCİL ANAHTAR | Her satırı benzersiz şekilde tanımlar | PRIMARY KEY (EmpID) |
| YABANCI ANAHTAR | İki tabloyu birbirine bağlar | FOREIGN KEY (DeptID) |
| EŞSİZ | Benzersiz sütun değerlerini garanti eder | UNIQUE (Email) |
| ARA | Veri aralığını doğrular | CHECK (Age >= 18) |
| DEFAULT | Varsayılan değerleri sağlar | DEFAULT GETDATE() |
Kısıtlamalar, kapsamlı uygulama düzeyinde doğrulama ihtiyacını azaltarak doğruluğu ve güvenilirliği sağlar.
20) T-SQL'de izinleri ve güvenliği nasıl yönetirsiniz?
T-SQL, veritabanı güvenliğini şu şekilde yönetir: oturum açma bilgileri, kullanıcılar, roller ve izinler.
İzinler nesne veya şema düzeyinde verilebilir veya iptal edilebilir.
Örnek:
CREATE LOGIN John WITH PASSWORD = 'Strong@123'; CREATE USER John FOR LOGIN John; GRANT SELECT, INSERT ON Employees TO John;
En İyi Uygulamalar:
- Kullanım rolleri doğrudan kullanıcı izinleri yerine.
- Kullanmaktan kaçın
saveya sistem uygulamaları için hesaplar. - İzinleri düzenli olarak denetleyin
sys.database_permissions.
Uygun izin yönetimi, en az ayrıcalık ilkesini ve güvenlik politikalarına uyumu sağlar.
21) T-SQL'de farklı işlem izolasyon seviyeleri nelerdir?
İşlem izolasyon seviyeleri, bir işlemin diğerlerinden nasıl izole edileceğini belirler; dengeleme tutarlılık ile eşzamanlılık. SQL Server aşağıdakileri destekler:
| İzolasyon Seviyesi | Tanım | Kirli Okuma | Tekrarlanamayan Okuma | Hayalet Okuma |
|---|---|---|---|---|
| TAMAMLANMADI OKUYUN | İşlenmemiş verileri okur | Evet | Evet | Evet |
| TAMAMLANDI OKUYUN | Varsayılan; kilitler kirli okumaları engeller | Yok hayır | Evet | Evet |
| TEKRARLANABİLİR OKUMA | Veri değişikliğini taahhüt edilene kadar engeller | Yok hayır | Yok hayır | Evet |
| SERİLEŞTİRİLEBİLİR | Tam izolasyon; en yüksek kilitleme | Yok hayır | Yok hayır | Yok hayır |
| ENSTANTANE FOTOĞRAF | Sürümlemeyi kullanır, kilitlemeyi değil | Yok hayır | Yok hayır | Yok hayır |
Örnek:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; -- your code COMMIT;
Kullanım ENSTANTANE FOTOĞRAF Yüksek eşzamanlılık sistemlerinde tutarlılıktan ödün vermeden engellemeyi en aza indirmek için.
22) SQL Server'da çıkmaz nedir ve nasıl önlenebilir?
A çıkmaz İki işlem birbirinin ihtiyaç duyduğu kilitleri tuttuğunda ve bir çıkmaza yol açtığında ortaya çıkar. SQL Server, bir işlemi otomatik olarak algılar ve çıkmazın kurbanı olarak sonlandırır.
Örnek Senaryo:
- İşlem A, Tablo1'i kilitler ve ardından Tablo2'yi bekler.
- İşlem B, Tablo2'yi kilitler ve ardından Tablo1'i bekler.
Önleme Teknikleri:
- Kaynaklara aynı sırayla erişin.
- İşlemleri kısa tutun.
- Uygun izolasyon seviyelerini kullanın.
- İşlemler içerisinde kullanıcı etkileşiminden kaçının.
Kilitlenmeleri gerçek zamanlı olarak izlemek için SQL Profiler veya Genişletilmiş Olaylar'ı kullanın.
23) Kötümser ve iyimser eşzamanlılık denetimi arasındaki farkı açıklayınız.
| Menşei | Tanım | Kilitleme mekanizması | Kullanım çantası |
|---|---|---|---|
| kötümser | İşlem sırasında verileri kilitler | Ağır kilitleme | Yüksek çatışma ortamları |
| Iyimser | Satır sürümlemeyi kullanır, onaylamadan önce kontrol eder | Minimum kilitleme | Okuma ağırlıklı, düşük çatışmalı iş yükleri |
Örnek:
- Karamsar: Varsayılan
READ COMMITTEDkilitleme. - İyimser:
SNAPSHOTSatır versiyonlama ile izolasyon.
İyimser eşzamanlılık, büyük okuma işlemleri ve seyrek güncellemeler içeren sistemlerde performansı artırır.
24) Yavaş çalışan bir T-SQL sorgusunu nasıl analiz edebilir ve optimize edebilirsiniz?
- Uygulama Planını Kontrol Edin: Taramaları, eksik indeksleri ve maliyetli işlemleri belirleyin.
- SET STATISTICS IO/TIME'ı kullanın: G/Ç ve CPU kullanımını analiz edin.
- İmleçlerden ve döngülerden kaçının: Küme tabanlı işlemlerle değiştirin.
- Endeks optimizasyonu: Parçalanmış dizinleri ekleyin veya yeniden düzenleyin.
- Parametre koklama: Kullanım
OPTION (RECOMPILE)yeni planlar üretmek için.
Örnek:
SET STATISTICS TIME ON; SELECT * FROM Orders WHERE CustomerID = 123;
Yavaş sorguları düzenli olarak izleme Dinamik Yönetim Görünümleri (DMV'ler) sevmek sys.dm_exec_query_stats en iyi uygulamadır.
25) Dinamik SQL nedir, avantajları ve riskleri nelerdir?
Dinamik SQL, değişkenleri kullanarak çalışma zamanında SQL ifadelerini dinamik olarak oluşturmanıza olanak tanır.
Örnek:
DECLARE @sql NVARCHAR(MAX); SET @sql = 'SELECT * FROM Employees WHERE Dept = ''' + @Dept + ''''; EXEC(@sql);
Avantajları:
- Değişken tablo adları veya filtreler için esneklik.
- Birden fazla şema için yeniden kullanılabilir.
Dezavantajları:
- Savunmasız SQL Injection parametrelendirilmemişse.
- Hata ayıklaması ve bakımı daha zordur.
Her zaman kullan sp_executesql güvenlik parametreleriyle.
26) T-SQL'de geçici nesneler nelerdir ve aralarındaki farklar nelerdir?
Geçici nesneler şurada saklanır: TempDB ve ara verilerin yönetilmesine yardımcı olur.
| Nesne türü | kapsam | Örnek E-posta |
|---|---|---|
| Yerel Sıcaklık Tablosu | Oturuma özgü | CREATE TABLE #TempTable |
| Küresel Sıcaklık Tablosu | Tüm oturumlar tarafından görülebilir | CREATE TABLE ##TempGlobal |
| Tablo Değişkeni | Partiye özgü | DECLARE @Temp TABLE (...) |
En İyi Uygulamalar:
- Daha küçük veri kümeleri için tablo değişkenlerini tercih edin.
- İndeksleme gereksinimleri olan daha büyük veriler için yerel geçici tabloları kullanın.
- Kaynakları daha hızlı serbest bırakmak için geçici tabloları açıkça bırakın.
27) T-SQL'de pencere bölümlendirme fonksiyonları nasıl kullanılır?
Bölümlendirme, pencere fonksiyonlarının belirli veri alt kümelerine uygulanmasına olanak tanır.
Örnek:
SELECT
Department,
EmpName,
Salary,
RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS RankInDept
FROM Employees;
Faydaları:
- Grup bazında sıralamaları, toplamları ve ortalamaları etkili bir şekilde hesaplar.
- Kendi kendine katılma veya alt sorgulara olan ihtiyacı ortadan kaldırır.
Kullanım Durumları: Maaş aralıkları, satış sıralamaları ve trend analizleri.
28) T-SQL'de UNION ve UNION ALL arasındaki fark nedir?
| fıkra | çoğaltır | Performans | Kullanım çantası |
|---|---|---|---|
| BİRLİĞİ | Yinelenenleri kaldırır | Daha yavaş (sıralama/ayırt edici kullanır) | Sonuç kümelerini temiz bir şekilde birleştirme |
| BİRLİĞİ TÜMÜ | Kopyaları tutar | Daha hızlı | Toplama veya veri aktarımı |
Örnek:
SELECT City FROM Customers UNION SELECT City FROM Suppliers;
tercih ederim UNION ALL kopyaların kabul edilebilir olduğu ve performansın önemli olduğu durumlarda.
29) T-SQL'de JSON verileriyle nasıl çalışılır?
SQL Server, JSON verilerini ayrıştırmak ve oluşturmak için yerel JSON işlevlerini destekler.
Örnek:
DECLARE @json NVARCHAR(MAX) = '{"Name":"John","Age":30}';
SELECT JSON_VALUE(@json, '$.Name') AS Name;
Anahtar İşlevler:
JSON_VALUE()→ Skaler değerleri çıkarır.JSON_QUERY()→ Nesneleri/dizileri çıkarır.OPENJSON()→ JSON'u satırlara ayırır.FOR JSON→ Sorgu sonuçlarını JSON formatına dönüştürür.
API'ler, hibrit sistemler ve NoSQL entegrasyonları için kullanışlıdır.
30) SQL Server'da TempDB'yi nasıl yönetebilir ve optimize edebilirsiniz?
TempDB geçici depolama ve sürüm kontrolü için kritik öneme sahip bir sistem veritabanıdır. Yanlış yönetim ciddi performans sorunlarına yol açabilir.
Optimizasyon Teknikleri:
- TempDB'yi hızlı depolamaya (SSD) yerleştirin.
- Verileri ve günlük dosyalarını önceden boyutlandırın.
- Birden fazla veri dosyası kullanın (CPU çekirdeği başına 1'den 8'e kadar).
- İle izlemek
sys.dm_db_file_space_usage. - Geçici eşyaları düzenli olarak temizleyin.
Örnek Sorgu:
SELECT * FROM sys.dm_db_file_space_usage;
TempDB'yi proaktif olarak yönetmek, tahsis sayfalarındaki çekişmeleri önler ve genel veritabanı verimini artırır.
31) T-SQL'de sorgu ipuçları nedir ve ne zaman kullanılmalıdır?
Sorgu ipuçları, SQL Server optimize edicisine normal yürütme planını değiştirmesini söyler.
Bunları kısıtlı olarak kullanmalısınız; yalnızca veri dağıtımını ve yürütme bağlamını tam olarak anladığınızda.
Örnek:
SELECT * FROM Orders WITH (NOLOCK) WHERE CustomerID = 102;
Yaygın İpuçları:
NOLOCK:Kilitleme olmadan okur (işlenmemiş verileri okuyabilir).FORCESEEK:Tarama yerine indeks aramayı zorlar.OPTIMIZE FOR:Plan oluşturma için kılavuz parametre değerleri.RECOMPILE:Her yürütme için yeniden derlemeyi zorlar.
Dikkat: İpuçlarını aşırı kullanmak, veriler büyüdükçe veya kalıplar değiştikçe performansı düşürebilir. İpuçlarını yalnızca optimizasyon planının verimsiz olduğu kanıtlandığında kullanın.
32) SQL Server'da yürütme planı önbelleğe alma kavramını açıklayınız.
SQL Server, yinelenen sorgular için yeniden derlemeyi önlemek amacıyla yürütme planlarını önbelleğe alır.
Aynı sorgu aynı yapıyla tekrar çalıştırıldığında önbelleğe alınmış plan tekrar kullanılır ve performans iyileştirilir.
Örnek:
EXEC GetCustomerOrders @CustomerID = 101;
Faydaları:
- CPU yükünü azaltır.
- Tepki süresinde tutarlılığı artırır.
Sorunları:
- Parametre koklama verimsiz planlamalara yol açabilir.
- Plan önbelleğinin şişmesi belleği tüketebilir.
Azaltma: Kullanım OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN parametrelerin çok değişken olduğu yerlerde.
33) Parametre koklama nedir ve performansı nasıl etkileyebilir?
Parametre koklama, SQL Server'ın bir sorgunun ilk yürütülmesinden elde edilen parametre değerlerini kullanarak daha sonraki yürütmeler için en uygun olmasa bile yeniden kullanılan bir plan oluşturması durumunda meydana gelir.
Örnek Senaryo:
- İlk çalıştırma: küçük veri seti → dizin arama planı.
- Sonraki çalıştırma: büyük veri seti → aynı plan tekrar kullanıldı, ancak yavaş.
Çözümler:
- Kullanım
OPTION (RECOMPILE)yeni planlar üretmek için. - Parametre değerlerini maskelemek için yerel değişkenleri kullanın.
- Kullanım
OPTIMIZE FORorOPTIMIZE FOR UNKNOWN.
Parametre koklama, T-SQL'de öngörülemeyen performansın gerçek dünyadaki en büyük suçlularından biridir.
34) SQL Server'da sorgu performansını nasıl izler ve analiz edersiniz?
Performansı profillemek ve ayarlamak için çeşitli araçlar ve DMV'ler kullanabilirsiniz:
- Uygulama Planları:
Ctrl + MSSMS'de veyasys.dm_exec_query_plan. - DMV'ler:
sys.dm_exec_query_stats– CPU ve süre.sys.dm_exec_sql_text– SQL metni.sys.dm_exec_requests– Aktif sorgular.
- Performans İzleme ve Genişletilmiş Etkinlikler uzun vadeli takip için.
Örnek:
SELECT TOP 5
total_worker_time / execution_count AS AvgCPU,
total_elapsed_time / execution_count AS AvgTime,
SUBSTRING(qt.text, 1, 100) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgTime DESC;
35) Sorgu optimizasyonunda istatistiklerin rolünü açıklayınız.
İstatistik, optimize edicinin kardinaliteyi tahmin etmek için kullandığı veri dağılımını (örneğin, farklı değerler, yoğunluk, histogram) tanımlar.
İstatistikler güncel değilse SQL Server kötü planları seçebilir.
Temel Komutlar:
UPDATE STATISTICS Employees;sp_updatestats;- Otomatik güncelleme ayarı: varsayılan olarak etkindir.
En İyi Uygulamalar:
- tutmak
AUTO_UPDATE_STATISTICSsağladı. - Büyük tablolar için manuel güncellemeleri planlayın.
- Kullanım
FULLSCANkritik endeksler için.
Güncel olmayan istatistikler performansın sessiz katilidir.
36) Dizin arama ile dizin tarama arasındaki fark nedir?
| Çalışma | Tanım | Performans | Kullanım çantası |
|---|---|---|---|
| Dizin Arama | Doğrudan eşleşen satırlara gider | Hızlı | Son derece seçici sorgular |
| Dizin Taraması | Tüm dizin girişlerini sırayla okur | yavaş | Düşük seçiciliğe sahip sorgular |
Örnek:
SELECT * FROM Orders WHERE OrderID = 123; -- Seek SELECT * FROM Orders WHERE Status = 'Active'; -- May Scan
Optimizasyon İpucu: Taramaları aramalara dönüştürmek için filtrelenmiş veya kapsayıcı dizinler oluşturun.
37) Bölümlü tabloları ve avantajlarını açıklayınız.
Bölümlendirme, büyük bir tabloyu daha küçük, yönetilebilir parçalara (bölümlere) böler; bunlar genellikle bir aralık sütununa (tarih gibi) dayanır.
Faydaları:
- Daha hızlı veri yönetimi (bölüm bazında yükleme/boşaltma).
- Büyük veri kümelerinde geliştirilmiş sorgu performansı.
- Bölümlenmiş taramalar için paralel işleme.
Örnek:
CREATE PARTITION FUNCTION pfRange (DATETIME)
AS RANGE LEFT FOR VALUES ('2022-12-31', '2023-12-31');
Kullanım Örneği: Eski bölümlerin verimli bir şekilde arşivlenebileceği milyarlarca satırı işleyen veri ambarları.
38) Özyinelemeli CTE'ler nelerdir ve bunların sınırlamaları nelerdir?
A yinelemeli Ortak Tablo İfadesi (CTE) Genellikle organizasyon şemaları veya ağaç yapıları gibi hiyerarşik veriler için referanslar verir.
Örnek:
WITH EmployeeCTE AS (
SELECT EmpID, ManagerID, EmpName FROM Employees WHERE ManagerID IS NULL
UNION ALL
SELECT e.EmpID, e.ManagerID, e.EmpName
FROM Employees e
INNER JOIN EmployeeCTE c ON e.ManagerID = c.EmpID
)
SELECT * FROM EmployeeCTE;
Sınırlamalar:
- Varsayılan yineleme sınırı = 100 seviyeleri.
- Tekrarlama derinliği yüksekse performans sorunlarına yol açabilir.
- Kullanım
OPTION (MAXRECURSION n)limiti ayarlamak için.
39) SQL Server işlemlerdeki hataları dahili olarak nasıl işler?
Bir işlem sırasında hata oluştuğunda:
- Eğer öyleyse şiddetli (seviye > 20), bağlantı anında sonlandırılır.
- If şiddetli olmayan, yakalanabilir
TRY...CATCH.
Örnek:
BEGIN TRY
BEGIN TRANSACTION;
UPDATE Accounts SET Balance -= 500 WHERE ID = 1;
INSERT INTO AuditLog VALUES ('Debit');
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
PRINT ERROR_MESSAGE();
END CATCH;
En iyi pratik: Hatalara karşı dayanıklılık için DML'yi her zaman TRY…CATCH içine sarın.
40) Gelişmiş T-SQL performans ayarlama teknikleri nelerdir?
- Skaler UDF'lerden kaçının SELECT'te — satır içi işlevler daha hızlıdır.
- Filtrelenmiş dizinleri kullanın indeks boyutunu küçültmek için.
- Bellek içi OLTP'yi (Hekaton) kullanın yüksek eşzamanlılık sistemleri için.
- Toplu mod yürütme Analitik için columnstore dizinleri üzerinde.
- Örtük dönüşümleri ortadan kaldırın veri türlerini eşleştirerek.
- Sorgu deposunu kullan tarihi planları karşılaştırmak için.
Gizli dönüşümleri tespit etmeye yönelik örnek:
SELECT * FROM sys.dm_exec_query_stats CROSS APPLY sys.dm_exec_query_plan(plan_handle) WHERE CAST(query_plan AS NVARCHAR(MAX)) LIKE '%CONVERT_IMPLICIT%';
Performans ayarlaması tek seferlik bir olay değil, devam eden bir süreçtir.
41) SQL Server'da en fazla kaynak gerektiren sorguları nasıl belirlersiniz?
Tarihsel yürütme istatistiklerini kaydeden Dinamik Yönetim Görünümlerini (DMV'ler) kullanarak yüksek maliyetli sorguları belirleyebilirsiniz.
Örnek:
SELECT TOP 10
total_logical_reads / execution_count AS AvgReads,
total_worker_time / execution_count AS AvgCPU,
total_elapsed_time / execution_count AS AvgDuration,
SUBSTRING(qt.text, 1, 200) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgCPU DESC;
Anahtar Metrikler:
AvgCPU: Yürütme başına ortalama CPU süresi.AvgReads: G/Ç yoğunluğu.AvgDuration: Yürütme gecikmesi.
Bu yaklaşım, veritabanı yöneticilerinin kullanıcılar performans düşüşünü fark etmeden önce yoğun sorguları izole etmesine yardımcı olur.
42) SQL Server'da eksik indeksleri nasıl tespit edip düzeltebilirsiniz?
SQL Server, DMV'ler aracılığıyla eksik dizin önerilerini otomatik olarak izler.
Örnek:
SELECT
migs.user_seeks AS Seeks,
mid.statement AS TableName,
mid.equality_columns,
mid.inequality_columns,
mid.included_columns
FROM sys.dm_db_missing_index_details mid
JOIN sys.dm_db_missing_index_groups mig ON mid.index_handle = mig.index_handle
JOIN sys.dm_db_missing_index_group_stats migs ON mig.index_group_handle = migs.group_handle
ORDER BY migs.user_seeks DESC;
En İyi Uygulamalar:
- Öncelikle yüksek arama indekslerine öncelik verin.
- Oluşturulmadan önce yürütme planları üzerinden doğrulayın.
- Aşırı indekslemeden kaçının; bu, yazma işlemlerini yavaşlatır.
43) Veritabanı yansıtma, çoğaltma ve günlük gönderimi arasındaki fark nedir?
| Özellikler | Amaç | Gerçek zamanlı | yük devretme | karmaşa |
|---|---|---|---|---|
| Yansıtma | Yüksek kullanılabilirlikli veritabanı kopyası | Evet | Otomatik | Orta |
| Çoğaltma | Veritabanları arasında veri dağıtımı | Kısmi | Manuel | Yüksek |
| Günlük Gönderimi | Yedekleme tabanlı DR stratejisi | Yok hayır | Manuel | Düşük |
Kullanım Kılavuzu:
- Yansıtma → OLTP yüksek erişilebilirlik sistemleri.
- Çoğaltma → Dağıtılmış raporlama.
- Günlük Gönderimi → Afet kurtarma kurulumları.
44) SQL Server'da engelleme sorunlarını nasıl giderirsiniz?
Blokaj, bir işlemin başka bir işlemin ihtiyaç duyduğu kilitleri tutması durumunda meydana gelir.
Engelleyicileri belirlemek için:
SELECT
blocking_session_id AS Blocker,
session_id AS Blocked,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Çözümler:
- İşlem uzunluğunu azaltın.
- Anlık görüntü izolasyonunu kullanın.
- Kilitlenmeyi en aza indirmek için sorguları ayarlayın.
- Uzun süredir açık olan işlemleri belirleyin
DBCC OPENTRAN.
45) SQL Server'ın Sorgu Deposu performans ayarlamasına nasıl yardımcı olur?
Sorgu Deposu, sorgu metnini, planları ve çalışma zamanı istatistiklerini yakalar; bu da plan regresyon analizi.
Plan değişiklikleri nedeniyle bir sorgunun aniden yavaşladığını belirlemeye yardımcı olur.
Örnek:
SELECT q.query_id, p.plan_id, rs.avg_duration FROM sys.query_store_query q JOIN sys.query_store_plan p ON q.query_id = p.query_id JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id ORDER BY rs.avg_duration DESC;
Faydaları:
- Tarihsel planları karşılaştırın.
- İyi planları zorla.
- Zaman içindeki performans eğilimlerini takip edin.
46) T-SQL uygulamalarında SQL injection’ı nasıl önleyebilirsiniz?
Birincil Savunmalar:
- Kullanım parametreli sorgular üzerinden
sp_executesql. - Tüm kullanıcı girdilerini doğrulayın ve temizleyin.
- Dinamik SQL birleştirmesinden kaçının.
- Kullanmak en az ayrıcalık ilkesi veritabanı hesapları için.
Güvenli Örnek:
DECLARE @sql NVARCHAR(MAX); SET @sql = N'SELECT * FROM Employees WHERE Dept = @Dept'; EXEC sp_executesql @sql, N'@Dept NVARCHAR(50)', @Dept = 'HR';
SQL enjeksiyonu uygulama düzeyinde olsa da, Veritabanı yöneticileri, depolanan prosedürleri ve günlükleri denetlemelidir parametresiz yürütme için.
47) Derin performans izleme için Genişletilmiş Olaylar'ı nasıl kullanıyorsunuz?
Genişletilmiş Olaylar (XEvents), SQL Trace'e modern bir alternatif olan hafif bir performans izleme çerçevesidir.
Örnek:
CREATE EVENT SESSION TrackQueries ON SERVER ADD EVENT sqlserver.sql_statement_completed (WHERE duration > 1000) ADD TARGET package0.event_file (SET filename = 'C:\Temp\QueryMonitor.xel'); ALTER EVENT SESSION TrackQueries ON SERVER STATE = START;
Kullanım Durumları:
- Yüksek CPU sorgularını izleyin.
- Çıkmazları veya eksik dizinleri yakalayın.
- Üretimde uzun süreli ifadelerin profilini minimum yük ile oluşturun.
48) Filtrelenmiş indeksler nedir ve ne zaman kullanılmalıdır?
Filtrelenmiş bir dizin, yalnızca bir filtre koşulunu karşılayan satırların bir alt kümesini dizinler; bu da performansı artırır ve depolama alanını azaltır.
Örnek:
CREATE INDEX IX_ActiveEmployees ON Employees (Department) WHERE Status = 'Active';
Faydaları:
- Daha küçük endeks boyutu.
- Daha hızlı bakım.
- Seçici sorgular için optimize edilmiştir.
En: Çarpık veri dağılımına sahip sütunlar (örneğin, aktif ve aktif olmayan kayıtlar).
49) SQL Server ortamları arasında verileri güvenli bir şekilde nasıl taşırsınız?
Güvenli veri aktarımı, aşağıdakilerin planlanmasını içerir: tutarlılık, kesinti süresi ve geri alma.
En İyi Uygulamalar:
- Kullanım işlemsel çoğaltma or veri yakalamayı değiştir (CDC) canlı senkronizasyon için.
- Kısıtlamaları ve tetikleyicileri geçici olarak devre dışı bırakın.
- Kullanım BCP or ÖSS toplu veri aktarımı için.
- Satır sayılarını ve kontrol toplamlarını doğrulayın.
- Her zaman göç sonrası bütünlük kontrollerini çalıştırın (
DBCC CHECKDB).
Örnek:
bcp Database.dbo.Table out TableData.dat -n -S Server -T
Göç betiklerinin staging ortamında test edilmesi tartışmasızdır.
50) Parametreye duyarlı sorgu (PSQ) sorunlarını nasıl belirler ve düzeltirsiniz?
Parametreye duyarlı sorgular, parametre değerlerine bağlı olarak tutarsız performans gösterir; bu, gerçek dünyada sıkça karşılaşılan bir sorundur.
Algılama: Kullanım Sorgu Deposu or sys.dm_exec_query_stats bir sorgu için birden fazla plan belirlemek.
Düzeltme Stratejileri:
- Kullanım SEÇENEK (YENİDEN DERLEME) her infaz için.
- Kullanım BİLİNMEYENLER İÇİN OPTİMİZE ET genel bir plan oluşturmak için.
- Oluştur plan kılavuzları en iyi yürütme yollarını uygulamak için.
- Kullanım sorgu ipuçları sadece gerekliyse.
Parametreye duyarlı konular, plan istikrarı ile performans öngörülebilirliği arasında denge kurulmasını gerektirir.
🔍 Gerçek Dünya Senaryoları ve Stratejik Yanıtlarla En İyi T-SQL Mülakat Soruları
1) T-SQL'de INNER JOIN ile LEFT JOIN arasındaki fark nedir?
Adaydan beklenenler: Görüşmeyi yapan kişi, birleştirme işlemlerine ilişkin anlayışınızı ve SQL sorgularında veri ilişkilerinin nasıl yönetildiğini değerlendirmek istiyor.
Örnek cevap: An INNER JOIN her iki tabloda da eşleşen değerlere sahip satırları döndürürken, LEFT JOIN Sol tablodaki tüm satırları, sağ tablodaki eşleşen satırlarla birlikte döndürür. Eşleşme yoksa, sağ tablodaki sütunlar için NULL değerleri döndürülür. Bu ayrım, veritabanlarında kısmi veya isteğe bağlı ilişkilerle çalışırken çok önemlidir.
2) T-SQL'de bir tablodaki yinelenen kayıtları nasıl tespit eder ve kaldırırsınız?
Adaydan beklenenler: Görüşmeyi yapan kişi, veri kalitesi sorunlarını ele almak için pencere fonksiyonlarını ve CTE'leri kullanma becerinizi görmek istiyor.
Örnek cevap: Ortak Tablo İfadesi'ni (CTE) şu şekilde kullanırdım: ROW_NUMBER() Yinelenenleri belirleme işlevi. Örneğin:
WITH CTE AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS rn FROM MyTable ) DELETE FROM CTE WHERE rn > 1;
Bu yaklaşım, her grup için tek bir benzersiz kaydı korurken yinelenenleri kaldırmaya yardımcı olur.
3) CTE'nin (Ortak Tablo İfadesi) ne olduğunu ve ne zaman kullanılacağını açıklayabilir misiniz?
Adaydan beklenenler: Görüşmeyi yapan kişi, sorgu yapılandırma ve geçici sonuç kümeleri konusundaki bilginizi kontrol ediyor.
Örnek cevap: CTE, tek bir sorgunun yürütme kapsamı içinde tanımlanan geçici bir sonuç kümesidir. Karmaşık birleştirmeleri ve alt sorguları basitleştirmek, okunabilirliği artırmak ve yinelemeli sorguları mümkün kılmak için kullanışlıdır. Önceki görevimde, çok adımlı toplama mantığını daha sürdürülebilir bileşenlere ayırmak için CTE'leri sıklıkla kullandım.
4) T-SQL sorgularında performans ayarlamasını nasıl yapıyorsunuz?
Adaydan beklenenler: Görüşmeyi yapan kişi, sorgu optimizasyonu ve performans sorun giderme konusundaki deneyiminizi değerlendirmek istiyor.
Örnek cevap: Tablo taramaları veya maliyetli birleştirmeler gibi yavaş işlemleri belirlemek için yürütme planını inceleyerek başlıyorum. Ardından eksik dizinleri, gereksiz alt sorguları veya verimsiz birleştirmeleri kontrol ediyorum. Ayrıca istatistikleri analiz ediyor ve performansı artırmak için örtülü dizinler veya filtrelenmiş dizinler gibi dizinleme stratejileri kullanıyorum. Son olarak, satır satır işleme yerine küme tabanlı işlemlerden yararlandığından emin olmak için sorgu mantığını gözden geçiriyorum.
5) Üretimde yavaş çalışan bir sorguyu hata ayıklamak zorunda kaldığınız bir zamanı anlatın. Hangi adımları attınız?
Adaydan beklenenler: Bu davranışsal soru gerçek dünyadaki problem çözme ve iletişim becerilerinizi değerlendirir.
Örnek cevap: Önceki bir pozisyonda, bir rapor sorgusunun yürütülmesi 20 dakikadan fazla sürüyordu. Yürütme planını analiz ettim ve birleştirmelerden birinde yabancı anahtar sütununda bir dizinin eksik olduğunu fark ettim. Dizini oluşturup istatistikleri güncelledikten sonra, sorgu çalışma süresi 30 saniyenin altına düştü. Ayrıca, düzeltmeyi belgeledim ve gelecekte benzer sorunların önlenmesi için ekiple paylaştım.
6) Geçici tablolar ve tablo değişkenleri nedir ve aralarındaki farklar nelerdir?
Adaydan beklenenler: Görüşmeyi yapan kişi T-SQL'deki geçici veri depolama seçeneklerine ilişkin anlayışınızı test ediyor.
Örnek cevap: Geçici tablolar (#TempTable) tempdb veritabanında oluşturulur ve dizinleri, kısıtlamaları ve istatistikleri destekler. Tablo değişkenleri (@TableVar) bellekte saklanır ve sınırlı istatistik desteğine sahiptir, bu da onları daha küçük veri kümeleri için uygun hale getirir. Geçici tablolar büyük veya karmaşık veri kümeleri için daha iyiyken, tablo değişkenleri küçük ve kısa ömürlü veriler için daha verimlidir.
7) T-SQL'de hata yönetimi ve işlemleri nasıl halledersiniz?
Adaydan beklenenler: Görüşmeyi yapan kişi, işlemsel bütünlük ve istisna işleme konusundaki anlayışınızı kontrol ediyor.
Örnek cevap: kullanırım BEGIN TRANSACTION, COMMIT, ve ROLLBACK Veri tutarlılığını sağlamak için ifadeler de ekliyorum. TRY...CATCH Hataları zarif bir şekilde ele almak için bloklar. Örneğin:
BEGIN TRY
BEGIN TRANSACTION
-- SQL operations here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
PRINT ERROR_MESSAGE()
END CATCH
Bu yaklaşım, hatalar oluştuğunda kısmi veri güncellemelerinin önüne geçer.
8) T-SQL'de pencere fonksiyonlarını nasıl kullanıyorsunuz ve bir örnek verebilir misiniz?
Adaydan beklenenler: Görüşmeyi yapan kişi, ileri düzey analitik sorulardaki yeterliliğinizi değerlendirmek istiyor.
Örnek cevap: Pencere işlevleri, verileri daraltmadan geçerli satırla ilgili satır kümeleri arasında hesaplamalar yapmanıza olanak tanır. Örneğin:
SELECT EmployeeID, Salary, RANK() OVER (ORDER BY Salary DESC) AS SalaryRank FROM Employees;
Bu, çalışanlara maaşlarına göre sıralama numaraları atar ve performans eğilimlerini analiz etmeyi kolaylaştırır.
9) Üzerinde çalıştığınız karmaşık bir T-SQL projesinden ve bu projenin zorluklarına nasıl yaklaştığınızdan bahseder misiniz?
Adaydan beklenenler: Görüşmeyi yapan kişi deneyim, problem çözme ve ekip çalışması konularında derinlik arıyor.
Örnek cevap: Son görevimde, T-SQL saklı yordamlarını kullanarak bir veri ambarı ETL hattı oluşturdum. Buradaki zorluk, büyük veri hacimlerini verimli bir şekilde yönetmekti. Bölümlenmiş tablolar, artımlı yüklemeler ve toplu işleme ile sorguları optimize ettim. Ayrıca, tutarlı şema tasarımları sağlamak ve raporlama hızını %40'ın üzerinde artırmak için BI ekibiyle koordinasyon sağladım.
10) Yazdığınız bir saklı yordamın üretimde çıkmaza yol açması durumunda nasıl davranırsınız?
Adaydan beklenenler: Görüşmeyi yapan kişi kriz yönetimi ve teknik farkındalığınızı test ediyor.
Örnek cevap: Öncelikle SQL Server'ı kullanarak çıkmazı tespit ederdim sys.dm_tran_locks ve çıkmaz grafikleri. Ardından, kaynak erişim sırasını analiz eder ve kilitleri tutarlı bir sırayla almak için prosedürü yeniden düzenlerdim. Önceki işimde, etkilenen işlemler için yeniden deneme mantığı uyguladım ve benzer kalıpları erken tespit etmek için düzenli izleme planladım.
