tempdb ve dizin oluşturma

Oluşturmak veya bir dizin yeniden, SORT_IN_TEMPDB seçeneği on olarak ayarlayarak, yönlendirebilirsiniz SQL Server Veritabanı Altyapısı kullanmak tempdb dizini oluşturmak için kullanılan ara sıralama sonuçlar saklamak.Bu seçenek artırır ancak seçeneği bir dizin oluşturmak için kullanılan geçici disk alanı azaltabilir saat oluşturmak veya bir dizin yeniden oluşturmak için gereken, tempdb bir kullanıcı veritabanı farklı bir disk küme açıktır.Hakkında daha fazla bilgi için tempdb, bkz: tempdb veritabanı.

Dizin oluşturma aşamalarını

Olarak Veritabanı Altyapısı yapılar bir dizin gittiğiyle aşağıdaki aşamaları:

  • The Veritabanı Altyapısı first scans the data pages of the base table to retrieve key values and builds an index leaf row for each data row.İç sıralama arabellekleri yaprak dizin girişleri ile doldurulmuş, girişleri sıralanır ve çalışacak Ara sıralama diske yazılması.The Veritabanı Altyapısı then resumes the data page scan until the sort buffers are again filled.Sıralama ve çalışma tüm satırları kadar devam eder, bir sıralama yazma birden çok veri sayfalarını tarama bu desen arkasından temel tablo işlendi.

    Veri satırlarını yaprak satır dizini kümelenmiş dizin olan tablo; Bu nedenle, ara sıralama çalıştırır tüm veri satırlarını içerir.kümelenmemiş dizin yaprak satır anahtar olmayan sütunlarla içerebilir, ancak genellikle bir kümelenmiş dizin küçüktür.Dizin anahtarlarının büyük veya dizinde içerilen birkaç sütunlarla, kümelenmemiş sıralama çalışma büyük olabilir.Anahtar olmayan sütunlarla dahil olmak üzere hakkında daha fazla bilgi için bkz: Eklenen sütunlar ile dizin oluşturmak.

  • The Veritabanı Altyapısı merges the sorted runs of index leaf rows into a single, sorted stream.Sıralama birleştirme bileşenini, Veritabanı Altyapısı ilk ile başlayan sayfa çalıştırmak, her tür düşük anahtar tümünde bulur sayfas ve dizin satır yaprak geçişleri oluşturma bileşeni.Sonraki en düşük anahtar işlenen ve İleri vb..Son yaprak dizin satır sayfa çalıştırın sıralamanın dışında ayıklanır işlemin bir sonraki sayfa çalıştırın Bu sıralamanın dışında kaydırır.Bir sıralamayı tüm sayfaları çalıştırdığınızda kapsam gerçekleştirilmiş, kapsam serbest bırakılmaz.Her yaprak dizin satır dizini geçirilir gibi bileşen oluşturmak için bir yaprak içinde bulunan dizin sayfa arabelleği.Her yaprak sayfa onu doldurulmuş olarak yazılır.Yaprak sayfalar yazılmış gibi Veritabanı Altyapısı de, üst düzeyde oluştururdizinin. Her üst düzey dizin sayfa dolduğunda da yazılır.

SORT_IN_TEMPDB seçeneği

SORT_IN_TEMPDB olduğunda küme için kapalı, varsayılan sıralama çalıştırır, hedef dosya grubu içinde depolanır.Dizin oluşturma ilk aşamasında, temel tablo sayfa değişen okuma ve yazma sıralama çalıştırır, disk okuma/yazma kafalarını disk bir alandan diğerine taşıyın.Veri sayfaları tarama kafalarını veri sayfa alanında değildir.Bunlar sıralama arabellekleri doldurun ve çalıştırmak geçerli sıralama disk ve Tablo sayfa taraması devam gibi veri sayfa alanına geri taşımak için yazılması gereken boş alan bir alana taşıyın.Okuma/yazma kafa hareketini ikinci büyük aşamasındadır.AT, saat sıralama işlemi genellikle her sıralama alanı çalıştırın gelen okur değişen.Hem sıralama çalıştırır ve yeni dizin sayfaları hedef dosya grubu içinde yerleşiktir.Bu aynı anda anlamına saat Veritabanı Altyapısı okuma yayılmasını düzenli olarak bunlar doldurulmuş olarak yeni dizin sayfaları yazmak için dizin kapsam atlamak sahip sıralama çalıştırır arasında.

SORT_IN_TEMPDB seçenek ise küme açık ve tempdb ayrı bir ise küme ilk aşamasında, hedef dosya grubu disklerden biri veri sayfaları okuma farklı bir disk üzerinde yazma hızı için sıralama çalışma alanında ortaya tempdb.Yani disk okuma veri anahtarları genellikle devam daha seri olarak disk ve yazma işlemleri boyunca tempdb disk de genellikle seri son dizin yazma gibi.Diğer kullanıcılar veritabanını kullanarak ve adresleri ayrı diske erişirken bile, okuma ve yazma genel desenini daha verimli olmadığında SORT_IN_TEMPDB dan belirtildiğinde.

Özellikle create INDEX işlemi paralel olarak sürüp değil, SORT_IN_TEMPDB seçeneği dizin kapsamlarını, contiguity artar.Sıralama çalışma alanları ile ilgili veritabanı içindeki konumlarına biraz rasgele aralıklarla serbest bırakılan alanı.Sıralama çalışma alanları serbest olarak sıralama çalışma alanları hedef dosya grubu içinde yer alır, istekleri için dizin yapısını, yerleşik olarak tutmak kapsam olarak edinilebilir.Bu bir ölçüde dizin kapsamlarını konumlarını rastgele seçmek.Sıralama alanları ayrı ayrı söz tutulur, tempdb, içinde bunlar serbest sıra dizin kapsamlarını konumu üzerinde hiçbir etkisi.Ayrıca, ara sıralama çalıştırıldığında depolanmış olan tempdb hedef dosya grubu yerine yok daha fazla yer hedef dosya grubu.Bu dizin kapsamlarını bitişik olması olasılığını artırır.

