With only one weekend in between, I came from attending SQL Cruise to another high-level SQL training. Yes, you read right. I went back-to-back technical training. SQL Immersion was a one-week, high-level, in-depth SQL Training by the most respected SQL Professionals in the community, Paul Randal | @PaulRandal and Kimberly Tripp | @KimberlyLTripp
No, this training is not on any moving boat or has margaritas in between sessions (although, Paul and Kim bought the first round of happy hour on our first day) and there’s no ocean view in our window either. This is the training that is structured in a certain way that you WILL have a better understanding on how SQL Server works from the inside out that can help you make a better decision on design, maintenance and general best practices.
Day 1 – the agenda was SQL Server Internals, which covered Database Structures, Logging/Recovery, Index Internals and Data Types. Paul started the morning by diving straight to the overview of records, pages, extents, allocation bitmaps, IAM chains and allocations units. Yes. Sounds pretty intimidating. I felt that way when I glanced over my training materials, but when Paul started to explain to us in great detail, a certain light bulb started to turn on. The objectives of this module (quoted from the training module book) are to gain a lot of understanding on how data is stored, accessed and optimized at all levels because those are the key when architecting a system so that it will perform well and be more easily maintained. Moving on from database structures, we dive into logging, recovery and log file maintenance. For me personally, it was very interesting to learn on how the transaction log works. It explained a lot of things when you understand how it works internally and it really will give me more tools in terms of knowledge to do my job better.
After the afternoon break, Kimberly started her module and we went straight to Index Internals. Wow. If I can only choose one word to describe this topic, that would be it. We learned more about how the index structure works internally, the difference between clustered and non-clustered in-depth and how are those created inside the pages. Again, very in-depth session about the other part of the SQL Internals, which in this case, how the indexes works within SQL Server. Bottom line – I found it very useful and very informative and I know that I will look my tables and indexes differently now and when I am involved on a project during the design phase, this knowledge will be handy to have.
Both Paul and Kimberly are a co-author for this book SQL Server 2008 Internals that covers a lot on what we talked about in module 1-4. If you don’t have it yet, I suggested you to get one and start going through it. Kimberly even has a whole code for chapter-6post on her blog that has MORE than the book itself and it’s fantabulous! I spent a couple hours the other day just to play around with the sample code
Day 2 and 3 – the agenda was Designing for Performance and Indexing for Performance. We talked about choosing the right data type, table partitioning strategies, data access and indexing strategies. To be honest, this is actually my favorite topic. No, not because it’s sexy (Paul actually called this topic that.. haha), but it’s such an incredibly attractive subject for me. I LOVE performance tuning and can’t seem to get enough learning and knowledge about it. Whenever I tune a query, I end up learning something new. Kimberly has an incredible in-depth knowledge about this topic and she’s a very interactive presenter. We went through many demos, tips and tricks and better understanding of what to do to have optimal performance when it comes to design and indexes. Oh, we had a surprise lecture from Brent Ozar | @BrentO about virtualization at the end of day 2. We learned details about virtualization, what to ask to our sysadmin, what we need to be aware of, etc. It was so awesome to see Brent again after SQL Cruise!
Day 4 – the agenda was supposed to be Database Maintenance but we spent 2/3 of the day still on the Indexing strategies topic. Paul took over after the afternoon break and we started a discussion about the data file maintenance modules. As a production DBA, this modules (as well as the other modules on database maintenance topics) are SO incredibly useful. Paul also talked in-depth about the physical layout of the data files, the allocation algorithms, instant initialization and the inside-out of tempdb. Last but not least, his favorite subject – shrink or to not shrink. For those of you that still question this part, I suggested to read a whole series about this topic on Paul’s blog and understand the implications about these ‘features’.
Day 5 – Database Maintenance, Part 2. We talked about index maintenance, backup/restore, and consistency checking. It is, again, very interesting to not just learn about this topic, but actually to see the demo of it. It’s one thing to just ‘know’ the theory, but it’s another thing when you actually see that theory in action. Paul demonstrated what happened with corrupted database and what we should do to prevent that from happening AND some cool tips and tricks on fixing them when you are one of unlucky enough to have one.
Overall, it was a LONG week and I was exhausted by the end of it. The name of this training explain it all. You WILL be immersed with SQL Server, from inside out. I walked out from this class with more knowledge that I can imagine to have within this short period of time and I know this knowledge will help me tremendously to be a better DBA.
If you have a chance to choose one training a year, my advise, choose SQL Immersion and forego other training for that year. The 5-days you spend with Paul and Kim will give you SO much more than ANY other training around. Yes, you won’t get as much as the social-networking aspect as SQL Pass or SQL Cruise – but you get Paul and Kimberly’s insight on the topic that we all love. SQL Server. I think that itself, explain everything.