applicatieplatform congres 12 & 13 maart peter ter braake trainsql

38
Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Upload: wouter-koster

Post on 13-May-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Applicatieplatform congres12 & 13 maart

Peter ter BraakeTrainSQL

Page 2: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

De praktijk

DBAGebruiker

Hij doet het niet

Hij is traag

Page 3: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Performance Optimization Model

Server TuningServer Tuning

LockingLocking

IndexingIndexing

Query OptimizationQuery Optimization

Schema DesignSchema Design

Page 4: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 5: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Symptomen

• Veel IO• Hoog memory verbruik• Hoog CPU gebruik• Veel locking

WAITS

Page 6: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Performance Optimization Model

Server TuningServer Tuning

LockingLocking

IndexingIndexing

Query OptimizationQuery Optimization

Schema DesignSchema Design

Page 7: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

What Is Query Logical Flow?

From&

Join

Where

Order By

SelectResult

Set

HavingGrouping

and Aggregation

RowsResult

SetResult

Set

Non-aggregate query

Aggregate query

Order By

The Query Logical Flow DiagramThe Query Logical Flow Diagram

Cost Based OptimizationStatistics

Page 8: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Query plans

• Data Retrieval operators:– Table scan– Index scan– Index seek– Row ID Lookup

• Join operators– Nested Loop Join– Merge Join– Hash Join

Page 9: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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?

Page 10: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 11: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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• …

Page 12: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

DEMOShow execution plan

Page 13: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 14: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 15: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Performance Optimization Model

Server TuningServer Tuning

LockingLocking

IndexingIndexing

Query OptimizationQuery Optimization

Schema DesignSchema Design

Page 16: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Concurrency

A - AtomicityC - ConsistencyI - IsolationD - Durability

Page 17: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Locking and Blocking

• Locks– Shared– Exclusive

• Locking hints– ReadPast– Nolock– …

• Isolation Levels– Read Committed– Read Uncommitted– Repeatable Read– Serializable– Snapshot

– Read Committed Snapshot

Page 18: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 19: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

DEMOLocking

Page 20: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Tips

• Check Wait stats on blocking• Overweeg Snapshot isolation

– Let op TempDB– READ_COMMITTED_SNAPSHOT– SNAPSHOT

• Voorkom deadlocks, benader objecten in vaste volgorde

Page 21: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Performance Optimization Model

Server TuningServer Tuning

LockingLocking

IndexingIndexing

Query OptimizationQuery Optimization

Schema DesignSchema Design

Page 22: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Tools

• Zeggen helemaal niets zonder referentiekader (= baseline)

• Gevaar schuilt in overkill• Eerst denken, dan verifiëren / uitsluiten

Page 23: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 24: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Enkele Disk IO countersObject Counter Waarde Opmerkingen

Physical Disk Avg Disk Reads/sec < 8 > 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 ok, < 12 is beter, < 8 is beste

Met cache > 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

Page 25: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Enkele Memory countersObject Counter Waarde Opmerkingen

Memory Page 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 geflushedSQL Server: Buffer

ManagerFree 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)

Page 26: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Operating SystemObject Counter Waarde Opmerkingen

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

TimeTijd 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

Page 27: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Enkele SQL Server CountersObject Counter Waarde Opmerkingen

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

:DatabasesLog

Growths/sec; Percent Log used

< 1 and <80%, resp

Beheer proactief

:SQL Statistics Batch Requests/sec ? Eigen baseline: > 1000 is veel.

:SQL StatisticsCompilations/

sec;Recompilations/sec

? < 10% of batch requests/sec; Recompilations < 10% of compilations/sec

:Locks Deadlocks/sec < 1 Profiler, code aanpassen.

Page 28: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Tip:

• SQL Server 2008 introduceert Resource Governor– Resources toekennen op basis van connection

information via • Classifier Function• Resource Groups• Resource Pools

• Alleen indien nodig

Page 29: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Wat nog mist …

• … is het belangrijkste van allemaal …• … want 80 zegt mij helemaal niets …• … zonder referentie!

• BASELINE

Page 30: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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?

Page 31: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 32: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 33: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

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

Page 34: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Zelf collection sets maken:• USE MSDB• EXEC dbo.sp_syscollector_create_collection_set• EXEC dbo.sp_syscollector_create_collection_item

@name=N'CPU pressure check', @parameters= N’ <xml definition> ’,

@collection_item_id=@collection_item_id_4 OUTPUT,@frequency=5,@collection_set_id=@collection_set_id_1,

@collector_type_uid=@collector_type_uid_3 • …• EXEC sp_syscollector_start_collection_set

Page 35: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

DEMOPerformance Data Collector

Page 36: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Performance Optimization Model

Server TuningServer Tuning

LockingLocking

IndexingIndexing

Query OptimizationQuery Optimization

Schema DesignSchema Design

BASELINE

Pro Actief Beheer

Page 37: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

De praktijk

DBAGebruiker

Hij doet het niet

Hij is traag

wel

nooit

Page 38: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL

Bedankt

Peter ter [email protected]