Udostępnij za pośrednictwem


Profilowanie wydajności sterownika ODBC

The SQL Server Native klient ODBC driver can profile two types of performance data:

  • Długo wykonujące kwerendy.

    Sterownik można zapisać pliku dziennika dowolny typ kwerendy, która nie otrzymuje odpowiedzi z serwera w określonym czasie.Programistom i administratorom bazy danych mogą być następnie badania każdego rejestrowane instrukcję SQL, aby określić, 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 pliku rozdzielanego znakami tabulacji, który można łatwo analizować z dowolnego arkusza kalkulacyjnego, które obsługują pliki znaki tabulacji, takich jak program Microsoft Excel.

Profilowanie dowolnego typu mogą być włączane przez:

  • Podłączanie do urządzenie źródłowe danych, które określa rejestrowanie.

  • Wywołanie SQLSetConnectAttr ustawić atrybutów specyficznych dla sterownika profilowania formantu.

Każdy proces aplikacji pobiera własną kopię SQL Server Macierzysty sterownik ODBC klient i Profilowanie jest globalny kombinacji kopią sterownika i procesem aplikacji. Gdy wszystko, co w aplikacji włącza profilowania, profilowania rejestruje informacje dla wszystkich połączeń aktywnych w sterowniku z tej aplikacji.Włącza się nawet połączeń, które nie specjalnie zadzwonić do profilowania.

Po otwarciu dziennika profilowania (dane dotyczące wydajności lub długo działającą kwerendę dziennika) sterownika nie zamyka dziennik, dopóki sterownik jest zwalniane przez menedżera sterownika ODBC, gdy wszystkie dojścia środowiska on otwarty w sterowniku zwalnia aplikację.Jeśli aplikacja zostanie otwarte dojścia do nowego środowiska, nowa kopia sterownik jest ładowany.Jeśli aplikacja następnie albo łączy się ze źródłem danych, które określa, w tym samym pliku dziennika lub ustawia atrybuty specyficzne dla sterownika, aby zalogować się do tego samego pliku, sterownik zastępuje stary dziennik.

Jeśli uruchamiania aplikacji profilowania w pliku dziennika, a druga aplikacja podejmowana jest próba uruchomienia profilowania do tego samego pliku dziennika, druga aplikacja nie będzie mógł rejestrować żadnych danych profilowania.Jeśli druga aplikacja jest uruchamiana profilowania po pierwszej aplikacji zostało zwolnione jego sterownik, druga aplikacja zastąpi plik dziennika z pierwszej aplikacji.

Jeśli aplikacja łączy się ze źródłem danych, zawierający profilowania włączony, sterownik zwraca SQL_ERROR, jeśli aplikacja wywoła SQLSetConnectOption , aby rozpocząć rejestrowanie.Wywołanie SQLGetDiagRec 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 powoduje zatrzymanie zbierania danych dotyczących wydajności, po zamknięciu dojście do środowiska.Jeśli SQL Server Aplikacja klient macierzysty ma wiele połączeń, każdy z uchwytu środowiska, a następnie sterownik zatrzyma zbierania danych dotyczących wydajności, gdy dowolny z uchwytów skojarzone środowiska zostaną zamknięte.

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

  • Stosowanie profilu

  • Połączenia

  • Sieci

  • Godzina

W poniższej tabela opisy pól w strukturze danych SQLPERF mają również zastosowanie do statystyk, rejestrowane w pliku dziennika wydajności.

Statystyka profilu aplikacji

Pole SQLPERF

Description

TimerResolution

Minimalna rozdzielczość czas zegara z serwerem (w milisekundach).To jest zazwyczaj raportowane jako 0 (zero) i należy traktować tylko jako Jeżeli numer zgłaszane jest duża.Jeśli minimalna rozdzielczość zegara serwera jest większy niż prawdopodobnie interwał dla niektórych danych statystycznych na czasomierz, 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 przetworzonych po SQL_PERF_START instrukcji SELECT.

SQLSelectRows

Liczba wierszy po SQL_PERF_START opcję.

Transakcje

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

SQLPrepares

Liczba SQLPrepare wywołuje po SQL_PERF_START.

ExecDirects

Liczba SQLExecDirect wywołuje po SQL_PERF_START.

SQLExecutes

Liczba SQLExecute wywołuje po SQL_PERF_START.

CursorOpens

Liczba określająca, ile razy sterownik otworzył kursor serwera po SQL_PERF_START.

CursorSize

Liczba wierszy w zestawach wyników, otwierany 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/CursorSize.Na przykład jeśli aplikacja powoduje otwarcie kursor serwera do wykonania "SELECT Count(*) FROM autorzy" sterownika, 23 wierszy będzie w wyniku dla instrukcja SELECT.Jeśli następnie aplikacja pobiera tylko trzy z tych wierszy, CursorUsed/CursorSize jest 3/23, więc PercentCursorUsed 13.043478.

AvgFetchTime

Jest równe SQLFetchTime/SQLFetchCount.

AvgCursorSize

Jest równe CursorSize/CursorOpens.

AvgCursorUsed

Jest równe CursorUsed/CursorOpens.

SQLFetchTime

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

SQLFetchCount

Liczba pobiera Sporządzono przed kursory serwera po SQL_PERF_START.

CurrentStmtCount

Liczba dojść do instrukcja aktualnie otwartych dla wszystkich połączeń otwarte 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.

Statystyka połączenia:

 

CurrentConnectionCount

Bieżąca liczba uchwytów aktywne połączenie ma otwierać się na serwerze.

MaxConnectionsOpened

Maksymalna liczba równoczesnych połączeń uchwyty otwierane po SQL_PERF_START.

SumConnectionsOpened

Suma liczbę dojść połączenia, które zostały otwarte po SQL_PERF_START.

SumConnectionTime

Suma czas, że wszystkie połączenia zostały otwarte po SQL_PERF_START.Na przykład jeśli aplikacja otwarte 10 połączeń i utrzymywane 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łane polecenia do serwera i uzyskał odpowiedź ponownie.

BuffersSent

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

BuffersRec

Liczba odebranych przez kierowcę z pakietów TDS SQL Server Po uruchomienia aplikacji za pomocą sterownika.

Żądania

Liczba bajtów danych wysłanych do SQL Server w pakiety TDS po zastosowaniu uruchamiane przy użyciu sterownika.

BytesRec

Liczba bajtów danych odebranych przez sterownik z Pakiety TDS SQL Server Po uruchomienia aplikacji za pomocą sterownika.

Statystyki czas

Pole SQLPERF

Description

msExecutionTime

Skumulowany ilości czas poświęconego sterownik przetwarzania po SQL_PERF_START, w tym momencie wydanego oczekiwanie na odpowiedzi z serwera.

msNetworkServerTime

Skumulowany ilość czas sterownik wydanego oczekiwanie na odpowiedzi z serwera.