T-SQL - OPCJA (SZYBKO x) i flaga śledzenia 8722

9

Długo szukałem i wciąż nie znalazłem odpowiedzi na mój problem.

Nasz system Dynamics AX generuje zapytania z podpowiedzią OPCJI (SZYBKIE x), która czasami wymusza użycie złego planu wykonania. Deweloperzy twierdzą, że jest to domyślnie i trudno je zmienić (należy to naprawić potencjalnie we wszystkich formularzach).

Tak więc szukałem sposobu na przesłonięcie tych wskazówek za pomocą flag śledzenia. Znalazłem cudowną flagę śledzenia 8722, która rzekomo powoduje, że SQL Server ignoruje pewne wskazówki dotyczące zapytań, szczególnie te w klauzuli OPTION.

Jednak to nie działa w moim przypadku. Próbowałem również włączyć flagę śledzenia 8602 (wyłącz wskazówki indeksu), ale moje zapytanie nadal działa z podpowiedź FAST x (jest znacznie wolniejsze niż wtedy, gdy faktycznie usuwam klauzulę OPTION).

Próbowałem również wyczyścić pamięć podręczną planu, ale bezskutecznie.

Jakieś pomysły? Czy coś mi brakuje?

PS Włączyłem flagi śledzenia na całym świecie, to jest SQL Server 2012 Developer Edition

Nelson 2.0
źródło
1
Jak włączyłeś flagi śledzenia? Czy włączyłeś go podczas uruchamiania serwera lub używając śledzenia dbcc? dbcc traceon jest flagą śledzenia dla każdego połączenia, więc włączenie go w jednym połączeniu klienta nie wpływa na inne połączenia z serwerem. Aby włączyć tę opcję dla całego serwera, musisz dodać -T <numer identyfikacyjny> do wiersza poleceń uruchamiania. Uważam, że możesz użyć śledzenia dbcc (flag1, flag2, ..., - 1), aby zastosować go na całym serwerze, ale nigdy go nie próbowałem.
Mike
Cześć Mike, włączyłem flagi śledzenia globalnie za pomocą DBCC TRACEON (8722, -1), a następnie sprawdziłem status za pomocą DBCC TRACESTATUS. Być może flaga śledzenia nie jest już oficjalnie obsługiwana lub faktycznie muszę ją umieścić w parametrze uruchamiania i ponownie uruchomić usługę, lub jest to przedmiotem CU3 (korzystam z SP2 RTM 2012).

Odpowiedzi:

10

O ile mi wiadomo, flagi śledzenia 8722, 8755 i 8602 nigdy nie zostały oficjalnie udokumentowane. Ostatni raz pamiętam, że były skuteczne w SQL Server 2000, więc nic dziwnego, że zauważyłeś, że są one ignorowane w SQL Server 2012.

W przypadku określonych wzorców zapytań często można usunąć FAST npodpowiedź za pomocą przewodników planu. Mimo to najlepszym rozwiązaniem jest zachęcenie programistów AX do naprawy tego po stronie aplikacji.

Paul White 9
źródło