Aracılığıyla paylaş


Toplu almayı en iyi duruma getirme yönergeleri

Bu konuda birkaç toplu alma senaryoları için performansı en iyi duruma getirmek için yönergeleri dikkate alır:

  • Bir tek istemci (veya akış) verilerden boş alma tablo.

  • Bir tek istemci (veya akış) verilerden bir kısmen doldurulan boş olmayan alma tablo.

    Not

    Bir boş olmayan veri alma tablo bir artımlı toplu alma işlemi bilinir.Anahtar bir artımlı toplu alma işlemi için dizinler önceden iptal olup olmadığını sorudur.

  • Birden çok istemci (veya akış) tablo düzey kilitlemeyi ile paralel veri alma.

  • Copying data between Microsoft SQL Server instances.

Bu konu, kilitleme ve toplu alma işlemleri sırasında günlüğe kaydetme tablo özetini de sağlar.

Bir tek istemci (veya akış) verilerden boş bir tabloya alma

Boş bir veri alırken tablo bir tek istemci (veya akış), Microsoft önerir, aşağıdakileri yapın

  • tablock niteleyici (olan bir ipucu veya toplu alma üçünü seçeneği olarak kullanılabilir) belirtin.SEKMESİNİ kullanarakkilit tablo düzey neden olan kilit toplu işleminin süresi için yapılacak ve yükü ortadan kiliting tek tek satırlar.Daha fazla bilgi için bkz: İçin toplu almayı kilitleme davranışı denetleme.

  • Günlük en aza indirin.Daha fazla bilgi için bkz: Toplu alma Minimal günlüğü için Önkoşullar.

  • Dizinler gibi işleyecek.

    Kullanırken bcp, bulk INSERT veya Ekle...SEÇİN * ndan openrowset(bulk...), tablo boş ve kümelenmiş bir dizin olan ve veri dosyasındaki verileri sıralanmış kümelenmiş dizin anahtar sütunları eşleştirmek için ayrıca aşağıdakileri yapın:

    Boş bir tablo için bu veriyi aldıktan sonra kümelenmiş dizin oluşturma sıralama adım ortadan kaldırdığı gibi daha belirgin şekilde daha hızlı yaklaşımdır.

    Not

    Boş olmayan, tablo dizinler varsa, Toplu almalar tam olarak kaydedilir, hatta Toplu Kaydedilmiş kurtarma modeli altında.Dizinleri karar vermek için göz önünde mi içe aktarma toplu yararı bir tablo ile dizin bırakarak ve bunları yeniden oluşturma maliyeti büyüktür.

    Varsa, toplu alma dizinler ve boş bir tabloya veri toplu iş boyutu belirtin, boş olmayan bir tablo olur ilk toplu sonra.İkinci toplu iş iş ile başlayarak, tam olarak günlüğe kaydedilen verilerdir.Boş dizin oluşturulmuş tabloları için tek bir toplu iş toplu alma gerçekleştirmeyi düşünün.

    Not

    Toplu iş boyutu belirlenmezse, varsayılan olarak, SQL Server sorgu iyileştiricisi bir varsayılan boyutunu veri dosyasının boyutu varsayar.Performansı artırmak için rows_per_batch veya KILOBYTES_PER_BATCH niteleyici yaklaşık sayısı veri dosyasındaki satırları hakkında en iyi duruma getiricisi için bir ipucu olarak kullanabilirsiniz.Daha fazla bilgi için bkz: Toplu Kopyala toplu işlem boyutları yönetme.

    Genellikle, toplu alma içine hızlıdır bir tablo üzere toplu'den tüm dizinler almak içine bir tablo dizinler ile.Boş bir tablo tüm dizinler varsa, tabloya veri alma ve daha sonra bunları yeniden oluşturmak için önce bu nedenle, sürükleyip bırakın.Kümelenmiş anahtar sütun üzerinde veriler sıralanır ve Tablo boş ise, tüm dizinler bırak, verileri almak ve sonra yeni dizinler oluşturma.

Bir tek istemci (veya akış) verilerden boş olmayan bir tabloya alma

