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.
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. |
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. |
Zobacz także