This course is designed to teach the students how to prevent SQL performance problems and how to improve the performance of existing SQL.
Content
1. Introduction to SQL performance and tuning
• Performance issues
• Simple example
• Visualizing the problem
• Summary
2. Performance analysis tools
• Components of response time
• Time estimates with VQUBE3
• SQL EXPLAIN
• The accounting trace
• The bubble chart
• Performance thresholds
3. Index basics
• Indexes
• Index structure
• Estimating index I/Os
• Clustering index
• Index page splits
4. Access paths
• Classification
• Matching versus Screening
• Variations
• Hash access
• Prefetch
• Caveat
5. More on indexes
• Include index
• Index on expression
• Random index
• Partitioned and partitioning, NPSI and DPSI
• Page range screening
• Features and limitations
6. Tuning methodology and index cost
• Methodology
• Index cost: Disk space
• Index cost: Maintenance
• Utilities and indexes
• Modifying and creating indexes
• Avoiding sortsIndex design
• Approach
• Designing indexes
7. Advanced access paths
• Prefetch
• List prefetch
• Multiple index access
• Runtime adaptive index
8. Multiple table access
• Join methods
• Join types
• Designing indexes for joins
• Predicting table order
9. Subqueries
• Correlated subqueries
• Non-correlated subqueries
• ORDER BY and FETCH FIRST with subqueries
• Global query optimization
• Virtual tables
• Explain for subqueries
10. Set operations (optional)
• UNION, EXCEPT, and INTERSECT
• Rules
• More about the set operators
• UNION ALL performance improvements
11. Table design (optional)
• Number of tables
• Clustering sequence
• Denormalization
• Materialized query tables (MQTs)
• Temporal tables
• Archive enabled tables
12. Working with the optimizer
• Indexable versus non-indexable predicates
• Boolean versus non-Boolean predicates
• Stage 1 versus stage 2
• Filter factors
• Helping the optimizer
• Pagination
13. Locking issues
• The ACID test
• Reasons for serialization
• Serialization mechanisms
• Transaction locking
• Lock promotion, escalation, and avoidance
14. More locking issues (optional)
• Skip locked data
• Currently committed data
• Optimistic locking
• Hot spots
• Application design
• Analyzing lock waits
15. Massive batch (optional)
• Batch performance issues
• Buffer pool operations
• Improving performance
• Benefit analysis
• Massive deletes