Aracılığıyla paylaş


tempdb ve dizin oluşturma

Oluşturduğunuzda veya bir dizini yeniden oluşturmak için ON SORT_IN_TEMPDB seçeneği ayarlayarak, yönlendirebilirsiniz SQL Server Database Engine kullanmak için tempdb dizin oluşturmak için kullanılan ara sıralama sonuçlar saklamak.Bu seçenek, dizin oluşturmak için kullanılan geçici disk alanı miktarını artırır, ancak seçenek oluşturmak veya bir dizini yeniden oluşturmak için gereken zamanı azaltabilir, tempdb bulunduğu bir küme kullanıcı veritabanı farklı bir disk.Daha fazla bilgi için tempdb, see tempdb veritabanı.

Dizin oluşturma aşamalarını

Olarak Database Engine yapılar'in bir dizin, aşağıdaki aşamalardan geçer:

  • The Database Engine first scans the data pages of the temel tablo to retrieve anahtar values and builds an index yaprak row for each data row. Yaprak dizin girdileriyle iç sıralama arabellekleri dolu olduğunda, girişler sıralanmış ve çalıştırmak ara sıralama diske yazılır.The Database Engine then resumes the data sayfa scan until the sort buffers are again filled. Sıralama ve çalışma tüm satırları temel kadar devam eder, bir sıralama yazma bu desen, birden çok veri sayfaları taramanın ardından tablo işlendi.

    kümelenmiş dizin içinde dizin yaprak satırlarının tabloya veri satırları; bu nedenle, ara sıralama çalıştırır, tüm veri satırlarına içerir.Kümelenmemiş bir dizin yaprak satırları anahtar olmayan sütunlar içerebilir, ancak genellikle bir kümelenmiş dizin küçüktür.Dizin anahtarlarının büyük veya dizinde bulunan birkaç anahtar olmayan sütunlar vardır, kümelenmemiş sıralama bir çalışma büyük olabilir.Anahtar olmayan sütunları da dahil olmak üzere daha fazla bilgi için bkz: Içerilen sütunlar ile dizinleri oluşturma.

  • The Database Engine merges the sorted runs of index yaprak rows into a single, sorted stream. Sıralama birleştirme bileşeninin Database Engine ilk çalıştırdığınızda, her bir sıralama sayfa ile başlayan tüm sayfalarında en alt anahtar bulur ve satır dizine yaprak geçiş bileşen oluşturmak. Sonraki en düşük anahtar işlenir, ardından sonraki ve böyle devam eder.Yaprak dizinin son satırı sayfa çalıştırın sıralama ayıklanır, işlemi çalıştırmak, sıralama sonraki sayfa kaydırır.Tüm sayfaları uzantısı'nı çalıştırmak için bir sıralama işlendiğinde, kapsam serbest.Her yaprak dizin satır geçirilir gibi bileşeni için dizin oluşturma, arabellekte bir yaprak dizin sayfa bulunur.Dolu gibi her bir yaprak sayfa yazılır.Yaprak sayfaları yazma gibi Database Engine Ayrıca üst düzeyde bir dizin oluşturur. Her bir üst düzey dizin sayfa dolduğunda, yazıldı.

SORT_IN_TEMPDB seçeneği

Sıralama çalıştırır, SORT_IN_TEMPDB KAPALı, varsayılan olarak ayarlandığında hedef dosya grubu depolanır.Dizin oluşturma ilk aşamasında, temel tablo sayfa farklı olan okuma ve yazma'nın sıralama çalıştırır, disk okuma/yazma kafaları diskin bir alandan diğerine taşıyın.Veri sayfaları taranıp gibi kafaları veri sayfa alanında ' dir.Bunlar, sıralama arabellekleri doldurun ve çalıştırma geçerli sıralama disk ve tablo sayfa tarama devam gibi veri sayfa alanına gitmenizi yazılacak olan boş alanın bir alanına taşıyın.Kafa okuma/yazma hareketi ikinci evrede daha büyük.Saat, saat sıralama işlemi genellikle okumalar her bir sıralama alanı'nı çalıştırma'den geçiş yapma.Sıralama çalışan hem de yeni dizin sayfalar hedef dosya grubu yerleşiktir.Aynı anda yani saat Database Engine Okuma yayılmasını sıralama çalışır, bunlar doldurulmuş olarak yeni bir dizin sayfalar yazmak için dizin kapsamları için belirli aralıklarla atlamak sahip.

SORT_IN_TEMPDB seçenek küme açık ve tempdb ayrı bir olan küme hedef dosya grubunu, ilk aşamasında, disklerden biri okuma veri sayfalarının farklı bir diskte yazma hızı sıralama çalışma alanına oluşurtempdb.Yani Veri anahtarların disk okuma genellikle daha seri olarak için yazma ve diski üzerinde devam tempdb disk de verilmiştir genellikle seri son dizinin yazma işlemleri yapın:Diğer kullanıcıların veritabanını kullanarak ve ayrı bir disk adresleri erişme bile, okuma ve yazma genel desenini daha verimli, olmadığında SORT_IN_TEMPDB daha belirtildiğinde.

