Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Microsoft SQL Server 2000 optymalizacja wydajności

Podobne prezentacje


Prezentacja na temat: "Microsoft SQL Server 2000 optymalizacja wydajności"— Zapis prezentacji:

1 Microsoft SQL Server 2000 optymalizacja wydajności
Michał Kostrzewa Microsoft Sp. z o.o. Microsoft Professional Developer Days 2004

2 Plan Metodologia Narzędzia Wydajność serwera Wydajność aplikacji
Podsumowanie

3 Wydajność : definicje Co to jest wydajny system ?
za wolno, za mało, niewystarczająco - oczekiwania (użytkownika?) Czas wykonania, wydajność IO, ilość operacji, utylizacja srv Punkt odniesienia - wymierny, do porównań (obecny/cel) Doświadczenie, testy własne/syntet., porównania, empiria (TSQL) RAM+42 HD U3SCSI  437 tx/s (43 kUSD) Mierzalny - w liczbach : min, max, średnia, etc… Koszt – wszystkie potrzebne zasoby ( czas, sprzęt, $$, etc ) Optymalizacja – wykorzystanie dostępnych możliwości Cel – określony, wymierny, realny : kryteria pomiaru, wartości graniczne Bottleneck Analysis : wąskie gardła ( napływ > przerób ) Lokalizacja, przyczyna, długość kolejki, rezultat czy powód ? Rozwiązania : Zmniejszyć napływ, zwiększyć przepływ Czas odpowiedzi (dł. kolejki*czas pracy)+czas pracy Przepustowość il. zadań / czas Baseline The term baseline represents a standard by which something is measured against or compared. A baseline can represent either the existing performance prior to tuning or the performance level a system is typically capable of achieving. If performance information that represented the system when it was running well existed, then that information would become the baseline. If, however, no previous performance information exists, the baseline would represent the performance measured prior to doing any tuning. For the purposes of this course, a baseline represents the performance a component or application should be capable of achieving. Cost Cost represents the time, money, or effort required to upgrade or replace a component. The more expensive, time consuming or difficult the component is to replace, upgrade or augment the higher the cost. Optimize To optimize means to make the best use of a component’s baseline performance. If you have a high cost item that only exhibits 10 percent utilization, that component has not been optimized Expectations can be based on a number of factors including but not limited to the following: Previous experience Application-specific benchmarks Industry-specific benchmarks Similar configurations and applications Previous versions of the product Ensure Valid Comparisons

4 Metodologia : DETECT Discover the problem [problem-finding]
Discover, Describe, Document ( Don’t panic  ) Explore its boundaries [problem-defining] Explore, Establish and Evidence ( to NIE jest faza Execute ) Zbierz informacje Track down possible approaches [strategy-planning] Analiza danych, konsultacje, kb, hipoteza jak udowodnić hipotezę, jak rozwiązać problem Execute most likely approach [strategy-selection] Dowód hipotezy, Rozwiązanie problemu Check for success ( kolejna iteracja ? ) [strategy-testing] Czy właściwa hipoteza ? Rozwiązanie dało zamierzony efekt ? Tie off loose ends [final evaluation] Analiza skutków, także ubocznych… Czy efekt jest satysfakcjonujący ? … + dokumentacja !

5 Plan Metodologia Narzędzia Wydajność serwera Wydajność aplikacji
Podsumowanie

6 Narzędzia : SysMon/PerfMon
Zastosowanie: aby określić braki zasobów CO się dzieje, poparcie hipotez, punkt odniesienia SysMon vs PerfMon – różnice Pamiętajmy o kolejności : Pamięć, dyski, procesor(y), sieć, inne ( + zależności … ) Zalecenia Log zamiast wykresu Czas trwania pomiaru, interwał, rozmiar > 4 sek., > 1000 pomiarów, Liczniki Cache, memory, paging file, physical disk, logical disk, process, thread, processor, system, SQL Server, sieciowe Zależności pomiędzy licznikami - oraz wskazaniami in. narzędzi Synchronizacja zegarów 

7 Narzędzia : SQL Trace/Profiler
SQL Trace vs SQL Profiler Zastosowanie Monitoring, tuning ( + ITW), debug, audyt, replay Zalecenia Filtrowanie ( pre-filtering ) ! Pionowe i poziome ( wiersze / atrybuty ) SQL Trace i SQL Profiler Profiler może generować skrypt dla Trace Trace - zapis do pliku ( do tabeli – profiler ! ) Do analizy w SQL – pobieramy ::fn_trace_gettable Lokalizacja ( + objętość ) plików : %TMP% Stwórz „log odniesienia” do porównań

