Importing Data in Parallel with Table Level Locking

Microsoft SQL Server pozwala wielu klientów dane import zbiorczy równolegle w jednej tabela nieindeksowanych.Może to zwiększyć wydajność operacji import zbiorczy.Importowanie danych równoległych jest obsługiwany przez wszystkie polecenia import zbiorczy trzech: BCP, WSTAWIANIA ZBIORCZEGO, a INSERT...WYBIERZ * Z OPENROWSET(LUZEM...).

Uwaga

Tylko aplikacje korzystające z interfejsów API ODBC lub SQL OLE DB mogą wykonywać równolegle ładowania w 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.

Nie określono opcji/wskazówkę dotyczącą TABLOCK, wiele strumieni import zbiorczy jednocześnie uzyskać blokady w ziarnistość poniżej poziom tabela.W zależności od dystrybucji danych równoczesnych zbiorczego ładowania strumieni może blok sobie nawzajem.Dlatego zbiorczej importowania danych równolegle do tabela programu nieindeksowanych zazwyczaj jest wykonywane z TABLOCK.

Zbiorcza podczas importowania danych równolegle do wystąpienie SQL Server przy użyciu TABLOCK należy wziąć pod uwagę następujące kwestie:

  • Najprostszy scenariusz dla importowania danych równolegle jest ładowania danych do nieindeksowanych tabela ( sterty.).

  • Jeśli tabela zawiera indeksy nie, należy określić opcję TABLOCK dla operacji importu zbiorczego.Aby uzyskać więcej informacji zobaczControlling Locking Behavior for Bulk Import.

    Uwaga

    Wówczas, gdy istnieje indeksów w tabela, nie będą mogły wykonywać operacji ładowania równolegle, za pomocą opcji TABLOCK.Ponadto współbieżnych wątków zablokować wzajemnie Jeżeli nie określono TABLOCK.Przed wykonaniem operacji importu zbiorczego należy wziąć pod uwagę usuwając indeksy z tabela.Aby uzyskać informacje o tym, czy zachować czy usunąć indeksy zobacz Guidelines for Optimizing Bulk Import.

  • Dzielenie danych mają być zaimportowane wśród klientów do tej samej liczby plików danych są klienci.Umieścić jeden z plików na wszystkich komputerach klienckich.

    Najważniejsze wskazówki   Aby najbardziej efektywnie wykorzystać procesora, rozpowszechniać je równomiernie wśród klientów.Upewnij się, że są podobny pod względem rozmiarów plików danych, jeśli chcesz zaimportować je równolegle z wielu klientów do wystąpienie SQL Server. W przeciwnym razie wątek lekko załadowany Klient może przed terminem zakończenia i, więc używać nieefektywne CPU tego klienta.

  • Aby osiągnąć maksymalną wydajność, wielkość partia, dla każdego klient powinna być taka sama, jak rozmiar pliku danych klient.Aby uzyskać więcej informacji zobaczManaging Batches for Bulk Import.

Po danych do tabela importowane zbiorczej, można utworzyć żadnych indeksów wymagane w następujący sposób:

  1. Z kolei tworzyć każdy indeks klastrowany z jednego klient.Aby uzyskać więcej informacji zobaczCreating Clustered Indexes.

  2. Utwórz ponownego zbudowania indeksów nie klastrowanych.Mogą być one tworzone jednocześnie z różnych klientów.Aby uzyskać więcej informacji zobaczCreating Nonclustered Indexes.

Jeśli nie określisz TABLOCK, może się zbiorczej importowane dane równolegle, niezależnie od liczby indeksów dla miejsce docelowe.Ale w takim przypadek optymalizacje zbiorczej nie są możliwe i blokowanie podczas uzyskiwania blokad dla poszczególnych wierszy lub stron mogą być wyświetlane.