Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan veritabanı yönetim sistemleri hakkında kapsamlı bir eğitim serisidir.
- Video, veritabanı sorgularının nasıl çalıştırıldığını adım adım anlatarak başlıyor ve ardından sorgu optimizasyonu konusuna geçiyor. İçerik, sorguların parsellenmesi, ilişkisel cebir ile çevrilmesi, optimizasyonu, execution plan oluşturulması ve veri motoru tarafından çalıştırılması aşamalarını kapsamaktadır. Daha sonra Biquery veritabanı yaklaşımı, sorgu maliyetlerinin ölçülmesi, sıralama algoritmaları ve farklı join operasyonları (nested loop join, block nested loop join, index nested loop join, merge birleştirme ve hash özetleme join) detaylı olarak ele alınmaktadır.
- Eğitim serisi, veritabanı işlemlerinde RAM kullanımı ve disk işlemleri arasındaki dengenin önemini vurgulamakta ve pipelineing kavramı ile demand driven ile producer driven yaklaşımları da açıklamaktadır. Video, bir serinin parçası olup, bir sonraki videoda sorguların iyileştirilmesi ve uygulama eğitimlerinin başlayacağı belirtilmektedir.
- 00:13Sorguların Çalıştırılması Video Hakkında
- Bu video, sorguların nasıl çalıştırıldığı konusunu anlatmaktadır.
- Bazı üniversitelerde müfredatlarda bu konu anlatılmamakla birlikte, kitabın müfredatında yer almaktadır.
- Sorguların nasıl çalıştırıldığı bilgisi, daha başarılı ve performanslı sorgu yazılmasını sağlar.
- 01:01Video İçeriği ve Amacı
- Bu video, sorguların arka planda hangi aşamalardan geçip çalıştığını anlatmaktadır.
- Bir sonraki videoda sorguların nasıl optimize edilebileceği ve veritabanı yönetim sistemlerinin neler yaptığından bahsedilecektir.
- Veritabanı yönetim sistemleri, sorguların daha verimli çalıştırılması için optimizasyon yaparak yardımcı olmaktadır.
- 01:48Sorguların Ölçülmesi ve Optimizasyonu
- Bir sorgunun çalıştırılması, optimize edilmesi veya veritabanı yönetim sistemi tarafından kontrol altında tutulabilmesi ölçme ile mümkündür.
- Her sorgu aynı hızda ve verimde çalışmaz, bu nedenle daha verimli hale getirmek için çeşitli yöntemler kullanılır.
- Video, selection işlemleri, join işlemleri, birleştirme işlemleri, sorting ve expression'ların çalıştırılması gibi konuları ele alacaktır.
- 03:00Sorgu Çalıştırma Süreci
- Bir sorgu yazıldığında, öncelikle parser tarafından parçalara bölünür ve her parçanın karşılığı olan anlam ifade edilir.
- Parser, SQL cümlelerinin söz dizimini (syntax) anlar ve hataları tespit edebilir.
- Parser, yazılan sorguyu ilişkisel cebir (relation algebra) olarak çevirir.
- 04:52Optimizasyon ve Execution Plan
- Her ilişkisel cebir çevrilen sorgu verimli olmayabilir, bu nedenle optimizasyon işlemi gereklidir.
- Optimizer, sorguyu kontrol ederek hataları düzeltir ve en verimli çalışabileceği execution plan (çalıştırma planı) oluşturur.
- Execution plan, hangi işlemlerin hangi sırayla yapılacağını belirler ve bu plan daha sonra veritabanı motoru tarafından çalıştırılır.
- 06:52Veritabanı İşleminin Tamamlanması
- Veritabanı motoru, verileri diskten veya RAM'den toplayarak çalıştırma planına uygun şekilde sonuçları üretir.
- Veritabanının işi, bir sorgu ile başlayıp, üretilen bir outputla bitmektedir.
- Sorgu çalıştırma süreci; cümlenin anlaşılması, ilişkisel cebir olarak çevrilmesi, optimizasyon, execution plan üretimi ve verilerin çalıştırılması aşamalarından geçmektedir.
- 08:14Veritabanı Sorgularının Çalıştırılması
- Biquery'nin klasik veritabanı yaklaşımı ile nasıl çalıştırıldığı anlatılmıştır.
- Akademik veri tabanından maaşı 75 bin doların üstünde olan hocaların seçilmesi için iki farklı sorgu yöntemi gösterilmiştir.
- İlk yöntemde önce hocaların maaşları çekilip sonra 75 binin üzerinde olanlar seçilirken, ikinci yöntemde önce 75 binin altında maaş alan hocalar seçilip sonra sadece maaşları gösterilir.
- 09:48Sorgu Optimizasyonu
- Bir sorgunun çalıştırılması için birden fazla alternatif sunulabilir, ancak hangisinin daha iyi olduğu objektif kriterlere göre değerlendirilmelidir.
- Sorgu optimizasyonunda, hangi algoritmanın daha iyi çalışacağını ölçebilecek bir yöntem geliştirilmelidir.
- Sorguların maliyetlerinin ölçülmesi gerekir; örneğin bir yöntemle çalıştırıldığında maliyet 10 lira, diğer yöntemle 20 lira olabilir.
- 10:55Sorgu Maliyetleri
- Sorgu maliyetleri zaman, disk erişimi, CPU çalışma zamanı ve network maliyeti olarak bölünebilir.
- Number of searches (aranan kayıt sayısı), number of blocks read (okunan blok sayısı) ve number of blocks write (yazılan blok sayısı) gibi faktörler maliyeti etkiler.
- Bir bloğun transferi için gereken maliyet (TT), arama maliyeti (TSL), blok maliyeti ve cache maliyeti gibi faktörler bir araya getirilerek toplam maliyet hesaplanır.
- 12:59CPU Maliyetleri
- Gerçek sistemlerde CPU işlemlerinin maliyeti de hesaba katılır, ancak bu ders kapsamında CPU maliyetleri yok sayılacaktır.
- Sıkıştırma algoritmaları, şifreleme, resim ve video gibi özel tip verilerin işlenmesi gibi durumlarda CPU zamanı çok yüksektir.
- Sıralama algoritmaları özel algoritmalardır çünkü bir şeyleri sıralayabilmek için bütün veriye ihtiyaç vardır.
- 14:44Veritabanı Sıralama İşlemleri
- Veritabanında sıralama işlemi problemli olabilir çünkü tüm veritabanını aynı anda RAM'e yüklemek mümkün değildir.
- Büyük join'lerin olduğu durumlarda parçalı fethet (divide and conquer) yaklaşımı kullanılır, bu yaklaşım problemi küçük parçalara bölerek çözer.
- External mergesort (hariçte sıralama) en klasik ve literatürde çokça bilinen bir sıralama yaklaşımıdır.
- 15:28External Mergesort Algoritması
- External mergesort'ta diskten RAM'e m tane blok okunur, bu bloklar kendi içinde sıralanır ve tekrar diske yazılır.
- Her bir bloğun kendi içinde sıralanması ve sonra bu blokların birleştirilmesi işlemi yapılır.
- Birleştirme işlemi sırasında her bloktan en üstteki elemanlar alınıp birleştirilerek yeni bir blok oluşturulur.
- 16:52External Mergesort'un Maliyeti
- External mergesort logaritmik olarak çalışır çünkü problemi küçük parçalara böler.
- n tane elemanı sıralamak için log n tane merge işlemi yapılması gerekir.
- Örneğin, 500 kayıt 20 blok boyutunda ise 25 blok oluşur ve log 2 tabanında 25 yaklaşık 5'e eşittir, bu da 5 birleştirme işlemi anlamına gelir.
- 18:44External Mergesort'un Özellikleri
- External mergesort oldukça faydalı bir sıralama algoritmasıdır ve RAM'i sınırlı kullandığımız için daha hızlı çalışır.
- Amacımız hafızayı doldurmadan hafızanın limitleri dahilinde sıralama işlemi yapabilmektir.
- External mergesort'un özelliği verinin bir kısmının diskte tutulabilmesi ve dış (RAM dışında) sıralanmasıdır.
- 20:15Join Operasyonları
- Join operasyonları, farklı veritabanlarındaki kayıtları birleştirmek için kullanılır.
- En basit join operasyonu kartezyen çarpımıdır, yani her elemanın diğer kümedeki her elemanla birebir eşleşmesi durumudur.
- Örneğin, 100 eleman ve 100 eleman varsa join yapıldığında 10.000 eleman çıkacaktır.
- 20:46Join Algoritmaları
- Farklı join algoritmaları incelenecek: nested loop, block nested join, index nested loop, merge birleştirme ve hash özetleme joinleri.
- Örnek olarak student relation'da 5000 kayıt, number of flox relation'da 100 kayıt bulunuyor.
- Nested loop join'de R'den bir tuple alınıp S'deki tüm tuple'larla eşleştiriliyor, sonra R'den ikinci tuple alınıp S'deki tüm tuple'larla eşleştiriliyor.
- 21:52Nested Loop Join Özellikleri
- Outer join ve inner join yapıları kullanılabilir, outer join'de karşılığı olmayan elemanlar NULL olarak yazılır.
- Inner join'de iki tarafta da aynı eleman tipinden bulunmak zorundadır.
- Nested loop join'de R'den alınan bir tuple S'deki tüm tuple'larla karşılaştırılır, karşılığı yoksa o tuple atılır.
- 22:49Nested Loop Join Performansı
- Nested loop join hem performans açısından hem de hafıza açısından problemli bir durumdur.
- Outer join relation kurulduğunda 5000 x 400 + 100 = 2.100.000 maliyet getirir.
- Block nested loop'ta blok blok bilgi alınır ve blok içindeki tuple'lar karşılaştırılır.
- 23:32Block Nested Loop ve Index Nested Loop
- Block nested loop'ta R'den bir blokluk bilgi alınır, blok içindeki 500 tuple ile S'den alınan 500 tuple karşılaştırılır.
- Index nested loop'ta indeks üzerinden veri bulunur ve bu veri ile diğer relation'daki veri birleştirilerek join oluşturulur.
- Index nested loop'un maliyeti nested loop join'den farklı değildir, sadece indeks üzerinden erişim sağlanır.
- 26:47Hash Join ve Pipeline
- Hash join'de veriler sıralanırken hash yapısının üzerinden sıralama yapılabiliyor.
- Hash join, tekrarları azaltmak ve karşılığı olmayan değerleri elimine etmek için kullanılır.
- Pipeline, işlemi parçalara bölerek bir işlemi yaparken diğer işlemi başka bir blok için yapabilme özelliğidir.
- 28:41Pipeline Yaklaşımları
- Pipeline'in kullanılma şekilleri demand driven (çekme yapısı) ve producer driven (itme yapısı) olmak üzere iki farklı yaklaşım vardır.
- Demand driven'de pipeline ihtiyaç oldukça ilerler, producer driven'de ise arkadan itilerek ilerler.
- Bir sonraki videoda sorguların iyileştirilmesi, çalıştırma yöntemleri ve evrim planları anlatılacak.