SORT_IN_TEMPDB seçeneği yalnızca geçerli deyim etkiler.Dizin veya değildi hiçbir meta veriler kaydı içindeki sıralanmış tempdb.Örneğin, SORT_IN_TEMPDB seçeneğini kullanarak kümelenmemiş bir dizin oluşturursanız ve daha sonra bir saat seçeneği belirtmeden bir kümelenmiş dizin oluşturma Veritabanı Altyapısı , onu yeniden oluşturur seçeneğini kullanınkümelenmemiş dizin.

Not

Sıralama işlemi gerekli değilse veya sıralama bellekte gerçekleştirilen kullanılabilir, SORT_IN_TEMPDB seçeneği gözardı edilir.

Disk alanı gereksinimleri

Zaman, küme SORT_IN_TEMPDB seçeneği açık, kullanılabilir durumda yeterli boş disk alanı olması gerekir tempdb Ara sıralama çalıştırır ve yeterli boş disk alanı yeni dizin tutmak için hedef dosya grubu içinde tutmak için.Boş alanı yetersiz ve veritabanları olamaz hiçbir disk alanı gibi daha fazla yer almaya otomatik büyüme herhangi bir nedenle veya olduğundan otomatik büyüme varsa, create INDEX deyim başarısız küme kapalı.

SORT_IN_TEMPDB, küme için kapalı, kullanılabilir boş disk alanı hedef filegroup kabaca son dizinin boyutunu olmalıdır.İlk aşamasında, sıralama çalıştırır yerleşiktir ve hakkında son dizin aynı miktardaki alanı gerektirir.Her sıralama ikinci aşamasında çalışan kapsam işlendikten sonra serbest bırakılmaz.Bu sıralama çalıştırmak kapsamlarını en son dizin sayfaları tutmak için kapsam alınan kuru aynı hakkında serbest bırakılan olduğunu anlamına gelir; Bu nedenle, toplam alan gereksinimi büyük ölçüde son dizinin boyutunu aşamaz.Bu bir yan etkisi olup, boş alan miktarını çok son dizinin boyutunu yakın olan Veritabanı Altyapısı genellikle serbest bırakılan sonra kapsamlarını çok hızlı çalıştırma sıralama yeniden.Biraz rasgele bir şekilde kapsamlarını çalıştırmak sıralama serbest olduğundan, bu dizin kapsamlarını Bu senaryoda, süreklilik azaltır.SORT_IN_TEMPDB off için küme ise, varsa yeterli boş alan bulunan bir bitişik havuzundan yerine kapsamlarını çalıştırmak freshly deallocated sıralama gelen dizin kapsamlarını tahsis hedef dosya grubu dizin kapsamlarını, süreklilik artırıldı.

kümelenmemiş dizin oluşturduğunuzda, kullanılabilir boş alan olarak sahip olmalısınız:

  • SORT_IN_TEMPDB, küme , on bulunması yeterli boş alan miktarını tempdb sıralamanın çalışan depolama ve hedef dosya grubu son dizin yapısını depolamak için yeterli boş alan.Sıralama çalıştırır yaprak satır dizini içeriyor.

  • SORT_IN_TEMPDB off için küme ise, boş alanı, hedef dosya grubu son dizin yapısını depolamak için yeterli büyüklükte olması gerekir.Süreklilik dizinin Mayıs genişletiyor daha fazla boş alan olup olmadığını geliştirilmiş.

Üzerinde kümelenmiş dizin oluşturduğunuzda bir tablo kümelenmemiş dizinler yok, kullanılabilir boş alan olması gerekir:

  • SORT_IN_TEMPDB, küme , on bulunması yeterli boş alan miktarını tempdb sıralama depolamak için çalışır.Veri satırları bunlar tablo.Son dizin yapısını depolamak için hedef dosya grubu yeterli boş alan olmalıdır.Bu tablo ve B-ağacı dizin veri satırlarını içerir.Büyük anahtar boyutunu veya doldurma faktörü düşük bir değere sahip olması gibi Etkenler için tahmini ayarlamanız gerekebilir.

  • SORT_IN_TEMPDB off için küme ise, boş alanı, hedef dosya grubu son tablo depolamak için yeterli büyüklükte olmalıdır.Bu dizin yapısını içerir.Daha fazla boş alan varsa, tablo ve dizin kapsamlarını süreklilik iyileştirilebilir.

kümelenmiş dizin tablo üzerinde oluşturduğunuzda olan kümelenmemiş dizinleri, kullanılabilir boş alan olması gerekir:

  • SORT_IN_TEMPDB, küme , on bulunması yeterli boş alan miktarını tempdb tüm dizinleri son yapılar depolamak için hedef filegroup en büyük dizin, genellikle kümelenmiş dizin ve yeterli boş alan için sıralama çalıştırır koleksiyonu depolamak için.Bu veri satırı içeren kümelenmiş dizin içerir tablo.

  • SORT_IN_TEMPDB off için küme ise, boş alanı, hedef dosya grubu son tablo depolamak için yeterli büyüklükte olmalıdır.Bu yapıların tüm dizinleri içerir.Daha fazla boş alan varsa, tablo ve dizin kapsamlarını süreklilik iyileştirilebilir.