Sayfaları okuma

G/Ç gelen bir örnek , SQL Server Veritabanı Altyapısı içeren mantıksal ve fiziksel okuma.Mantıksal okuma her saat ortaya Veritabanı Altyapısı isteklerini bir sayfa dan arabellek önbelleği.Sayfa şu anda arabellek önbellekte yer alıyorsa, fiziksel bir ilk kopya sayfanın diskten önbelleğine okuyun.

' In örnek tarafından üretilen okuma istekleri Veritabanı Altyapısı ilişkisel altyapısı tarafından denetlenen ve tarafından en iyi hale getirilmiş depolama motoru.ilişkisel altyapı (Örneğin, bir tablo taraması, dizin tarama veya anahtarlı bir okuma); en etkili erişim yöntem belirler. erişim yöntemleri arabellek Yöneticisi bileşenleri depolama motoru'nın okumalar gerçekleştirmek için genel desenini belirlemek ve erişim yöntem uygulamak için gerekli okuma işlemleri en iyi duruma getirme.Toplu iş yürütme iş parçacığı okuma zamanlar.

İleri okuma

The Veritabanı Altyapısı supports a performance optimization mechanism called read-ahead.İleri okuma sorgu yürütme planı yerine getirmek için gerekli veri ve dizin sayfaları karşı hazır ve sorgu tarafından kullanılan aslında önce sayfaları arabellek önbelleğine getirir.Bu hesaplama ve g/Ç örtüşmesi için cpu ve disk tam yararlanmasını sağlar.

İleri okuma mekanizması sağlar Veritabanı Altyapısı okumak en çok 64 bitişik sayfalarından (512 kb) bir dosya.Okuma, bir tek dağıtma-(büyük olasılıkla bitişik olmayan) arabellek arabellek önbelleğinde uygun sayıda okuma toplama olarak gerçekleştirilir.Sayfaları varsa aralık olan okuma tamamlandığında zaten var arabellek önbelleği, okuma karşılık gelen sayfadan atılacaktır.Sayfa aralık da "kesileceği" ilgili sayfaları zaten ya da sondan önbellekte mevcutsa.

İleri okuma iki tür vardır: veri sayfaları ve dizin sayfaları için bir.

Veri sayfaları okuma

Tablo taramaları sayfaları içinde çok etkili veri okumak için kullanılan Veritabanı Altyapısı.Dizin ayırma Haritası (IAM), sayfaları bir SQL Server veritabanı liste kapsamları kullanılan bir tablo veya dizin.depolama motoru okumak zorunda disk adreslerinin sıralı bir listesini oluşturmak için IAM okuyabilirsiniz.Bu disk üzerindeki konumlarına göre sıralı gerçekleştirilen büyük sıralı okuma olarak, g/ç işlemleri en iyi duruma getirmek depolama motoru sağlar.IAM sayfalar hakkında daha fazla bilgi için bkz: Nesneleri tarafından kullanılan alanı yönetme.

Dizin sayfaları okuma

depolama motoru, dizin sayfaları anahtar sırayla seri olarak okur.Örneğin, bu resimde bir Basitleştirilmiş gösterimi anahtarları ve yaprak sayfalar eşleme Ara dizin düğümü küme içeren bir dizi yaprak sayfaları gösterilmektedir.Sayfaları bir dizin yapısı hakkında daha fazla bilgi için bkz: Kümelenmiş dizin yapıları.

Ara dizin düğümü, anahtara göre yaprak sayfalarını eşleştirir

depolama motoru seri okuma ileriye anahtarları içeren sayfaları için zamanlamak için yukarıda yaprak düzey Ara dizin sayfa bilgileri kullanır.Bir istek için tüm anahtarlar abc def için yapılması durumunda, depolama motoru ilk okur dizin sayfası yaprak sayfa üstünde.Ancak, bunu hemen her veri sayfa sıralı 504 sayfadan sayfa 556 okumaz (anahtarları belirtilen son sayfadan aralık).Bunun yerine, depolama motoru Ara dizin sayfa tarar ve okumak zorunda yaprak sayfalar listesi oluşturur.depolama motoru, anahtar sırayla tüm okuma sonra zamanlar.depolama motoru da 504/505 ve 527 sayfalarını tanır/528 bitişik ve bitişik sayfaları tek bir işlemle almak için okunur tek bir dağılım gerçekleştirir.Seri bir işlemde alınması için birçok sayfa olduğunda, depolama motoru okuma bloğunu zamanlar bir saat.alt küme küme küme kümesini bu okuma tamamlandığında, depolama motoru kadar gerekli tüm okuma işlemleri planlanan yeni okuma eşit sayıda zamanlar.

