Dizinleri yeniden oluştururken sort_in_tempdb ne zaman kullanılır?


22

DW tablolarımız için SORT_IN_TEMPDB seçeneğinin kullanılıp kullanılmayacağını tartışıyoruz. Anladığım kadarıyla, bu seçeneği kullanırken daha sıralı olmalarına rağmen daha fazla yazma olduğu. Zaman zaman çok yavaş davranan bir SAN'ımız var, bu nedenle bizim durumumuzda yazma sayısını mümkün olduğunca sınırlamak istiyoruz. Tempdb'nin ayrı bir LUN (disk takımı) üzerinde olduğuna inanıyorum.

Veri dosyamızda ve tempdb dosyamızda bol miktarda disk alanı var. Bu durumda, SORT_IN_TEMPDB kullanmaktan faydalanabilir miyiz?

Beni vuran tek şey bu cevap üzerine yorum yapıldı.

Bir dizini yeniden oluştururken, sıralama için dizinin% + 20'sinin iki katı boşluk gerekir. Genel olarak, db'nizdeki her dizini yeniden oluşturmak için DB'nizdeki en büyük dizininizin yalnızca% 120'sine ihtiyacınız var. SORT_IN_TEMPDB kullanıyorsanız, sadece% 20 kazanırsınız, yine de veri dosyanızda bir% 100'e ihtiyacınız vardır. Dahası, sortd öğesini tempdb'de kullanmak, IO yükünüzü büyük ölçüde artırır, çünkü dizini bir kez veri dosyasına yazmak yerine, şimdi bir kez tempdb'ye yazıp ardından veri dosyasına yazarsınız. Yani bu her zaman ideal değildir.

Yavaş / muhtemelen yanlış yapılandırılmış SAN'ımızla IO yükümüzü kesinlikle artırmak istemiyoruz.

Bunu test etmenin en iyi yolu ne olurdu? Seçeneği olan ve olmayan tabloyu yeniden inşa ederek ve zaman günlüğü?

Düzenleme : Her biri 15GB olan 8 tempdb dosyamız var. TF 1117/1118 bayrakları ayarlandı ve IFI etkinleştirildi. Şu anda sort_in_tempdb seçeneğiyle ve onsuz yeniden oluşturma karışımı yapıyoruz.

Teşekkürler!

SQL Server 2012 Kurumsal

Yanıtlar:


22

SORT_IN_TEMPDBSQL sunucusunun tempdb, dizini yeniden oluşturmakta olan kullanıcı veritabanında yer ayırmak yerine geçici alanı tahsis etmek için kullanacağı anlamına gelir . Bu, bir dizin oluşturma işlemi sırasında kullanıcı veritabanında daha az boş alana ve tempdb'de daha fazla boş alana ihtiyaç duyacağınız anlamına gelir.

Tempdb, kullanıcı veritabanından farklı bir disk setinde (LUN) olduğunda size daha iyi avantaj sağlar.

Gönderen SORT_IN_TEMPDB Seçeneği - BOL :

SORT_IN_TEMPDB seçeneği AÇIK olarak ayarlanmış ve tempdb, hedef dosya grubundan ayrı bir disk grubundaysa , ilk aşamada, veri sayfalarının okunması , yazma işleminden tempdb'deki sıralama çalışma alanına farklı bir diskte gerçekleşir. Bu, veri anahtarlarının okunan diskinin genel olarak disk üzerinde daha seri olarak devam ettiği ve tempdb diskine yazmanın da son dizini oluşturmak için yazdığı gibi genellikle seri olduğu anlamına gelir. Diğer kullanıcılar veritabanını kullanıyor ve ayrı disk adreslerine erişiyor olsalar bile, genel okuma ve yazma şekli SORT_IN_TEMPDB kullanılmadığı zaman belirtildiğinden daha verimlidir .

SORT_IN_TEMPDB AÇIK iken disk alanı gereksinimlerini okuduğunuzdan emin olun .

yavaş / muhtemelen yanlış yapılandırılmış SAN

Acı noktasını biliyorsun. Düzeltmek için neden SAN yöneticinizle birlikte çalışmıyorsunuz? Yanlış yapılandırılmış ve veya yavaş SAN, yavaşlama gibi her türlü soruna neden olur .

Dikkat edilecek bazı önemli noktalar:

Bunu test etmenin en iyi yolu ne olurdu?

Evet, dizini ve dizini yeniden oluştururken bekçileri analiz ederek test etmek zorundasınız SORT_IN_TEMPDB. Çalışma süresini de ölçün ve PROD modundayken, bir bakım penceresi veya daha az sunucu etkinliği sırasında yaptığınızdan emin olun. Ayrıca okuma / yazma verilerinizi kontrol edin ve gecikme tarihini kontrol edin .

Anında dosya başlatmaya sahip olduğunuzdan emin değilim , ancak geri yükleme sırasında, veri dosyalarının otomatik büyütülmesi sırasında ve yeni bir veritabanı oluştururken fayda sağlayacak (tamlıktan bahseden).


Yorumumu tempdb yapılandırmamla düzelttim. Teşekkürler, seri çevrimiçi yeniden ipucu ipucu bilmiyordum. Biraz daha test yapacağım ve ne yazık ki konukseverlikten daha az olan SAN yöneticisine katılmaya çalışacağım. Karşılaştırma yapmam gereken belirli beklemeler var mı (ör. PageIOLatch)? Bizim tempdb yazmalarımız süper yüksek (4000ms). Ana DB'ler için 40ms'den küçük. Bu başka bir zaman için bir soru olabilir ama ...!
Gabe,

@Gabe SAN yöneticinize bunun gerçekten bir SAN sorunu olduğuna dair doğru gerçekleri göstermelisiniz - okuma / yazma gecikmesi - sys.dm_io_virtual_file_stats . Tempdb'niz ayrı LUN'da mı?
Kin Shah,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.