Udostępnij za pośrednictwem


Importowanie danych równolegle z blokowania na poziomie tabeli

Microsoft SQL Server allows multiple clients to bulk import data in parallel into a single unindexed table.Może to zwiększyć wydajność operacji import zbiorczy.Importowanie danych równoległego jest obsługiwane przez wszystkie trzy import zbiorczy polecenia: BCP, WSTAW luzemi WSTAWIĆ...Wybierz * FROM OPENROWSET(luzem...).

Ostrzeżenie

Tylko aplikacje, które korzystają z interfejsów API ODBC lub SQL OLE DB można wykonywać równolegle ładowania do pojedynczej tabela danych.Any application, including the bcp utility, that is based on the DB-Library client library supplied with Microsoft SQL Server version 6.5 or earlier cannot participate in parallel data loads into an instance of SQL Server.

Jeśli nie określisz TABLOCK opcji/wskazówka, wiele współbieżnych import zbiorczy strumienie nabywa blokad w ziarnistość poniżej poziom tabela.W zależności od opcji dystrybucji danych współbieżnego ładowanie zbiorcze strumieni może blokować wzajemnie.Dlatego luzem, importowanie danych, równolegle do tabela nieindeksowanych jest zwykle wykonywane z TABLOCK.

Kiedy luzem, importowanie danych, równolegle do wystąpienie SQL Server za pomocą TABLOCK, należy uwzględnić następujące:

  • Najprostszym scenariuszu importowania danych równolegle ładowania danych do tabela nieindeksowanych ( sterty).

  • Jeśli tabela nie ma żadnych indeksów, należy określić opcję TABLOCK dla operacji importu zbiorczego.Aby uzyskać więcej informacji, zobacz Kontrolowanie zachowania blokowania dla importu zbiorczego.

    Ostrzeżenie

    Gdy istnieje indeksów w tabela, nie można wykonać operacji ładowania równoległe, za pomocą opcji TABLOCK.Ponadto współbieżnych wątków blok siebie Jeśli TAblok nie jest określony.Przed wykonaniem operacji importu zbiorczego należy rozważyć usunięcie z tabela indeksów.Aby uzyskać informacje o tym, czy zachować czy usunąć indeksy, zobacz Wskazówki dotyczące optymalizowania importu zbiorczego.

  • Dzielenie danych do zaimportowania wśród klientów na taką samą liczbę plików danych są klienci.Umieścić jeden z plików dla poszczególnych klientów.

    Najlepsze praktykiaby najbardziej efektywnie wykorzystać procesora, rozpowszechnianie danych równo pomiędzy klientami.Upewnij się, że pliki danych są podobne rozmiaru, jeśli chcesz zaimportować je równolegle z wielu klientów do wystąpienie SQL Server.W przeciwnym razie wątek klient mniej obciążonych może wcześniejszego zakończenia i nieefektywnie więc używać Procesora tego klient.

  • Aby osiągnąć maksymalną wydajność, określony dla każdego klient wielkość partia powinna być taki sam jak rozmiar pliku danych klient.Aby uzyskać więcej informacji, zobacz Zarządzanie instancje importu zbiorczego.

Po danych do tabela importowane luzem, wszelkie wymagane indeksy można tworzyć w następujący sposób:

  1. Z kolei utworzyć każdy indeks klastrowany z jednego klient.Aby uzyskać więcej informacji, zobacz Tworzenie indeksów klastrowanych.

  2. Utwórz zbudowania indeksów.Mogą one utworzone jednocześnie z różnych klientów.Aby uzyskać więcej informacji, zobacz Tworzenie indeksów nieklastrowany.

Jeśli nie określisz, TABLOCK, możesz import zbiorczy danych równolegle, niezależnie od liczby indeksów dla miejsce docelowe.Ale w takim przypadek optymalizacje luzem nie są możliwe i napotkać blokowanie podczas uzyskiwania blokady w poszczególnych wierszach lub stron.