Udostępnij za pośrednictwem


Profilowanie wydajności sterownika ODBC

SQL Server Sterownik ODBC macierzystym klienta można profilu dwa typy danych dotyczących wydajności:

  • Długo działającymi kwerendami.

    Sterownik można zapisać pliku dziennika wszystkie kwerendy, która nie otrzymuje odpowiedzi z serwera w określonej ilości czas.Programistom lub bazy danych Administratorzy mogą następnie badania każdego rejestrowane instrukcja języka SQL do określenia, jak można poprawić jego wydajność.

  • Dane wydajności sterownika.

    Sterownik można rejestrować statystyki wydajności i albo zapisać do pliku lub udostępnić je do aplikacji za pośrednictwem struktury danych specyficznych dla sterownika o nazwie SQLPERF.Plik zawierający statystyki wydajności jest plik rozdzielany tabulatorami, który można łatwo analizować z dowolnego arkusza kalkulacyjnego, który obsługuje pliki rozdzielane tabulatorami, takich jak Microsoft Excel.

Profilowanie dowolnego typu może być włączony przez:

  • Łączenie z danymi źródło , który określa rejestrowanie.

  • Wywołanie SQLzestawConnectAttr do zestaw atrybuty specyficzne dla sterownika sterowania profilowania.

Każdy proces aplikacji pobiera własną kopię SQL Server sterownik ODBC macierzystym klienta i profilowanie jest globalne kombinacji kopią sterownika i procesu aplikacji.Kiedy cokolwiek w aplikacji włącza profilowania, profilowania rejestruje informacje dla wszystkich połączeń aktywnych w sterowniku z tej aplikacji.Uwzględniono nawet połączeń, które nie wyraźnie wzywają do profilowania.

Po sterownik otworzył profilowania dziennika (dane dotyczące wydajności lub długim dziennika kwerend), nie zamyka dziennik, dopóki sterownik jest zwolnione przez menedżera sterownika ODBC, gdy uchwyty środowiska on otwarty w sterowniku zwalnia aplikację.Jeśli aplikacja otworzy nowe dojścia, nowa kopia sterownik jest ładowany.Jeśli aplikacja następnie albo łączy się z danymi źródło określa tego samego pliku dziennika albo Ustawia atrybuty specyficzne dla sterownika, aby zalogować się do tego samego pliku, sterownik zastępuje stary dziennik.

Jeśli uruchamiania aplikacji profilowania do pliku dziennika i drugiej aplikacji próbuje uruchomić profilowania do tego samego pliku dziennika, drugiej aplikacji nie jest w stanie rejestrować żadnych danych profilowania.Jeśli druga aplikacja uruchamia profilowania po pierwszej aplikacji został zwolniony jego sterownik, drugiej aplikacji zastępuje plik dziennika z pierwszej aplikacji.

Jeśli aplikacja łączy się z danymi źródło ma profilowania włączony, sterownik zwraca wartość SQL_ERROR, jeśli aplikacja wywoła SQLSetConnectOption , aby rozpocząć rejestrowanie.Wywołanie SQLGetDiagRec następnie zwraca następujące:

SQLState: 01000, pfNative = 0
ErrorMsg: [Microsoft][SQL Server Native Client]
   An error has occurred during the attempt to access
   the log file, logging disabled.

Sterownik zatrzymuje zbierania danych wydajności podczas zamykania dojścia środowiska.Jeśli SQL Server Native Client aplikacja ma wiele połączeń, każdy z własną dojścia, a następnie sterownik zostanie zatrzymane, zbieranie danych wydajności, gdy jeden z uchwytów środowiska skojarzone są zamykane.

Dane wydajności sterownika być przechowywane w strukturze danych SQLPERF lub rejestrowane w pliku rozdzielanym tabulatorami.Dane obejmują następujące kategorie statystyk:

  • Profil aplikacji

  • Połączenie

  • Sieci

  • Godzina

W poniższej tabela opisy pól w strukturze danych SQLPERF stosuje się także do statystyk rejestrowane w pliku dziennika wydajności.

Statystyki zgłoszeń profilu

Pole SQLPERF

Opis

TimerResolution

Minimalna rozdzielczość zegara serwera czas w milisekundach.To jest zwykle raportowany jako 0 (zero) i powinny być rozważane wyłącznie jeżeli liczba zgłoszonych jest duża.Jeśli minimalna rozdzielczość zegara serwera jest większy niż interwał prawdopodobnie niektóre statystyki na podstawie zegara, może być napompowane tych statystyk.

SQLidu

Liczba instrukcji INSERT, DELETE lub UPDATE po SQL_PERF_START.

