Symptomy
W programie Microsoft SQL Server 2016 lub SQL Server 2017 w systemie Windows może wystąpić spadek wydajności w następujących warunkach:
-
Po uruchomieniu wielu równoczesnych operacji INSERTSELECT w tabelach tymczasowych.
-
Podczas wykonywania zapytań sys.dm_os_waiting_tasks. W takiej sytuacji w kolumnie resource_description jest wyświetlana liczba żądań oczekujących na stronach wolnego miejsca na stronie (PFS).
Przyczyna
Równoległość insert dla operacji INSERTSELECT została wprowadzona w SQL Server 2016 lub SQL Server 2017 w systemie Windows. Funkcja INSERTs w lokalnych tabelach tymczasowych (tylko tych oznaczonych prefiksem #, a nie globalnych tabelach tymczasowych oznaczonych przez prefiksy ##) jest teraz automatycznie włączana na potrzeby równoległości bez wyznaczania wskazówki TABLOCK, która wymaga stosowania tabel innych niż tymczasowe.
Mimo że równoległość insert zwykle poprawia wydajność zapytania, jeśli istnieje znaczna liczba równoczesnych operacji tabela tymczasowa INSERTSELECT, rywalizacja może być znacząca w stosunku do stron PFS. W niektórych przypadkach może to spowodować ogólny spadek wydajności.Rozwiązanie
Ten problem został po raz pierwszy rozwiązany w dodatku Service Pack 1 SQL Server 2016. Po zastosowaniu SQL Server 2016 z dodatkiem SP1 funkcja RÓWNOCZESNE w programie INSERT. Funkcja ZAZNACZ do lokalnych tabel tymczasowych jest domyślnie wyłączona, co zmniejsza rywalizację na stronie PFS i poprawia ogólną wydajność jednoczesnego obciążenia pracą. Jeśli jest wymagane równoległe insertów do lokalnych tabel tymczasowych, użytkownicy powinni używać wskazówek TABLOCK podczas wstawiania do lokalnej tabeli tymczasowej. Jeśli w sekcji obejścia została włączona flaga 9495 śledzenia, zalecane jest wyłączenie i usunięcie flagi śledzenia po zastosowaniu SQL Server 2016 z dodatkiem SP1, ponieważ flaga śledzenia 9495 wyłącza wstawianie równoległe niezależnie od wskazówki TABLOCK.
Informacje o aktualizacji zbiorczej
Ten problem został rozwiązany w następującej aktualizacji zbiorczej dla SQL Server 2016 r.:
Informacje o aktualizacjach zbiorczych dla SQL Server