-
1. Welcome: Differences between MSSQL and PostgreSQL
-
2. Transactions and Locking
- 2.1. Working with PostgreSQL transactions
- 2.2. Handling errors inside a transaction
- 2.3. Understanding basic locking
- 2.4. Avoiding typical mistakes and explicit locking
- 2.5. Making use of FOR UPDATE
- 2.6. Transaction isolation levels
- 2.7. Observing deadlocks and similar issues
- 2.8. Utilizing advisory locks
- 2.9. Optimizing storage and managing cleanup
- 2.10. Home work. Minfin vs. Monobank
-
3. Making Use of Indexes
- 3.1. Understanding simple queries and the cost model
- 3.2. Improving speed using clustered tables
- 3.3. Understanding additional btree features
- 3.4. Understanding PostgreSQL index types
- 3.5. Achieving better answers with fuzzy searching
- 3.6. Understanding full-text search
- 3.7. Home work. Btree indexes
-
4. Optimizing Queries for Good Performance
- 4.1. Learning what the optimizer does (constant folding, function inlining, join pruning)
- 4.2. Understanding execution plans and useful tool
- 4.3. Adjusting parameters for good query performance
- 4.4. Enabling and disabling optimizer settings
- 4.5. Evaluating join options
- 4.6. Home work. Query optimization
-
5. Understanding and fixing joins
-
6. Writing Functions and Stored Procedures
-
7. Troubleshooting PostgreSQL
-
8. Best practices & lessons learned
-
Bonus Section