Last week I was fortunate enough to attend SQLSkills IE1 class in Tampa. Fortunate to have an employer willing to send me to that kind of training, but also because Tampa in February is way better than Cleveland in February. Not that I really got to enjoy the sunshine and warmth much, because let me tell you, they call it an “immersion event” for a reason. 8+ hours of intense SQL server training, usually complemented with a couple more hours of SQL-related activities in the evening. It makes for 5 very long days, but it was so worth it.
A week of SQL Server
We started out the week with Paul (b | t) giving us a solid foundation of database structures and datafile internals. From the structure of a record, to how it’s placed on a page, allocation bitmaps, and compression, with demos using DBCC IND and DBCC PAGE. It’s very dense stuff, and to be honest, for me this isn’t the most exciting topic, but it’s important for truly understanding how SQL works. After that we moved on to datafile internals, talking about physical layout, storage considerations, file maintenance and tempdb. After that Kimberly (b | t) closed out the day talking about locking and blocking, how data modifications work under the covers, transactions and savepoints.
That was just day 1. On day 2 Kimberly continued with more on locking, then went into a discussion on isolation, focusing on snapshot isolation and how that works internally. Paul then covered logging and recovery, VLFs, how transactions are logged and rolled back, and the internals of a checkpoint. Another intense day.
Day 3 focused primarily on indexing and data access. Kimberly started out by explaining table and index structures, making sure we understood the importance of a good clustering key and its impact on performance and maintenance. From there she segued into data access internals: the tipping point for index usage, the benefits of covering indexes and filtered indexes. Paul closed out the day discussing the ins and outs of index fragmentation.
Thursday’s topic du jour? Statistics. And let me tell you: Kimberly loves to talk about statistics. She promised us in the beginning of the week that even if we expected the stats module to be the driest of the class, we would change our minds by the time she finished. And she was right. Stats are pretty darn interesting, and having a good understanding of how they’re gathered and used, both by SQL and by you, is critical to good performance. That’s one module I’ll be reviewing soon.
We closed out the week learning about indexing strategies, table design, and partitioning. My only “complaint” about the whole week was that I wish we’d had more time on partitioning. Though, Kimberly did acknowledge that there wasn’t enough time in this class to do partitioning justice and they’re talking about an IE5 that covers it more in depth. What we did cover, however, gave me ideas on how both partitioned tables and partitioned views could be used on large tables.
It’s a lot of information being thrown at you in 5 days, and even though Paul and Kimberly do a great job of presenting it in a very easy to understand manner, you need to keep in mind that you’re not going to absorb it all in one week. While I would have loved to stay for IE2, which is more directly applicable to my current job, I’m actually glad to have a chance for everything from this week to firm up in my head. That way when I do take IE2, I go in with a solid foundation.
Some tips if you’re planning on attending:
- Throughout the week I kept a separate list of resources I wanted to check out further once the class was over. I didn’t want them buried amongst the other module notes.
- Get plenty of sleep. This isn’t a conference! You’ll want to be rested to make the most of the class.
- You won’t “get” everything they cover during the day, so you’ll want to review the materials before the next day. That way you can ask questions if something’s still not clear. Personally, I found it more effective to get up a little earlier and review in the morning when I was fresh.
- Ask questions. There are no stupid questions. If something doesn’t make sense to you, ask!
- Disconnect at much as you can. I realize that you’ll probably need to keep in touch with your job, but try to limit it to breaks and off hours.
Is it worth it?
Do you know what thought kept popping into my head throughout the week? “I wish I’d known that at my last job.” There were so my scenarios and problems that Paul and Kimberly talked about that I’d seen on a regular basis. And had I had this training then, I could have addressed them so much better. That’s OK though, from here forward I’ll be able to work with SQL Server more effectively.
Is it expensive? Compared to other classes you could probably take locally, sure. Especially when you add in travel costs, since it’s not likely for the majority of us that these events will happen in our home town. But you’ll never get this level of training from one of those local classes. You just won’t.
We talk about training a lot, about whose responsibility it is: ours or our employer’s. I’m not going to debate that now, but I will say this: you don’t ask, you don’t get. Ask your manager. Make your argument as best you can. And if he/she still says no, find a way to send yourself. You won’t regret a single penny. And to you managers out there: absolutely send your DBAs, but send your developers, too. This isn’t a class just for admins. Developers will also benefit from a solid understanding of how SQL Server works.