8 Narzędzia : Index Tuning Wizard
Input Workload: Index Tuning Wizard SQL Script File Trace File Trace Table SQL Script Reports: Index Usage (Recommended) Index Usage (Current) Table Analysis View – Table Relations Query – Index Relations (Recommended) Query – Index Relations (Current) Query Cost Workload Analysis Tuning Summary Exec Query - Returns Only Execution Plan Costs Index variations Cost (I/O, CPU) Database Tips and Hints : Mało efektywny przy obiektach tymczasowych Nie optymalizuje triggerów ! ITW obciąża serwer  Ostrożnie z Optimizer hints ( wymuszone; ITW dołącza ) ITW domyślnie dostraja 200 zapytań ( min )

9 Narzędzia : pomocnicze…
Narzędzia Microsoft Monitoring OS Tlist, Pviewer, Pstat Memsnap, Gflags Monitoring SQL SQLDiag ( „snapshot” ) Systemowe procedury, widoki Dociążenie systemu CpuStress, LeakyApp SQLIO2 ( MS Research ) SQL70IOStress Dociążenie SQL MS TPC-B Benchmark Kit SQL Load Simulator Narzędzia inne SQL Server : DBCC DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE DBCC FLUSHPROCINDB (dbid) DBCC INPUTBUFFER (SPID) DBCC SHOW_STATISTICS (table, target) DBCC MEMORYSTATUS DBCC CUSORSTATS (SPID [,CLEAR]) DBCC PSS [( UID [, SPID[, PRINTOPT]] )] DBCC SQLPERF (‘WAITSTATS’ [,CLEAR]) DBCC SQLPERF ('IOSTATS') DBCC SQLPERF ('NETSTATS') DBCC SQLPERF ('RASTATS') DBCC SQLPERF ('UMSSTATS') DBCC SQLPERF ('UMSSPINSTATS') DBCC SQLPERF ('SPINLOCKSTATS') DBCC SQLPERF ('THREADS') DBCC SQLMGRSTATS DBCC CACHESTATS SQL Server : Trace flags

10 Plan Metodologia Narzędzia Wydajność serwera Wydajność aplikacji
Podsumowanie

11 SQL Server : wykorzystanie pamięci
Wykorzystanie pamięci w systemie Dynamiczne wykorzystanie pamięci ( dostępna - 4 MB ) auto-tuning ( desktop  „big iron” ); 3GB, PAE / AWE Min/max server mem, set working set size, min memory per query Komponenty : System code System pool Buffer pool Data cache ( Przeterminowane, lazywriter ) Procedure cache ( przeterminowanie ) Lock workspace Log cache ( „write-ahead” ) Ile pamięci wystarczy - zależy od obciążenia ( OLTP/DSS ) indeksy, sortowanie - tempdb

12 SQL Server : wykorzystanie I/O
Parametry pracy – autodostrajane Pełne wykorzystanie mechanizmów OS Ustawienia : niebuforowany odczyt, zapis Asynchroniczne operacje I/O - systemy NT/2000/XP/2003 Operacje na puli buforów ( ReadFileScatter, WriteFileGather ) I/O - rodzaje aktywności Read ahead : czyta Extent ( 8 stron – 64 kB ), scan Enterprise : dynamiczny rozmiar read ahead, merry-go-round scan Tabele Indeksy Non-clustered Lazywriter : zapisuje strony ( 8 kB ) Logwriter : zapisuje, do 32 kB TempDB Co zaburza : Kompresja, szyfrowanie, fragmentacja, filter drv ( AV ) File_Auto_Grow, Auto_Shrink, Auto_Close DB Recovery Model

13 Wydajność I/O : konfiguracja RAID
Stripe Size : NIE MA uniwersalnej recepty Kontroler, caching, ilość dysków, typ dysków… Wybór właściwego trybu RAID 1 ? ( log transakcyjny ) RAID 5 ? ( mniej obciążona baza danych ) RAID 0+1 ( 1+0 ) ? ( mocno obciążona baza danych ) Wydajność urządzeń – o czym warto pamiętać SCSI vs IDE ( Write Cache Enable, SCSI Tagged queuing, SCSI Sync. transfers ) Wydajność : „Burst read” vs Random I/O Przepustowość kontrolera / kanału PCI/PCI64/PCI-X Ilość dysków / kontroler, Kontrolerów / kanał I/O 32K 8K

14 SQL Server : wykorzystanie CPU
Co wpływa na obciążenie CPU Kompilacje / rekompilacje planów Operacje wykonywane równolegle Konfiguracja OS - background priority Inne procesy, sterowniki…, NUMA SQL Server Priority Boost Affinity Mask Lightweight Pooling Max Degree of Parallelism Cost Threshold for Parallelism Max Worker Threads Trudno jest ocenić wymagania dotyczące procesora Pomoc : set statistics, testy wydajności Koszt procesora nie rośnie liniowo – MHz, rozmiar cache