(Boş olmayan tablo) veri içeren bir tabloya veri alma bir artımlı toplu alma işlemi bilinir.Anahtar bir artımlı toplu alma işlemi için dizinler önceden iptal olup olmadığını sorudur.İki seçeneğiniz vardır.Ya da canlı olabilir dizinler veya can sürükleyip bırakın ve daha sonra yeniden oluşturun.

Bir tek istemci (veya akış) verilerden bir boş olmayan alırken tablo, dizinler tutmak için varolan veri miktarı göreceli olarak alınan yeni veri miktarına bağlıdır olup olmadığını tablo:

  • Yeni verileri varolan verilerin miktarı göreceli olarak az miktarda alıyorsanız bırakarak ve dizinleri yeniden oluşturuluyor sayaç olabilir üretken.saat Gereken dizinleri yeniden oluşturmak için daha uzun olması olasıdır saat toplu işlem sırasında kaydedilmiş.

  • Göreceli olarak büyük miktarda yeni veri alma işlemi yapıyorsanız, buna karşılık, toplu işlemini gerçekleştirmeden önce dizinler tablo bırakarak performans, önemli ölçüde artırmadan artırabilirsiniz saat dizin oluşturma için gerekli.

Minimum miktarda dizinler bırak önce tablo içinde olması gereken yeni verileri aşağıdaki tabloda listelenmektedir.Toplam veri orantılı olarak az olduğu tablo.Tutar türleri ve dizinler birleşimlerini bağlı olarak farklılık gösterir.Yeni verileri belirli bir dizin veya dizinleri gruplandırma türü için önerilen yüzdesini aşarsa, toplu işleminden önce dizinler bırakılıyor ve daha sonra yeniden oluşturmayı düşünün.Bu sayılar için veri deseni varolan verileri ve verilerin yüklenmesine duyarlıdır.Bu nedenle, yalnızca genel bir kılavuz numaraları sağlar.

Dizinler

Yeni veri göreli miktarını

Kümelenmiş dizin

yüzde 30'u

Kümelenmiş ve kümelenmemiş dizin

yüzde 25'u

Kümelenmiş ve kümelenmemiş dizinleri iki

yüzde 25'u

Yalnızca tek kümelenmemiş dizin

yüzde 100'u

İki kümelenmemiş dizinleri

yüzde 60'u

Birden çok istemci (veya akış) tablo düzeyi kilitlemeyi ile paralel veri alma

If SQL Server is running on a computer that has more than one processor and the data to be bulk imported into a table can be divided into separate data files, you can improve performance by importing the data into the table from multiple clients in parallel.Ne zaman birden çok istemcilerinden gelen bir içe aktarma toplu olarak tablo, her istemciyi kendi giriş veri dosyası olması gerekir.

Verileri içe aktarırken bir tablo birden çok istemcilerinden aşağıdakileri dikkate alın:

  • Birden çok toplu alma akışı potansiyel olabilir blok birbirlerine.

    Bunu önlemek için SQL Server sağlayan özel iç kilit, adlı bir toplu güncelleştirme (bu) kilit.bu almak için kilit tablock seçeneği ile her toplu belirtmeye gerek alma akışı diğer toplu alma akışlarını engelleme olmadan.Bu istemciler arasında erişim tablo çakışmalarını önler.Ancak, bu bir kilit , yalnızca bir tablo üzerinde kullanılabilir (boş veya boş olmayan), dizin vardır.tablock belirtirseniz bir tablo dizinler ile paralel toplu alma mümkün değildir.Daha fazla bilgi için bkz: İçin toplu almayı kilitleme davranışı denetleme.

    tablo Tüm dizinler varsa, bu tüm dizinlerde toplu alma veri önce bırakarak kilitleme yararlanabilirsiniz.Daha sonra toplu alma tablock ve sonra yeniden oluşturma dizin veya dizinleri kullanarak Paralel veri.Not Ayrıca, boş olmayan bir ise tablo dizinler varsa, Toplu almalar tam olarak kaydedilir, hatta Toplu Kaydedilmiş kurtarma modeli altında.Dizinleri karar vermek için göz önünde mi içe aktarma toplu yararı bir tablo ile dizin bırakarak ve bunları yeniden oluşturma maliyeti büyüktür.

    Not

    İkincil dizinler bırakın ayrı, her ikincil dizin oluşturarak bunları paralel olarak yeniden oluşturmayı düşünün istemci.

    Bırakarak ve dizin yeniden oluşturmayı önlemek için paralel bir alma tablock ipucu belirtmeden gerçekleştirebilirsiniz.Bu durum, ancak, birden çok toplu alma akışı potansiyel birbirleriyle engelleyebilir ve ayrıca, toplu günlüğü en iyi duruma getirmeleri kullanılamaz.Engellemeyi en aza indirmek için daha küçük bir toplu iş boyutu belirtin ve sıralama adım sırasında ortadan kaldırmak için sipariş ipucu kullanabilirsiniz toplu alma işlem.

  • Verileri birden çok giriş dosyasına ayrılmalıdır istemci başına bir dosya.CPU'nun en verimli bir şekilde kullanmak için veri dosyalarına benzer boyutta olması gerekir.

