De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL.

Verwante presentaties


Presentatie over: "Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL."— Transcript van de presentatie:

1 Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

2 SQL Server Monitoring en Tuning Peter ter Braake

3 De praktijk DBA Gebruiker Hij doet het niet Hij is traag

4 Performance Optimization Model Server Tuning Locking Indexing Query Optimization Schema Design

5 Schema design • Slecht ontwerp = slechte performance ! • Normaliseren / Denormaliseren – Generaliseren / specialiseren • Ster (Snowflake) • File / Filegroups – Hardware (SAN, RAID) • Partitioning • Views, sprocs, functions • SQL Server 2008: – Filestream – Sparse columns – Compression DB App(s) Workload

6 Symptomen • Veel IO • Hoog memory verbruik • Hoog CPU gebruik • Veel locking WAITS

7 Performance Optimization Model Server Tuning Locking Indexing Query Optimization Schema Design

8 What Is Query Logical Flow? From & Join Where Order By Select Result Set Having Grouping and Aggregation Rows Result Set Result Set Non-aggregate query Aggregate query Order By The Query Logical Flow Diagram Cost Based Optimization Statistics

9 Query plans • Data Retrieval operators: – Table scan – Index scan – Index seek – Row ID Lookup • Join operators – Nested Loop Join – Merge Join – Hash Join

10 Query optimization • Favor set-based logic • Test query variations • Avoid query hints • Use correlated subqueries – EXISTS i.p.v. join • Avoid user-defined functions in WHERE clause • Use table-valued functions as derived tables • Avoid unnecessary GROUP BY columns – Gebruik subquery als mogelijk • Use CASE expressions • Divide joins into temporary tables – DW / partitioning?

11 Index architecture • Heap – Ongesorteerd, ongestructureerd • Clustered index – Gesorteerd, B-Tree, leaf level bevat volledige records – Telefoonboek • Nonclustered index – Gesorteerd, B-Tree, leaf level bevat verwijzingen – Studieboek

12 Tools • Management Studio: – Execution plans – Set statistics IO – Set statistics time – Client Statistics • DMV – Sys.dm_??? • Sys.dm_db_index_physical_stats • Sys.dm_exec_query_plan • …

13 DEMO Show execution plan

14 Indexing • Index strategie bepaald door – Grote database – Verdeling data – Workload (type queries en aantal gebruikers) • Standard reports • Performance Dashboard (Missing indexes) • Profiler • Database Engine Tuning Advisor

15 Tips • Gebruik Covering indexes – Vanaf SQL Server 2005: INCLUDE keyword – Vanaf SQL Server 2008: filtered index • Grote tabellen: – Partitioning – Gebruik temp tables • Vergelijk queries met Show Execution Plan • Database Engine Tuning Advisor • Sys.dm_db_missing_index_columns

16 Performance Optimization Model Server Tuning Locking Indexing Query Optimization Schema Design

17 Concurrency A - Atomicity C - Consistency I - Isolation D - Durability

18 Locking and Blocking • Locks – Shared – Exclusive • Locking hints – ReadPast – Nolock – … • Isolation Levels – Read Committed – Read Uncommitted – Repeatable Read – Serializable – Snapshot – Read Committed Snapshot

19 Symtomen en tools • Deadlocks • Time outs • Slechte respons tijden • Non consistent reads • Current Activity Monitor • Standard reports (server + database level) • Performance dashboard (waits) • Performance monitor • Profiler

20 DEMO Locking

21 Tips • Check Wait stats on blocking • Overweeg Snapshot isolation – Let op TempDB – READ_COMMITTED_SNAPSHOT – SNAPSHOT • Voorkom deadlocks, benader objecten in vaste volgorde

22 Performance Optimization Model Server Tuning Locking Indexing Query Optimization Schema Design

23 Tools • Zeggen helemaal niets zonder referentiekader (= baseline) • Gevaar schuilt in overkill • Eerst denken, dan verifiëren / uitsluiten

24 Tools • SSMS, execution plans • Current Activity Monitor • Standard Reports • Performance Dashboard Reports • Dynamic Management Views / Functions • Performance Monitor • Profiler • Database Tuning Advisor • SQL Server 2008: – Performance Data Collector

25 Enkele Disk IO counters ObjectCounterWaardeOpmerkingen Physical Disk Avg Disk Reads/sec < 8 > 20 is slecht, 20 is slecht, < 20 is ok, < 12 is beter, < 8 is beste Physical Disk Avg Disk Writes/sec < 8 or < 1 Zonder cache: > 20 is slecht, 20 is slecht, < 20 is ok, < 12 is beter, < 8 is beste Met cache > 4 is slecht, 4 is slecht, < 4 is ok, < 2 is beter, < 1 is beste Physical Disk % Disk Time < 90 Tijd dat disk bezig met read/write Physical Disk Avg. Disk Queue Length < 2 Aantal read/write requests dat gemiddeld in de wacht staat. Kleiner dan 2 per spindle Physical Disk Current Disk Queue Length < 2 Aantal read/write requests dat nu in de wacht staat. Kleiner dan 2 per spindle