15 SQL Server : monitoring
Utylizacja pamięci Memory: Available Bytes, Pages/sec, Page Faults/sec Process: Page Faults/sec SQL Server: Buffer Manager: Buffer Cache Hit Ratio SQL Server: Buffer Manager : Page Life Expectancy SQL Server: Buffer Manager : Free Pages Kolejkowanie I/O ( Windows 2000 : diskperf ) PhysicalDisk: % Idle Time, % Disk Time PhysicalDisk:Current Disk Queue Length, Avg. Disk Queue Length SQL Server: Buffer Manager Page Reads/sec, Page Writes/sec Obciążenie CPU System: % Total Processor Time System: Processor Queue Length, Context switches/sec Processor: % Privileged Time, % User Time, % Processor Time Process:% Processor Time

16 SQL Server : zalecenia System = całość, współpracujące komponenty (OLTP/DW) Oceń użycie pamięci Oceń podsystem I/O Rozkład bazy danych, tempdb, log, idx, partycjonowanie poz/pion Oceń wpływ pamięci i podsystemu I/O na CPU Wykorzystaj możliwości OS 2000 Server/2003 Server : 4 CPU, 4 GB 2000 Advanced/2003 Enterprise : 8 CPU, 8 GB / 8 CPU, 32 GB 2000 Datacenter/2003 Datacenter: 32 CPU, 64 GB/64 CPU, 64 GB SQL Server 64-bit + Windows 2003 : 64 CPU, 512 GB Windows 2003 : usprawnione SMP, HyperThreading w Pentium IV Wykorzystaj możliwości bazy danych Indexed Views, Distributed Partitioned Views, merry-go-round

17 Plan Metodologia Narzędzia Wydajność serwera Wydajność aplikacji
Podsumowanie

18 Blokowanie / transakcje : zalecenia
Optymalizacja blokowania Właściwy Transaction Isolation Level krótkie transakcje, w pojedynczym batch’u NIEINTERAKTYWNE + szybkie przetwarzanie wyników ROLLBACK przy wystąpieniu błędu Ostrożnie z implicit transactions, nested transactions Właściwe indeksy – Index Tuning Wizard Inni podejrzani : Locking hint, Index hint, Join hint Optymalizacja zakleszczeń ( ??? ) Kontroluj kolejność dostępu do zasobów Użycie bound connections SET DEADLOCK_PRIORITY, SET LOCK_TIMEOUT Ostateczność : Deadlock retry logic w aplikacji

19 Blokowanie / transakcje : monitoring
SQL Server - kto blokuje, kto jest blokowany (spid) sp_who2, sp_lock, sysprocesses, syslockinfo Wykorzystaj SQL Trace Blocking script - wyszukuje blokady poczynając od sysprocesses. Q INF: How to Monitor SQL Server 2000 Blocking DBCC PSS, DBCC INPUTBUFFER, sp_lock Konfiguracja przed użyciem System Monitor ( per db, tabelę, extent, stronę, klucz…. ) SQL Server Locks : Average Wait Time (ms) SQL Server Locks : Lock Requests/sec SQL Server Locks : Lock Timeouts/sec SQL Server Locks : Lock Wait Time (ms) SQL Server Locks : Lock Waits/sec SQL Server Locks : Number of Deadlocks/sec

20 Aplikacja : zalecenia Interakcja klienta z serwerem – caching planów :
Procedury wbudowane - Gdy kod używany przez wiele aplikacji Zapytania ad hoc - PROSZĘ NIE UŻYWAĆ ! Autoparameteryzacja - Gdy nie możemy zmodyfikować aplikacji sp_executesql + param. - Wielokrotne wykonanie przez klienta Prepare / Execute - jw. Kontrolowane przez app. Uwaga na parametry połączeń klientów, używane nazwy procedur Kursory ostrożnie, wybierz najmniej obciążające, uwaga na degradację Którą bibliotekę wybrać ? ( Która biblioteka jest najwydajniejsza ? ) ADO.NET, OLEDB, ADO, ODBC, … Efektywne wykorzystanie : Połączenia i pooling : ADO.Connection, ADO.NET IDbConnection Procedury/plany : ADO.Command, ADO.NET : IDbCommand Singleton select – stosuj procedury i parametry wyj. zamiast zbiorów Zbiór rekordów : ADO.Recordset, ADO.NET DataSet Ograniczać poziomo i pionowo disconnected recordsets - do przesyłania danych pomiędzy komponentami

