En iyi duruma getirme hakkında yönergeler toplu alma
Bu konu için birkaç performansını en iyi duruma getirmek için gerekli yönergeleri dikkate toplu alma senaryolar:
Boş bir tek bir istemci (veya akış) veri almayı tablo.
Tek bir istemci (veya akış), verileri bir kısmen doldurulan boş olmayan alma tablo.
Not
Bir boş olmayan veri alma tablo bir artımlı toplu alma işlemi bilinir.Anahtar soru için bir artımlı toplu alma, dizinler önceden kesilmesine mi olduğu.
Birden çok istemciler (veya akış), Tablo düzey kilitleme paralel veri alınıyor.
Copying data between Microsoft SQL Server instances.
Bu konu, kilitleme ve sırasında oturum tablosunda bir özetini de sağlar toplu alma işlemleri.
Veri tek bir istemci (veya akış), boş bir tablo alma
Boş bir veri alırken tablo bir tek istemci (veya akış), Microsoft Aşağıdaki bunu yapmanızı önerir.
(Bu bir ipucu veya toplu olarak alma üçünü seçeneği olarak kullanılabilir) TABLOCK niteleyici belirtin.TABLOCK kullanarak, toplu işlem süresi için gerçekleştirilecek bir tablo düzey kilit neden olur ve tek tek satırlara kilit ek yükü ortadan kaldırır.Daha fazla bilgi için bkz:Kilitleme davranışı için Bulk ımport denetleme.
Günlük simge durumuna küçültün.Daha fazla bilgi için bkz:Toplu alma en az günlüğe kaydetme için Önkoşullar.
Dizinler gibi işler.
Kullandığınızda Kullanımıbcp, INSERT TOPLU veya INSERT... SELECT * FROM OPENROWSET(BULK...), tablo boş bir kümelenmiş dizini vardır ve verileri veri dosyasındaki sipariş kümelenmiş dizin anahtar sütunlarla eşleşmesi için Ayrıca, aşağıdakileri yapın:
Kümelenmiş dizin zaten bir yerde verileriyle toplu alma.
ORDER ipucu yaný sýra TABLOCK ipucu belirtin.Daha fazla bilgi için bkz:Toplu veri alma, sıralama düzeni düzenini denetleme.
Boş bir tablo, bu yaklaşım, veriyi aldıktan sonra kümelenmiş dizin oluşturma sıralama adım ortadan gibi daha önemli ölçüde daha hızlı olur.
Not
Boş olmayan, tablo dizinler varsa, toplu alma işlemlerinin tam olarak, hatta toplu günlük kurtarma modeli altında kaydedilir.Dizinler kaldırmaya karar vermek için , göz önünde olup olmadığını toplu içe aktarma yararı bir tablo ile dizin bırakarak ve bunları yeniden maliyeti daha büyük.
Varsa, toplu alma boş bir tablo ile dizinleri ve verileri toplu iş boyutu belirtin, tablonun boş olmayan duruma sonra ilk toplu iş.Ikinci toplu iş iş işlemle başlayarak, tam oturum veridir.Boş dizinlenmiş tablolar gerçekleştirme düşünün toplu iş iş alma tek toplu iş iş işlemindeki.
Not
Ne zaman bir toplu iş boyutu, varsayılan olarak, belirtilmedi SQL Server sorgu iyileştiricisi veri dosyasının boyutu için varsayılan boyut olarak varsayar. Performansı artırmak için , veri dosyasındaki bir satır sayısı yaklaşık hakkında en iyi duruma getiricisi için ipucu olarak ROWS_PER_BATCH veya KILOBYTES_PER_BATCH niteleyici kullanabilirsiniz.Daha fazla bilgi için bkz:toplu iş iş Kopyala toplu iş iş iş boyutları yönetme.
Genellikle, içe aktarma işlemi toplu olarak hızlıdır bir tablo herhangi bir dizin üzere toplu daha içe bir tablo dizinleriyle.Boş bir tablo, herhangi bir dizin varsa, tabloya veri alma ve daha sonra bunları yeniden oluşturmak için önce bu nedenle, sürükleyip bırakın.Bir kümelenmiş anahtar sütunundaki veriler sıralanır ve tablo boş ise, tüm indeksler bırakın, veri ve sonra yeni dizinler oluşturun.
Disk boş tablo veri tek bir istemci (veya akış) alma
Veri (boş olmayan bir tablo) içeren bir tabloya veri alma, bir artımlı toplu alma işlemi bilinir.Anahtar soru için bir artımlı toplu alma, dizinler önceden kesilmesine mi olduğu.Iki seçeneğiniz vardır.Ya da tutmak için dizinler veya sürükleyip bırakın ve bunları sonradan yeniden olabilir.
Bir tek istemci (veya akış) boş olmayan bir tabloya veri aldığınızda, dizinleri tutma etkinleştirilip etkinleştirilmeyeceğini tablosunda varolan veri miktarı göreceli olarak alınan yeni veri miktarına bağlıdır:
Yeni verileri varolan bir veri miktarına göre sayıdaki alıyorsanız, bırakarak ve dizinleri yeniden oluþturma sayaç olabilir üretken.Dizinleri yeniden oluşturmak için gereken süreyi toplu işlemi sırasında kaydedilen saat daha uzun olasıdır.
Göreceli olarak büyük miktarda bir yeni veri alma işlemi yapıyorsanız, buna karşılık, dizinler üzerinde bırakarak tablo önce bu toplu işlemi performans, dizin oluşturma işlemi için gereken saat önemli ölçüde artırmadan artırabilirsiniz.
Aşağıdaki tablo, dizinler bırak önce bir tabloda yeni veri en az miktarı listelenir.En az toplam veri orantılı olarak tutardır tablo.Tutar türleri ve dizinler birleşimlerini bağlı olarak farklılık gösterir.Yeni verileri, verilen tür bir dizin veya dizinleri gruplandırması için önerilen yüzdesini aşarsa, toplu işlem önce dizinler bırakılıyor ve bunları daha sonra yeniden deneyin.Bu sayılar için veri deseni varolan verileri ve verilerin yüklenecek duyarlıdır.Bu nedenle, numaraları yalnızca genel bir kılavuz sağlar.
Dizinler |
Yeni veri göreli miktarını |
---|---|
Kümelenmiş dizin |
yüzde 30 |
Kümelenmiş ve bir kümelenmemiş dizin |
yüzde 25 |
Kümelenmiş ve iki kümelenmemiş dizin |
yüzde 25 |
Yalnızca tek kümelenmemiş dizin |
yüzde 100 |
Iki kümelenmemiş dizin |
yüzde 60 |
Birden çok istemci (veya akışları), tablo düzeyinde kilitleme ile paralel veri alınıyor
If SQL Server birden fazla işlemci ve verilerin toplu içine alınmış olan bir bilgisayarda çalışan bir tablo bölünebilir ayrı veri dosyalarına verileri alarak performansı artırabilirsiniz tablo paralel olarak birden çok istemcilerinden gelen. Ne zaman birden çok istemcilerinden gelen tek alma toplu tablo, her istemci, kendi giriş veri dosyası olması gerekir.
Verileri alırken bir tablo birden çok istemcilerinden aşağıdakileri dikkate alın:
Birden çok toplu alma akışı olasılığı için blok birbirine.
Bunu önlemek için SQL Server bir toplu güncelleştirme (BU) kilidi adı verilen özel iç kilit sağlar. BU almak için TABLOCK seçeneği ile her toplu belirtmek gereksinim duyduğunuz kilit almak akış diğer toplu alma akışları engellenmeden.Bu istemciler arasında erişim tablo çakışmalarını önler.Ancak, BU kilit yalnızca bir tablo üzerinde kullanılabilir (boş veya boş olmayan), dizin vardır.TABLOCK belirtirseniz bir tablo dizinleri ile paralel bir toplu alma mümkün değildir.Daha fazla bilgi için bkz:Kilitleme davranışı için Bulk ımport denetleme.
tablo Herhangi bir dizin varsa, tüm dizinler önce toplu alma verileri bırakarak BU kilitleme yararlanabilirsiniz.Daha sonra toplu alma paralel TABLOCK ve sonra yeniden oluşturma dizin veya dizinleri kullanarak veri.Not, bu ise de, boş olmayan bir tablo dizinler varsa, toplu alma işlemlerinin tam olarak, hatta toplu günlük kurtarma modeli altında kaydedilir.Dizinler kaldırmaya karar vermek için , göz önünde olup olmadığını toplu içe aktarma yararı bir tablo ile dizin bırakarak ve bunları yeniden maliyeti daha büyük.
Not
Ikincil dizin bırakın, ayrı bir istemciden gelen her ikincil dizin oluşturarak bunları paralel olarak yeniden deneyin.
Bırakarak ve dizinleri yeniden oluşturmayı önlemek için , bir paralel alma TABLOCK ipucu belirtmeden gerçekleştirebilirsiniz.Bu durumda, ancak birden çok toplu alma akışı olasılığı birbirlerine engelleyebilir ve ayrıca, toplu günlük en iyi duruma getirmeleri de kullanılamaz.Engellemeyi en aza indirmek için , daha küçük bir toplu iş boyutu belirtin ve kullanabilirsiniz ORDER ipucu sıralama adımı sırasında elemek için toplu alma işlemi.
Verileri birden çok giriş dosyasına ayrılmış istemci başına tek bir dosya.IŞLEMCININ en verimli bir şekilde kullanmak için , veri dosyalarının boyutunu benzer olmalıdır.
Daha fazla bilgi için bkz:Tablo düzey kilitlemeyi ile paralel veri alınıyor.
tablo Kilitleme ve toplu alma sırasında günlüğü
Aşağıdaki tabloda, bir toplu alma işlemi sırasında kilit türlerini tablo şema tarafından belirleme özetler.Aşağıdaki tablo ayrıca gösterir olup olmadığını tablo boş, işlem için TABLOCK küme olup olmadığını ve veritabanı toplu kurtarma modeli kullanıyorsanız ne tür bir oturum gerçekleşir.
Not
Ilk başarılı toplu iş iş sonra tablo artık boştur.
Hedef Tablo toplu olarak alma |
Tablo boş mi? |
TABLOCK kümesini mi? |
Kilit |
Günlük toplu oturum ve Basit kurtarma modeli altında |
---|---|---|---|---|
Öbek |
Evet |
Evet |
BU sekmesi |
Toplu günlük |
Öbek |
Evet |
Hayır |
IX sekmesi |
Tam oturum açma |
Öbek |
Hayır |
Evet |
BU sekmesi |
Toplu günlük |
Öbek |
Hayır |
Hayır |
IX sekmesi |
Tam oturum açma |
Öbek ile bir kümelenmemiş dizin |
Evet |
Evet |
sch-m |
Toplu günlük |
Öbek ile bir kümelenmemiş dizin |
Evet |
Hayır |
IX sekmesi |
Tam oturum açma |
Öbek ile bir kümelenmemiş dizin |
Hayır |
Evet |
sch-m |
|
Öbek ile bir kümelenmemiş dizin |
Hayır |
Hayır |
IX sekmesi |
Tam oturum açma |
Kümelenmiş dizin |
Evet |
Evet |
sch-m |
Toplu günlük |
Kümelenmiş dizin |
Evet |
Hayır |
IX sekmesi |
Tam oturum açma |
Kümelenmiş dizin |
Hayır |
Evet |
x-SEKMESİ |
Tam oturum açma |
Kümelenmiş dizin |
Hayır |
Hayır |
IX sekmesi |
Tam oturum açma |
SQL Server örnekleri arasında veri kopyalama
Verileri için bir toplu kopyalama SQL Server başka birine kullanın. Kullanımıbcp tablo verileri bir veri dosyasına vermek için.Sonra toplu alma yöntemleri verileri tabloya dosyadan almak için kullanın.Toplu alma işlemleri kullanarak yerel veya Unicode yerel biçim de toplu vermek gerçekleştirin.
Not
Daha fazla bilgi için bu biçimler Bkz: Yerel biçim kullanarak Al veya veri ver ve Unicode yerel biçim kullanarak Al veya veri ver.
Kaynak tablo kümelenmiş dizin varsa veya toplu düşünüyorsanız, kümelenmiş bir dizini olan bir tabloya veri:
Toplu kullanarak kaynak tablo verileri verme Kullanımıbcp with the Sorgu seçeneği bir sıralı veri dosyası oluşturmak için uygun bir ORDER BY yan tümce kullanarak bir deyim ve.Daha fazla bilgi için bkz:Kullanımıbcp yardımcı programı.
Ne zaman toplu olarak verileri alınıyor SQL Server. Yalnızca tarafından desteklenen bir ORDER niteleyici kullanın. Kullanımıbcp ve BULK INSERT.Daha fazla bilgi için bkz:Toplu veri alma, sıralama düzeni düzenini denetleme.
Daha fazla bilgi için bkz:Sunucular arasında veri kopyalama.
See Also