depolama motoru Kümelenmemiş dizinleri hızı temel tablo aramalar için prefetching kullanır.kümelenmemiş dizin yaprak satırlarının her özel anahtar değeri içeren veri satırları için işaretçiler içerir.depolama motoru kümelenmemiş dizin yaprak sayfaları arasında okur gibi zaman uyumsuz okuma, işaretçiler zaten alınan veri satırları için zamanlama da başlar.Böylece, temel alınan veri satırlarını almak depolama motoru temel alınan tablo önce kümelenmemiş dizin taramayı tamamladı.Prefetching tablo kümelenmiş dizin olan bağımsız olarak kullanılır.SQL ServerKurumsal kullanan diğer sürümleri daha fazla prefetching SQL Server, daha fazla sayfaların önceden okuma.düzey Prefetching herhangi bir sürümündeki yapılandırılamaz.Kümelenmemiş dizinler hakkında daha fazla bilgi için bkz: Kümelenmemiş dizin yapıları.

Gelişmiş Tarama

De SQL Server kuruluş, Gelişmiş tarama özelliğini sağlayan birden çok görevi paylaşmak tam tablo taramaları.Yürütme, düşünüyorsanız, bir Transact-SQL deyim tablo veri sayfalarında bir tarama gerektirir ve Veritabanı Altyapısı , tablo zaten başka bir yürütme planı için taranan olduğunu algılar Veritabanı Altyapısı için birinci, ikinci tarama katılır ikinci bir tarama geçerli konumdaThe Veritabanı Altyapısı reads each page one time and passes the rows from each page to both execution plans.Bunu sonuna kadar devam tablo ulaşıldı.

Bu noktada ilk yürütme planı tam sahip sonuçlar tarama ancak ikinci yürütme planı hala devam eden tarama katılmanızdan önce okunan veri sayfaları almak gerekir.İkinci yürütme planı tarama sonra sarar ilk veri sayfa tablo taramaları ve iletmek için burada da katılan ilk tarama.Herhangi bir sayıda taramaları gibi birleştirilebilir.The Veritabanı Altyapısı will keep looping through the data pages until it has completed all the scans.Bu mekanizma "Tarama merry-go-round" de denir neden gösterir sırasını sonuçlar iade bir deyim bir order by yan tümce tümce tümce garanti edilemez.

Örneğin, 500.000 sayfaları içeren bir tablo olduğunu varsayalım.UserA yürütür bir Transact-SQL taranmasını gerektiren deyimni tablo.Bu tarama 100.000 sayfa işlendiğinde başka UserB yürütür Transact-SQL deyim tarar, aynı tablo.The Veritabanı Altyapısı schedules one set of read requests for pages after 100,001, and passes the rows from each page back to both scans.Tarama 200,000th sayfa eriştiğinde, UserC başka yürütür Transact-SQL deyim tarar, aynı tablo.Bir sayfanın 200,001, Veritabanı Altyapısı geçirmeden satırları okur dön her sayfatüm üç taramaları. 500,000Th satır okuduktan sonra UserA tarama tamamlanır ve UserB ve UserC taramalarda geri sarma ve sayfa 1 başlangıç sayfaları okumaya başlayın.Zaman Veritabanı Altyapısı için UserB Tamamlandı sayfa için 100.000, tarama alır.200.000 Sayfa okur kadar tarama UserC sonra tek başına gittiği tutar.Bu noktada, tüm taramaları tamamlanmış olacaktır.

Gelişmiş Tarama olmadan, her kullanıcı için arabellek alanı rekabet ve disk kol çekişme neden etmesi gerekir.Aynı sayfa sonra kez okuma yerine her kullanıcı için okuduğunuz saat ve performansı yavaşlatan ve kaynakların yükünü artırmasının tersine birden çok kullanıcı tarafından paylaşılan.