26 Enkele Memory counters ObjectCounterWaardeOpmerkingen MemoryPage Faults / sec < ? Aantal reads dat niet in de buffer cache gevonden wordt Memory Available Mbytes > 100 Beschikbare physical memory in computer voor processen SQL Server: Memory Manager Memory Grants Pending ~0 Aantal processen dat wacht op geheugen SQL Server: Memory Manager Page Life Expectancy >=300 Aantal seconde dat een page in het geheugen blijft zonder gebruikt te worden voordat hij wordt geflushed SQL Server: Buffer Manager Free List Stalls/sec < 2 Frequentie waarmee verzoeken voor buffers moeten wachten wegens gebrek aan buffers SQL Server: Buffer Manager Page reads/sec (Page writes/sec)) < ? Zo klein mogelijk houden (meer cache, betere indexen, efficientere queries, beter db ontwerp)

27 Operating System ObjectCounterWaardeOpmerkingen Paging%Usage<70% % van de pagefile dat momenteel gebruikt wordt Processor % Processor Time <= 80% Hoe hoger, hoe groter de kans op wachttijden. Processor % Privilege Time < 30% van % Processor Time Tijd gebruikt voor Kernel requests zoals IO Process(sqlservr) % Processor Time < 80% Tijd besteed aan SQL Server System Processor Queue Length < 4 < 12 per CPU is ok, < 8 is beter, < 4 is beste

28 Enkele SQL Server Counters ObjectCounterWaardeOpmerkingen :Access Methods Forwarded Records/sec < 10 Forwarding pointer gebruikt: < 10 per 100 batch requests/sec. :Access Methods Page Splits/sec < 20 Aantal Page splits: < 20 per 100 batch requests/sec. :Databases Log Growths/sec; Percent Log used < 1 and <80%, resp Beheer proactief :SQL Statistics Batch Requests/sec ? Eigen baseline: > 1000 is veel. :SQL Statistics Compilations/sec ;Recompilations/ sec ? < 10% of batch requests/sec ; Recompilations < 10% of compilations/sec :LocksDeadlocks/sec < 1 Profiler, code aanpassen.

29 Tip: • SQL Server 2008 introduceert Resource Governor – Resources toekennen op basis van connection information via • Classifier Function • Resource Groups • Resource Pools • Alleen indien nodig

30 Wat nog mist … • … is het belangrijkste van allemaal … • … want 80 zegt mij helemaal niets … • … zonder referentie! • BASELINE

31 Wat is Performance Data Collector? • Framework om diagnostische informatie te – Verzamelen – Op te slaan – Analyseren • Bestaat uit tools voor – Verzamelen van data zonder hoge kosten – Opslaan van de gegevens – Reporting • Ingebouwd in Server, aanspreekbaar door API’s – Ter vervanging van third party monitoring tools, want flexibeler?

32 Componenten • Data Provider – Informatiebron zoals T-SQL queries, SQL Trace, PerfMon counters, logs, … • Collector Type – Package die informatie haalt uit een Data Provider • Collection Item – Instantie van een Collector Type – Bepaalt input (welke counters, kolommen, …) met welke frequentie • Collection Set – Logische groepering van Collection Items – Definiëren via.NET API of T-SQL • Management Data Warehouse

33 Built-in collection sets • Disk Usage – Disk usage voor alle databases • Query Activity – Interessante queries (per cpu, time, IO) – Caches sys.dm_exec_query_stats • Server Activity – Wait states, memory, performance counters

34 Management Data Warehouse • 3 schema’s – Core – Organizing and Identifying collected data – Snapshot – Store data for system data collectors – Custom_snapshot – Store data for 3rd party data collectors • Groeit (bij standaard gebruik) met 250 – 350 MB per dag! • Plaats op aparte server

35 Zelf collection sets maken: • USE MSDB • EXEC dbo.sp_syscollector_create_collection_set • EXEC pressure N’ ’, • … • EXEC sp_syscollector_start_collection_set

36 DEMO Performance Data Collector

37 Performance Optimization Model Server Tuning Locking Indexing Query Optimization Schema Design BASELINE Pro Actief Beheer

38 De praktijk DBA Gebruiker Hij doet het niet Hij is traag wel nooit

39 Bedankt Peter ter Braake


Download ppt "Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL."

Verwante presentaties


Ads door Google