Artykuł napisany przez Paula dotyczący wewnętrznych kopii zapasowych jest doskonały i musisz go przeczytać. Dodanie do tego, co powiedzieli inni i podkreślenie określonej części pytania
Słyszałem również, że tworzenie kopii zapasowych jest jednowątkowe, co oznacza, że używa tylko jednego rdzenia, zakładając, że wykonujesz kopię zapasową w jednym pliku. Zakładając również, że masz maszynę wielordzeniową, na przykład 16 rdzeni lub co najmniej znacznie większą liczbę niż jeden.
Operacja tworzenia kopii zapasowej, can use parallelism
ale pamiętaj, że nie jest to paralelizm napędzany przez Optymalizator w SQL Server, ale związany z liczbą dysków, z których kopia zapasowa musi odczytać plik danych i gdzie kopia zapasowa zapisuje plik danych oraz ilość utworzonych plików kopii zapasowej.
Nie można użyć MAXDOP
podpowiedzi podczas tworzenia kopii zapasowej programu SQL Server
Nie można wygenerować planu wykonania w SSMS dla prostej operacji tworzenia kopii zapasowej TSQL.
Równoległość napędzana przez optymalizator zapytań w SQL Server jest w zasadzie dla zaangażowanych operatorów (w rzeczywistości jest bardziej złożona, ale dla uproszczenia można to zrobić), ponieważ operacja tworzenia kopii zapasowych nie obejmuje żadnego operatora jako takiego, nie może ona używać równoległości napędzanej przez optymalizator.
Napisałem artykuł na stronie Technet Wiki o kopii zapasowej i równoległości, w którym użyłem prostych przykładów, aby wyjaśnić równoległość podczas tworzenia kopii zapasowej programu SQL Server. Oto wniosek
Jeśli pliki bazy danych znajdują się na wielu dyskach, operacja tworzenia kopii zapasowej zainicjuje wątek na dysk urządzenia, aby odczytać dane. W ten sam sposób, jeśli przywracanie odbywa się na wielu dyskach / punktach instalacji, operacja tworzenia kopii zapasowej zainicjowałaby jeden wątek na dysk / punkt instalacji
Nawet jeśli zrzucisz wiele kopii kopii zapasowej na tym samym dysku, zrzucimy jeden wątek na plik kopii zapasowej.
Paralelizm związany z tworzeniem kopii zapasowej jest związany z paskami. Każdy pasek ma własny wątek roboczy i jest to tak naprawdę jedyna część tworzenia kopii zapasowych / przywracania, którą należy uznać za operacje równoległe.
Maksymalny stopień równoległości nie ma wpływu na operacje tworzenia kopii zapasowych.
Dostałem opinię eksperta na ten temat od Paula i Boba Dorra.
Co się dzieje, gdy uruchomione jest zadanie tworzenia kopii zapasowej? A także czy istnieją znaczące różnice dla różnych wersji? na przykład 2008,2012 i 2014 (nie licencje).
Proponuję ci przeczytać ten artykuł blog.msdn autorstwa Boba Dorra . Podkreślił kilka ważnych punktów
Po rozpoczęciu tworzenia kopii zapasowej tworzy serię buforów przydzielonych z pamięci poza pulę buforów. Cel wynosi zwykle 4 MB dla każdego bufora, co daje około 4 do 8 buforów. Szczegóły dotyczące obliczeń znajdują się w: http://support.microsoft.com/kb/904804/en-us
Bufory są przenoszone między kolejką wolną a kolejką danych. Czytnik pobiera bezpłatny bufor, wypełnia go danymi i umieszcza w kolejce danych. Program piszący pobiera wypełnione bufory danych z kolejki danych, przetwarza bufor i zwraca go do wolnej listy.
Otrzymujesz moduł zapisujący na urządzenie kopii zapasowej, z którego każde pobiera dane z kolejki danych. Zatem polecenie tworzenia kopii zapasowej z czterema (4) specyfikacjami dysku będzie miało cztery zapisujące i czytnik. Czytnik używa asynchronicznych operacji we / wy, dzięki czemu może nadążać za pisarzami.
Możesz włączyć trace flags 3213 and 3605
, oba są nieudokumentowane, więc użyj go w środowisku testowym i zobacz, jaki interesujący komunikat jest zrzucany w dzienniku błędów SQL Server. Pojawi się coś takiego jak poniżej
Memory limit: 249MB
BufferCount: 7
Sets Of Buffers: 1
MaxTransferSize: 1024 KB
Min MaxTransferSize: 64 KB
Total buffer space: 7 MB
Tabular data device count: 1
Fulltext data device count: 0
Filestream device count: 0
TXF device count: 0
Filesystem i/o alignment: 512
Media Buffer count: 7
Media Buffer size: 1024KB
Nie jestem świadomy żadnych znaczących zmian w kodzie kopii zapasowej dla różnych wersji, takie rzeczy nie są dokumentowane. Wiem tylko o ulepszeniu wprowadzonym w SQL Server 2012 SP1 Cumulative Update 2,
włączaniu tworzenia kopii zapasowych i przywracania z usługi magazynowania obiektów Blob systemu Windows Azure z SQL Server przy użyciu TSQL lub SMO. Przeczytaj tutaj