21 Aplikacja : monitoring
Typ pracy aplikacji ? ( biblioteki/kursory/procedury…) Niezbędne informacje SQL Trace - zapytania, procedury, operacje na kursorach System Monitor : SQL Server Access Methods : * SQL Server Locks : * SQL Server General Statistics : Logins/sec, Logouts/sec SQL Server Databases : Transactions/sec SQL Server SQL Statistics : Batch Requests/sec SQL Server SQL Statistics : Failed Auto-Params/sec SQL Server SQL Statistics : Safe Auto-Params/sec SQL Server SQL Statistics : SQL Compilations/sec, SQL Re-Compilations/sec SQL Server SQL Statistics : Unsafe Auto-Params/sec TSQL : Set Statistics IO, Set Statistics Time DBCC CursorStats, DBCC SQLMgrStats, DBCC MemoryStatus Query Analyzer : Client Statistics, Server Statistics

22 Zapytania : zalecenia Zweryfikuj istniejące indeksy
Rodzaj ( clustered/nonclustered, covering, indexed view ) Wybór/wielkość atrybutów w kluczu ( CL ), rozkład w BD fragmentację, fillfactor, pad_index Zaprzyjaźnij się z Index Tuning Wizard Raporty wykorzystania indeksów, propozycje zmian Dbaj o indeksy i statystyki DBCC SHOWCONTIG / DBCC INDEXDEFRAG CREATE INDEX WITH DROP_EXISTING przy przebudowie indeksu CL Statystyki – podstawa wyboru efektywnego planu operacji I/O Przejrzyj / zmień zapytanie : Query Analizer Zawęź zakres poszukiwań Unikaj IN, OR, NOT oraz < > Ostrożnie z tabelami tymczasowymi Ostrożnie z agregatami w perspektywach Ostrożnie z konwersjami – zwłaszcza w zapytaniach Ostrożnie z sortowaniem Unikaj Optimizer Hints

23 Zapytania : monitoring
CO jest problemem ? Które zapytania/procedury ? Jakie tabele/indeksy są w tym zamieszane ? Kwestia zapytań czy blokad ? Problem jest po stronie klienta czy serwera ? Problem bazy danych / aplikacji / użytkownika ? Niezbędne informacje SQL Server Trace - Długo działające zapytania, procedury Missing Column Statistics, Hash | Sort Warnings, Recompile System Monitor : SQL Server Access Methods : * SQL Server Access Methods : Full Scans/sec SQL Server Access Methods : Page Splits/sec SQL Server Locks : Average Wait Time (ms) SQL Server Locks : Number of Deadlocks/sec SQL: sysprocesses, DBCC SHOWCONTIG, DBCC SHOW_STATISTICS

24 Plan Metodologia Narzędzia Wydajność serwera Wydajność aplikacji
Podsumowanie

25 Podsumowanie Metodologia : JEST NIEZBĘDNA
Problem, stan bieżący, pomysły, wykonanie, ocena Narzędzia – uzupełniające : system, SQL, ResKit, Support tools Serwer : zależności ( mem, IO, CPU,…) - System wyważony Pamięć jest najcenniejszym zasobem - buforowanie Efektywnie wykorzystaj przepustowość I/O Blokowanie danych - niezbędne dla spójności Może być przyczyną niewydolności Konstrukcja aplikacji Unikaj kursorów serwerowych - „hit’n’run” Mechanizmy platformy (Connection pooling, COM+ object pooling, JITA) Konstrukcja zapytań i bazy danych Zapytania – dostosowane do struktury bazy danych ( lub odwrotnie  ) Index Tuning Wizard, Query Analyzer, SQL Trace/Profiler (de)/normalizacja, partycjonowanie Wykorzystaj wbudowane mechanizmy samodostrajania

26 Bibliografia Microsoft Developer Network Witryny tematyczne Newsgroups
Subskrybcja, MSDN Online Witryny tematyczne Newsgroups microsoft.public.sqlserver.* ( 25 grup ) Microsoft Press Microsoft Official Curriculum

27 Technetografia Microsoft TechNet - Subskrybcja, Online
Q INF: How to Monitor SQL Server 2000 Blocking Q INF: Definition of Sysprocesses Waittype and Lastwaittype Fields for SQL Server 7.0 Q INF: Understanding and Resolving SQL Server 7.0 or 2000 Blocking Problems Q INF: Troubleshooting Application Performance with SQL Server Q INF: Troubleshooting Slow-Running Queries on SQL Server 7.0 or Later Q INF: Troubleshooting Performance of Ad-Hoc Queries Q INF: Troubleshooting Stored Procedure Recompilation

28 …dziękuję za uwagę - pytania ?

29 Dziękuję za uwagę !


Pobierz ppt "Microsoft SQL Server 2000 optymalizacja wydajności"

Podobne prezentacje


Reklamy Google