applicatieplatform congres 12 & 13 maart peter ter braake trainsql
TRANSCRIPT
![Page 1: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/1.jpg)
Applicatieplatform congres12 & 13 maart
Peter ter BraakeTrainSQL
![Page 2: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/2.jpg)
De praktijk
DBAGebruiker
Hij doet het niet
Hij is traag
![Page 3: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/4.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/5.jpg)
Symptomen
• Veel IO• Hoog memory verbruik• Hoog CPU gebruik• Veel locking
WAITS
![Page 6: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/6.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/8.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/9.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/10.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/11.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/12.jpg)
DEMOShow execution plan
![Page 13: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/13.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/14.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/15.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/16.jpg)
Concurrency
A - AtomicityC - ConsistencyI - IsolationD - Durability
![Page 17: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/17.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/18.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/19.jpg)
DEMOLocking
![Page 20: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/20.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/21.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/22.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/23.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/24.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/25.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/26.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/27.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/28.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/29.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/30.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/31.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/32.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/33.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/34.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/35.jpg)
DEMOPerformance Data Collector
![Page 36: Applicatieplatform congres 12 & 13 maart Peter ter Braake TrainSQL](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/36.jpg)
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](https://reader038.vdocuments.site/reader038/viewer/2022103016/5551a0ee4979591f3c8b6e88/html5/thumbnails/37.jpg)
De praktijk
DBAGebruiker
Hij doet het niet
Hij is traag
wel
nooit