SQL Sorgu Analizi: Veritabanı Performansını Artırma

İsmet Kizgin
3 min readMar 5, 2024

--

Veritabanı yöneticileri ve geliştiricileri için, SQL sorgularını anlamak, analiz etmek ve veritabanı performansını artırmak, ayrıca veri entegrasyonu süreçlerini optimize etmek son derece önemlidir.

Bu makalede, PostgreSQL üzerinden örnekler vererek ilerleyeceğim. Ancak, ilişkisel veritabanı yapısının temel konusu olduğundan, bazı kavramlar farklılık gösterse bile MySQL, SQL Server (MS SQL) vb. teknolojilerde de aynı sorgular ve durumlar geçerlidir.

Sorgu Analizi Nedir?

SQL’de sorgu analizi, çalışan sorguların performansını değerlendirmek ve iyileştirmek amacıyla yapılan bir süreçtir. Bu süreç, sorguların çalışma zamanlarını, disk ve bellek kullanımını, index kullanımını ve daha fazlasını detaylı bir şekilde analiz etmeyi içerir. Sorgu analizi, veritabanı performans sorunlarını tanımlamanıza ve çözmenize yardımcı olur.

EXPLAIN ve EXPLAIN ANALYZE

SQL’de sorguların analiz edilmesi için en temel araçlardan biri EXPLAIN komutudur. Bu komut, belirli bir sorgunun planını gösterir ancak sorguyu gerçekten çalıştırmaz. EXPLAIN ANALYSE ise EXPLAINile aynı işlevi görür, ancak sorgunun gerçek çalışma zamanını da rapor eder. EXPLAIN ANALYSE ile bir sorguyu inceleyelim.

EXPLAIN ANALYSE SELECT * FROM todos 
WHERE tenant_user_id = 1
AND planned_at >= '2024-03-03T21:00:00.000Z'
AND planned_at <= '2024-03-04T20:59:59.999Z'
Sorgu Çıktısı

Sorgu çıktısını aşağıdaki bilgiler ile inceleyebilirsiniz.

Cost (Maliyet) Bilgileri: cost değerleri, veritabanı optimizasyonunun bir parçası olarak hesaplanan tahmini maliyetleri gösterir. Daha düşük maliyet, genellikle daha iyi performans anlamına gelir.

Actual Time (Gerçek Zaman) Bilgileri: actual time değerleri, her adımda geçen gerçek zamanı gösterir. Bu, her bir adımın ne kadar sürede gerçekleştiğini ve sorgunun hangi kısımlarının daha fazla zaman aldığını anlamanıza yardımcı olur.

Rows (Satır) Bilgileri: rows değerleri, her adımda tahmini veya gerçekleşen satır sayısını gösterir. Bu, her adımda işlenen veri miktarını anlamanıza ve sorgunun performansını değerlendirmenize yardımcı olur.

Index Kullanımı: Bitmap Index Scan ve Bitmap Heap Scan gibi ifadeler, index kullanımını gösterir. Hangi indexlerin kullanıldığına ve indexlerin performansının nasıl olduğuna dikkat etmek önemlidir

Heap Blocks (Yığın Blokları) Bilgileri: Heap Blocks değeri, bellek kullanımıyla ilgili bilgi sağlar.

Planning Time (Planlama Zamanı) ve Execution Time (Çalışma Zamanı): Planning Time sorgunun planlama süresini, Execution Time ise sorgunun gerçekleşme süresini gösterir. Bu değerler, sorgunun ne kadar sürede planlandığını ve gerçekleştirildiğini gösterir.

Veri Tipi ve Index Optimizasyonu

SQL’de veri tipleri ve indexlerin doğru bir şekilde kullanılması performansı önemli ölçüde etkileyebilir. Özellikle büyük veri setleriyle çalışırken, doğru veri tipleri seçmek ve gerekli indexleri oluşturmak önemlidir. Veri tipleri ve indexler hakkında daha fazla bilgi edinmek için “Veritabanı Performansını Optimize Etmek: Index Seçimi” yazımı okuyabilirsiniz.

Sonuç

SQL’de sorgu analizi yapmak, veritabanı performansını optimize etmenin kritik bir parçasıdır. EXPLAIN ve EXPLAIN ANALYZE gibi araçlar kullanılarak sorguların çalışma planları incelenebilir ve performans sorunları tanımlanabilir. Ayrıca, veri tipleri ve endekslerin doğru bir şekilde kullanılması da performansı artırabilir. PostgreSQL'de sorgu analizi yaparak, uygulama performansınızı önemli ölçüde artırabilirsiniz.

Yazımı okuduğunuz için teşekkür ederim, umarım sizin için yararlı olmuştur 🙂

İyi Çalışmalar…

Yararlı Olabilecek Kaynaklar

--

--