Jestem w trakcie planowania migracji na żywo bazy danych 2 TB do tabel partycjonowanych. System jest ogólnie magazynem dokumentów, większość miejsca jest przeznaczona na LOBy od 50 kb do 500 kb, z niewielkim odsetkiem w zakresie od 500 kb do 1 MB. Część migracji będzie obejmować dane BCPing ze starej do nowej bazy danych.
Preferowanym podejściem jest BCP, ponieważ obecny / historyczny podział danych pozwala na ekstrakcję starszych danych etapami (w spokojniejszych okresach) przed ostatecznym przełączeniem, minimalizując wpływ na system na żywo. Ilość danych i dostępność pamięci wykluczają przebudowę na miejscu do schematu partycji .
Podejrzewam, że być może przyniosłoby to pewne zwiększenie wydajności poprzez eksperymentowanie z KILOBYTES_PER_BATCH zamiast ROWS_PER_BATCH z powodu zawartości BLOB. W dokumentacji BCP sugeruje się, że SQL może zoptymalizować operacje na podstawie tej wartości.
Nie mogę znaleźć żadnych wskazówek na temat natury tych optymalizacji ani tego, od czego zacząć testowanie. W absurcji sugestii spróbuję rozpocząć krótkie serie na granicach 4/8/16/32 / 64mb, aby rozpocząć.
Prawdopodobnie niektóre korzyści wynikają ze zmiany rozmiaru pakietu (parametr BCP -a, a nie ustawienie na poziomie serwera), ale jestem skłonny podnieść to do maksimum 65535, chyba że ktoś ma bardziej formalne podejście.
źródło