|SQL Server Architecture Overview
- Client Server Applications
- 90% Application/10% Hardware or vice-versa?
- SQL Server Installation
- SQL Server Upgrading
|Disk IO & Benchmarking – What are we looking for?
- Fragmentation, external and internal
- Batch Requests/Second
|Windows & SQL Server Configuration
- Windows Settings
- Windows & SQL Server Memory
- Optimize for Ad-Hoc Queries
- Forced Parameterization
|System Database Optimisation – why it’s important
- TempDB Optimisation
- UserDB Optimisation
|Database Files – there can only be one?
- Er, no, that’s wrong and here’s why
- File placement
- Interesting Database Properties
|Indexes & Statistics plus Maintenance
- Indexes are critical for performance
- Indexing in Depth
- Statistics are also critical for performance
- Keeping these up-to-date with minimum impact using Scripts and Maintenance Plans
- Rebuild & Reorging Tables
- Clustered, Non-clustered Indexes and Heaps
|Native Monitoring Tools
- What are we looking to measure and why?
- Task Manager/Resource Manager/Performance Monitor & Counters
- Activity Monitor, the good and the bad
- SQL Server Profiler & Extended Events
- Query Store & Live Query Statistics
- DMVs – what is going on?
|(Dead)-Locking & Blocking
- Locking Optimisation
- Isolation levels
- Locking Hints
|New Features of SQL Server
- SQL 2016 SP1 is Amazing!
- Columnstore Indexes
- in-Memory OLTP Tables
- Adaptive Query Processing
- Automatic Database Tuning
- In-Memory improvements in SQL Server 2017
|Logical Query Processing
- Logical Query Processing and how it can help
- The real Order By
|Queries & Application Performance Issues
- Is it the database or is it the app?
- UDFs & Windowing Functions, Grouping and Offset
- Understanding Query Plans