SQLiduRows

Liczba instrukcji INSERT, DELETE lub UPDATE po SQL_PERF_START.

SQLSelects

Liczba instrukcji SELECT przetwarzane po SQL_PERF_START.

SQLSelectRows

Liczba wierszy zaznaczonych po SQL_PERF_START.

Transakcje

Liczba transakcji użytkownika po SQL_PERF_START, włączając wycofywanie zmian.Po uruchomieniu aplikacji ODBC z SQL_AUTOCOMMIT_ON, każdego polecenia jest uważany za transakcję.

SQLPrepares

Liczba SQLPrepare wywołania po SQL_PERF_START.

ExecDirects

Liczba SQLExecDirect wywołania po SQL_PERF_START.

SQLExecutes

Liczba SQLExecute wywołania po SQL_PERF_START.

CursorOpens

Liczba przypadków sterownik otworzył kursor serwera po SQL_PERF_START.

CursorSize

Liczba wierszy w zestawach wyników otwarty przez kursory po SQL_PERF_START.

CursorUsed

Liczba wierszy faktycznie pobierane za pośrednictwem sterownika z kursorów po SQL_PERF_START.

PercentCursorUsed

Jest równe CursorUsed i CursorSize.Na przykład, jeśli w aplikacji powoduje, że sterownik, aby otworzyć kursor serwera do "SELECT COUNT(*) FROM autorów" 23 wiersze będą zestaw wyników dla instrukcja SELECT.Jeśli następnie aplikacja pobiera tylko trzy z tych wierszy, CursorUsed i CursorSize jest 3 i 23, PercentCursorUsed jest 13.043478.

AvgFetchTime

Jest równe SQLFetchTime i SQLFetchCount.

AvgCursorSize

Jest równe CursorSize i CursorOpens.

AvgCursorUsed

Jest równe CursorUsed i CursorOpens.

SQLFetchTime

Skumulowana kwota czas pobiera przeciwko kursory serwera, aby zakończyć.

SQLFetchCount

Liczba pobiera Sporządzono przeciwko kursory serwera po SQL_PERF_START.

CurrentStmtCount

Liczba dojść do instrukcja aktualnie otwarte dla wszystkich połączeń otwartych w sterowniku.

MaxOpenStmt

Maksymalna liczba instrukcja jednocześnie otwartych dojść po SQL_PERF_START.

SumOpenStmt

Liczba dojść instrukcja, które zostały otwarte po SQL_PERF_START.

Statystyki połączeń:

 

CurrentConnectionCount

Bieżąca liczba uchwytów aktywne połączenie aplikacja ma otwarte.

MaxConnectionsOpened

Maksymalna liczba dojść połączeń równoczesnych otwarty po SQL_PERF_START.

SumConnectionsOpened

Suma liczba dojść połączeń, które zostały otwarte po SQL_PERF_START.

SumConnectionTime

Suma czas, że wszystkie połączenia został otwarty po SQL_PERF_START.Na przykład jeśli aplikacja otwarty 10 połączeń i utrzymane każdego połączenia przez 5 sekund, SumConnectionTime byłoby 50 sekund.

AvgTimeOpened

Jest równe SumConnectionsOpened / SumConnectionTime.

Statystyki sieci:

 

ServerRndTrips

Liczba przypadków sterownik wysyłany do serwera poleceń i ponownie uzyskano odpowiedzi.

BuffersSent

Liczba pakietów strumienia danych tabelarycznych (TDS) wysłanych do SQL Server przez sterownik po SQL_PERF_START.Dużych poleceń może zająć kilka buforów, więc jeśli dużych polecenia są wysyłane do serwera i wypełnia sześć pakietów, ServerRndTrips jest zwiększany o jeden i BuffersSent jest zwiększana przez sześć.

BuffersRec

Liczba pakietów TDS odebranych przez kierowcę z SQL Server po uruchomieniu aplikacji przy użyciu sterownika.

Żądania

Liczba bajtów danych wysyłanych do SQL Server w pakiety TDS po uruchomieniu aplikacji przy użyciu sterownika.

BytesRec

Liczba bajtów danych TDS pakiety odebrane przez kierowcę z SQL Server po uruchomieniu aplikacji przy użyciu sterownika.

Statystyki czasu

Pole SQLPERF

Opis

msExecutionTime

Skumulowana kwota czas sterownik przetwarzania po SQL_PERF_START, w tym czasie spędzona na oczekiwaniu na odpowiedzi z serwera.

msNetworkServerTime

Łączna liczba czas sterownik poświęconego oczekiwanie na odpowiedzi z serwera.