Özellikle CREATE INDEX işlemi paralel işlenmekte olan değil, SORT_IN_TEMPDB seçeneği, dizin kapsamlarını, contiguity artırabilir.Sıralama alanı ile için veritabanı konumlarında biraz rasgele olarak serbest kapsamlarını çalışır.Sıralama çalışma alanları, sıralama iş kapsamlarını serbest olarak hedef dosya grubu içerdiği, bunlar için dizin yapısı, yerleşik olarak tutulacağı kapsamlarını istekleri tarafından kazanılması.Bu, bir derece için dizin kapsamlarını konumlarını randomize.Varsa, sıralama alanları ayrı ayrı da tutulur. tempdb, bunlar serbest sıra dizin kapsamlarını konumu üzerinde hiçbir etkisi vardır.Ayrıca, zaman ara sıralama çalışır saklanır tempdb hedef dosya grubu yerine kullanılabilir daha fazla alanı hedef dosya grubunu.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.Hiçbir meta veriler kaydı dizin veya içinde sıralanmıştır. tempdb.Örneğin, SORT_IN_TEMPDB seçeneğini kullanarak bir kümelenmemiş dizin oluşturursanız ve daha sonra bir kümelenmiş dizin, seçeneği belirtmeden oluşturmak Database Engine kümelenmemiş dizin onu yeniden oluşturur, bu seçeneği kullanmaz.

Not

Bir sıralama işlemi gerekmiyorsa veya sıralama, belleğe gerçekleştirilemez, 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ı olmalıdır. tempdb Orta sıralama çalışır ve yeterli boş disk alanı, hedef dosya grubu yeni dizin tutulacağı tutulacağı.CREATE INDEX deyimini yeterli boş alan ve gibi boşluk disketi veya otomatik büyüme off olarak küme, veritabanlarının, daha fazla yer almaya otomatik büyüme edemiyor herhangi bir nedenle başarısız olur.

SORT_IN_TEMPDB ise küme için OFF, hedef dosya grubu kullanılabilir boş disk alanı yaklaşık son dizin boyutunu olması gerekir.Ilk aşamasında, sıralama çalışır yerleşiktir ve aynı büyüklükte alan son dizin olarak hakkında gerektirir.Bu işlem, sonra ikinci evre sırasında kapsam çalışması için her sıralama serbest.Bu sıralama çalıştırmak kapsamlarını en, en son dizin sayfaların tutulacağı en kapsamlarını alınan; bu nedenle, toplam boş alan gereksinimleri büyük ölçüde son dizin boyutunu aşmamasını kuru aynı serbest olduğunu gösterir.Boş alan miktarını çok yakın boyutu dizinin son bu bir yan etkisi, ise Database Engine genellikle kapsamlarını serbest sonra çok hızlı bir şekilde çalıştırmak sıralama yeniden. Kapsamları çalıştırmak sıralama serbest olduğundan biraz rasgele bir şekilde, bu dizin kapsamlarını Bu senaryoda, süreklilik azaltır.SORT_IN_TEMPDB ise küme havuzundaki bir bitişik yerine çalıştırma freshly deallocated sıralama alanları arasında dizin kapsamlarını ayrılmış hedef dosya grubu için kullanılabilir yeterli boş alan varsa için OFF, dizin uzantılardan biri süreklilik artırıldı.

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

  • SORT_IN_TEMPDB ON olarak ayarlanmışsa, olmalıdır, yeterli boş alan tempdb sıralama çalıştırır ve yeterli boş alan, son dizin yapısını depolamak için hedef dosya grubu içinde saklamak için.Sıralama çalıştırır, dizinin yaprak satırları içerir.

  • SORT_IN_TEMPDB ise küme için OFF, hedef dosya grubu boş alanın son dizin yapısını depolamak için yeterli büyüklükte olması gerekir.Dizinin süreklilik Mayıs genişletir daha fazla boş alan olup olmadığını artırıldı.

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

  • SORT_IN_TEMPDB ise küme, ON olmalıdır, yeterli boş alan tempdb sıralama depolamak için çalışır.Bunlar, veri satırlarından tablo.Son dizin yapısını depolamak için hedef dosya grubu yeterli boş alan olmalıdır.Bu veri satırlarını içeren tablo ve B-ağacı dizin.Tahmin için doldurma faktörü düşük bir değere sahip ya da büyük bir anahtar boyutu gibi etkenler ayarlamanız gerekebilir.

  • SORT_IN_TEMPDB ise küme için OFF, hedef dosya grubu boş alanın son tablo depolamak için yeterli büyüklükte olması gerekir.Bu dizin yapısını içerir.Daha fazla boş alan varsa, tablo ve dizin kapsamlarını süreklilik geliştirilmiş.

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

  • SORT_IN_TEMPDB ON olarak ayarlanmışsa, olmalıdır, yeterli boş alan tempdb en büyük dizin, genellikle kümelenmiş dizin ve hedef dosya grubu tüm dizinlerin son yapıların depolamak için yeterli boş alan sıralama topluluğunu saklamak için çalışır. Bu veri satırı içeren kümelenmiş dizin içeren tablo.

  • SORT_IN_TEMPDB ise küme için OFF, hedef dosya grubu boş alanın son tablo depolamak için yeterli büyüklükte olması gerekir.Bu, tüm dizinlerin yapıları içerir.Daha fazla boş alan varsa, tablo ve dizin kapsamlarını süreklilik geliştirilmiş.