Daha fazla bilgi için bkz: Tablo düzeyi kilitlemeyi ile paralel veri alma.

Tablo kilitleme ve toplu alma işlemi sırasında günlüğe kaydetme

Nasıl, bir toplu alma işlemi sırasında kilitleri türleri tablo şema tarafından belirlenen aşağıdaki tabloda özetlenmiştir.Aşağıdaki tabloda Tablo boş olup tablock işlem için küme ve ne tür bir oturum açma veritabanını kullanıyorsa oluşur gösterir toplu günlük kurtarma modeli.

Not

İlk başarılı toplu iş iş sonra tablo artık boştur.

Toplu alma hedef tablo

Tablo boş mu?

tablock küme var mı?

Kilit

Günlük basit ve Toplu Kaydedilmiş kurtarma modelleri altında

Öbek

Evet

Evet

bu sekme

Toplu günlük

Öbek

Evet

Hayır

IX sekmesi

Tam günlük

Öbek

Hayır

Evet

bu sekme

Toplu günlük

Öbek

Hayır

Hayır

IX sekmesi

Tam günlük

Olmayan bir yığın-kümelenmiş dizin

Evet

Evet

SCH-M

Toplu günlük

Olmayan bir yığın-kümelenmiş dizin

Evet

Hayır

IX sekmesi

Tam günlük

Olmayan bir yığın-kümelenmiş dizin

Hayır

Evet

SCH-M

  • Veri — günlük toplu

  • Dizin — tam günlük

Olmayan bir yığın-kümelenmiş dizin

Hayır

Hayır

IX sekmesi

Tam günlük

Kümelenmiş dizin

Evet

Evet

SCH-M

Toplu günlük

Kümelenmiş dizin

Evet

Hayır

IX sekmesi

Tam günlük

Kümelenmiş dizin

Hayır

Evet

X-SEKMESİ

Tam günlük

Kümelenmiş dizin

Hayır

Hayır

IX sekmesi

Tam günlük

sql Server örnekleri arasında veri kopyalama

Bulk copy verilerden biri için örnek , SQL Server başka kullanılacak bcp tablo verileri bir veri dosyasına verme.Dosyaya veri için toplu alma yöntemlerinden birini kullanın bir tablo.toplu vermek ve yerel veya Unicode yerel biçim kullanarak toplu alma işlemleri gerçekleştirin.

Kaynak tablo kümelenmiş bir dizini varsa veya düşündüğünüz toplu alma kümelenmiş dizin olan bir tabloya veri:

  1. Toplu verme verileri kaynak tablo kullanarak bcp ile sorgu seçenek için bir deyim ve sıralı veri dosyası oluşturmak için uygun bir order by yan tümce tümce tümce kullanarak.Daha fazla bilgi için bkz: bcp Yardımcı Programı.

  2. Ne zaman veri alma toplu olarak SQL Server.Yalnızca desteklenen sipariş niteleyici kullanın bcp ve bulk INSERT.Daha fazla bilgi için bkz: Toplu olduğunda veri alma, sıralama düzenini denetleme.

Daha fazla bilgi için bkz: Sunucular arasında veri kopyalama.