Microsoft SQL Server 2000 optymalizacja wydajności

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Architektura SAP R/3 Wybrane zagadnienia.
SYSTEMY OPERACYJNE WSTĘP
Promotor: prof. dr hab. inż. Andrzej Grzywak mgr inż. Piotr Kasprzyk
Wydajne aplikacje na platformie .NET
Microsoft Professional Developer Days 2004
Microsoft Windows 2000 dla Administratora. Podstawowe możliwości Wielojęzyczność Wielojęzyczność Usprawnienia interfejsu użytkownika Usprawnienia interfejsu.
ADAM Active Directory w trybie aplikacyjnym
OLAP budowa aplikacji analitycznych w MS SQL 2000 i Yukon
20/09/ Języki programowania 1 Piotr Górczyński Kreator form.
Tworzenie ASP.NET Web Form
Systemy zarządzania bazami danych 10. Strojenie. Oryginał: Shasha & Bonnet10. Strojenie2.
Rozdział 13: Architektura systemu Oracle
Co to jest studium przypadku?
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 3: Struktura systemu operacyjnego
Serwerowe systemy pamięci tłumaczeń dr inż. Agenor Hofmann-Delbor
Czym jest ISA 2004 Microsoft Internet Security and Acceleration Server 2004 jest zaawansowaną zapora filtrującą ruch w warstwie aplikacji. Razem z zaporą.
ETL – wymiana danych Michał Jabłonka
Zapytania SQL: wydajność i optymalizacja
Information Bridge Framework platforma integracji Microsoft Office 2003 z aplikacjami Line of Business Krzysztof Michalski10/01/2005.
Wzorce projektowe w J2EE
Rozproszone bazy danych
Systemów Operacyjnych
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Efektywna transmisja plików za pomocą TCP Piotr Kasprzyk Instytut Informatyki Politechniki Śląskiej.
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Systemy operacyjne i sieci komputerowe
Mechanizm kompresji danych w SQL Server 2008
Microsoft Sharepoint 2010 – Peter Dabrowski
TBD - P ERFORMANCE W BAZACH M ICROSOFT SQL S ERVER, CZYLI O CO W TYM W OGÓLE CHODZI Michał Grodzicki MCTS SQL SERVER lipca 2012.
PowerPivot dla DBA mgr inż. Paweł Potasiński.
MySQL – ODBC - ACCESS.
Bezpieczna platforma SharePoint
CUDA & CUDA.NET – czyli istne CUDA Piotr Ablewski
… iSCSI … Windows Server 2012 Łukasz Dylewski.
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Tryb tabelaryczny w Analysis Services 2012
N OWOŚCI W SQL S ERVER 2008 Z PUNKTU WIDZENIA ZESPOŁÓW PROJEKTUJĄCYCH W.NET Oskar Jarczyk.
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
Promotor: dr.inż. Aleksandra Werner
IBM mainframe jest optymalnym serwerem, o ile … (czy musi być tak drogo?)
Prezentacja i szkolenie
ASP BAZY. 2.2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC.
SQL - Structured Query Language
Aplikacje bazodanowe ADO.NET PHP i MySQL
Architektura PC.
Wybrane zagadnienia relacyjnych baz danych
Systemy Zarządzania Bazami Danych
Komendy SQL do pracy z tabelami i bazami
ASP BAZY DANYCH. 2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika.
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Windows Server 2008 Zarządzanie systemem.
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
321 System plików NTFS. NTFS (ang. New Technology File System) – standardowy system plików systemu Microsoft Windows NT i jego następców (Windows 2000,
DynamoDB w pigułce.
BUDOWA I ZASADA DZIAŁANIA
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Pamięć RAM Pamięć RAM.
.NET i Bazy Danych Projekt: Wadim Grasza.
Powtórzenie wiadomości na sprawdzian 12 lutego (wtorek)
Optymalna konfiguracja Microsoft SQL Server 2014
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Warszawska Wyższa Szkoła Informatyki Andrzej Kuska Promotor : dr inż. Paweł Figat Konsultant : mgr inż. Andrzej Ptasznik.
Optymalizacja zapytań w SQL Server
Optymalizacja SAS OLAP Studio
Testowanie baz danych - fakty i mity
Technologie Informacyjne Bazy danych
Zapis prezentacji:

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

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

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) 1xPIII@1,2GHz+2,25GB 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

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 !

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

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 

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ń

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. 1000 )

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 www.sysinternals.com 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

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

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

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

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

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

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

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

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

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

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. Q271509 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

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

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

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

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

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

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

Bibliografia Microsoft Developer Network Witryny tematyczne Newsgroups Subskrybcja, MSDN Online Witryny tematyczne http://www.microsoft.com/sql/ http://www.sqlmag.com/ http://www.sqlpass.org/ http://www.winntmag.com http://www.mssqlserver.com/ http://www.swynk.com/ http://www.sql-server-performance.com/ http://www.transactsql.com/ http://www.sqlservercentral.com/ http://mssqlserver.org.pl/ Newsgroups microsoft.public.sqlserver.* ( 25 grup ) Microsoft Press Microsoft Official Curriculum

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

…dziękuję za uwagę - pytania ?

Dziękuję za uwagę !