This overly long and rambling post attempts to encapsulate my experience at SQL Saturday 35, SQL Saturday Dallas, 22 May 2010.
Arrived at Love Airfield courtesy of Southwest airlines right on time. My cab cost 32 bucks from Cowboy cab company and the ride was fine out there but I would have preferred the cabbie not listen to the ultra-hardcore convert to Jesus station. I've forgotten the name of the town now but apparently there is a town within the borders of Dallas that has all of its own public services and it's where all the rich people live. The houses I could see looked elegant without being McMansions. Traffic seemed busy but it was rush hour on an 8 lane highway. Arrived at the Marriott in Richardson by 5ish and had easily one of the friendliest front desk people I've seen in some time. I can't recall the gentleman's name but a very buoyant personality. The hotel Internet sucked, timeouts and just poor performance. The rooms only had cabled lines and fortunately they provided cables. I had set a cord out but walked off without it. I went for a run after I got there as I've heard to fight jet-lag one should not eat on the airplane, drink lots of water and then exercise once you arrive. Seems like a healthy enough approach so I go with it for as little as I travel.
Let me just say, it was freaking hot outside. Kansas City has been running mid 60s that week and had been having a pretty cool May. The weather map I pulled up said it was 88 degrees and felt like the low 90s. And this fat bastard ran 2.5 miles in it. Richardson is/was the headquarters for Texas Instruments. There's a very large TI Boulevard that Sherman spit me out onto. That's some history there so I made sure to run perpendicular far enough for it register on my Garmin. During that detour, I managed to step on a nail that easily slipped through my Vibrams but fortunately only grazed my arch. Still thinking about the near catastrophe of my foot lead to me being assaulted by a tree. Shaved head + branch = inch long gash. I completed the run with a few moments of walking because it was so mercilessly hot. I could not live that far south.
Back to the Marriott and an icy cold shower helped me cool off. I hadn't seen any response to my suggestion of dining out but the night was early so I tweeted that I'd be in the lobby. That time was well spent working through some fun SQL PowerShell play. That will be a post on all it's own but Mmmmmm PowerShell is quickly moving some "something I should learn" to "something I am learning"
After an hour or so, I gave up on meeting up with SQL tweeps and headed for some food. My waitress at Pappadeaux seafood kitchen didn't read me well as she was pushing some generic spinach dip. I can get that anywhere. I should have gone with the mud bugs but the oysters on the halfshell were just fine. Unremarkable salad but the crab legs were fantastic. Skip the pasta though, I shouldn't have wasted the stomach space for the one strand I tasted. An hour and a half later, I was channeling my wife's spirit and eating some bread pudding for her. She wouldn't have liked it though, it had raisins. I managed to get a chapter read in my SQL MVP deepdive book. The chapter on LINQ to SQL and how the query plans, while not award winning, should at least be consistent and well cached. I buy that argument. I knocked around until about midnight and finally gave up.
tl;drFriday was fine, crab is good, Dallas is hot
The stellar internet connection in the hotel led to tweetdeck not refreshing well until Saturday morning when I learned that I missed an opportunity to mix with the folks at Humperdinks the previous night. Dagnabbit! I checked out by 6:35 and walked over to Region 10 in time to meet the 7 a.m. deadline.
I spent first 2 hours Saturday helping with registration. It was a little disorganized at first, no one was really sure what to do with the dozen or so volunteers that showed up at first but Sri and Dave got things sorted out. Oh look, there's Sean of MidnightDBA fame. I of course go over and talk to him like we've had all these conversations and oh yeah, I guess we've never been physically introduced. Awkward... Oh well, back to stuffing bags with the mugs (see swag below) with one of the Houston SSUG leaders, @NancyHidyWilson, Nancy Hidy Wilson. The next familiar face was @sqlinsaneo aka Allen Kinsel. Hooray, someone I'd actually met, courtesy of SQL Pass 2009. We spent the rest of the time stuffing bags, talking about work and whatever else came up. I was also happy to see Tim Mitchell, another friendly face from SQL PASS but he was pretty busy with other volunteer activities.
The conference space was well laid out. All the rooms had name placards on them and the agenda listed on the wall. The conference center itself was in an L pattern with the awesome, kick ass sponsors lined up about the way. If you needed any help, the volunteers and speakers had swanky red shirts with the SQL Saturday logo. I wish I had planned my attendance better rather than figuring it out last minute so I could have gotten one of those in an XL *cough* *cough* I missed the opening remarks and the early bird drawing as we were helping to pack up the registration tables and bring them inside. Oh well, I wasn't there for goodies. I was there to absorb SQL Server knowledge and get an understanding of what all a SQL Saturday involves.
There was still plenty of breakfast to be had and even though by the label I'd have never purchased it, I liked the Chai tea they offered. In fact, I have to give full marks to the #sqlsat35 crew for their food vendor who's name I'll have to backfill into this as I can't find it. It's something like "little kickass food treasures of Dallas with a side of hell yeah." Breakfast was muffins, quick breads, pastries, fruit, coffee, tea, etc. Well laid out, kept stocked and overall full of win. [update]Jen says it's Guess Who's Coming to Dinner Caterers but I think they should consider a name change. [/update]
My first session was with Kal Yella on "Data Compression in SQL Server" He spent a good bit of time on vardecimal (variable length) which, had it not been deprecated in SQL 2008 RTM, would have been a good idea. He dug into the actuals of how they achieved it, not just how to turn it on. I liked that he pointed out it wasn't compression so much as efficient storage. With column prefix something, they store prefix values in page header and then references dupes within page dictionary. It only works on duplicated leading values and it's goodfor IO bound apps, bad for CPU bound. It's an enterprise edition feature that is used when written to disk but any edition can read the data out. That could be good for your recovery plan. Row compression is good for OLTP. Page compression is good for Data Warehouse. There is a proc execute sp_estimate_data_compression_savings with params will show estimated space savings. This was the beginings of his query to show whether you had compression turned on. It's on the object level so you can't turn it on for some columns but not others. That can have an impact if you're using vardecimal as it has 3 byte cost associated with it so you could burn more than you save depending on your table
-- check compression status select object_name(object_id), rows, data_compression_desc, index_id FROM sys.partitions where object_id = object_id('mytable')Not a bad session and stuff I wouldn't necessarily go reading up on my own. Low turnout though, probably 10ish people in the room.
Next session was with Joe Celko on "Relational Division and Relatives" I took such good notes in my first session. This one I jotted down
Tables of pilots and planes they can fly (dividend) planes in the hnager (divisor) Something something elseand the rest went out via tweets. My feedback on the evaluation is that I wish he'd gone slower on his presentation b/c I didn't really catch much of what his scheduled topic was and it was over in under 15 minutes---for an hour long session. However, he filled the remainder in just fine by rehashing war stories of pretty much whatever crossed his mind. He had some great points in there, loved his bit on not reinventing the wheel. Just google the damn standard. Oh and I got to put a face to @jmarx with his very fine twitter shirt.
Sometimes, I think I'm so big and bad ass because I can write queries but while I think it's intuitive to me, people like Joe and Itzik who get set theory so well and can just spit these queries out that just mystify me. I really wish those 30some-odd hours of mathematics in college had clicked better. Combing through my tweets, the following is the wit and wisdom of Celko, quoted as warmly as possible in 140 characters or less.
- Diet (pop)? What's the point. It's like non-alcoholic beer
- Do not sign a contract while drinking with Brits
- The Minus operator in Oracle, Except in standard SQL, performs very well
- 7 ways to wite a query. 5 are worthless. 2 versions are worth keeping. Comment out the one that doesn't perform as well today as it's likely to do better next week
- aggregates in case statements (Romley's division). <-- this was a wicked trick that I wish I had copied down. Something about case statements and aggregates being efficient in them
- There's still more data in COBOL than all your fancy languages de jour
- If your storage is as fast as main memory, why bother with indexes
- Use the right tool for the right job and spatial data has no business in SQL Server
My takeaways were reading assignments. One is to get Celko's SQL for Smarties. The other is actually get Codd's book and sit down and try and understand what I'm really trying to do within a database. Also, dueling presenters with Celko and Buck Woody would be phenomenal as long as it wasn't after lunch. Would hate to see people blow chow from laughing so hard.
The next session I went to was with Kristin Ferrier on An Introduction to SSAS in 2008. I thought someone walked off with the room's laser pointer so I volunteered mine. While green is an awesome color for a pointer, that thing's too damn bright. I had never actually seen MDX and I liked Kristin's advice "See those SELECT, FROM and WHEREs? Pretend those are different words because they don't mean the same as they do in TSQL" She also said that it's rare that you will need to actually write MDX as the tools generally handle that now. She also advised people to change the project property from Default to Do not process during development as you don't want to wait every time you perform a build. Kristin's presentation was strongly demo driven and she was smart in that she had a checklist up there she was working off of to ensure she got her demo right. She ended up missing something so she was doubly wise by having already built out and was able to fail over to the prepared version when needed.
Lunch, remember how I said the caterer was good? They were better than good. The turkey and bacon sandwich was just alright (bacon was flavorless) but the salad had this roasted corn dressing that was so nomnomnom I'm drooling thinking about it 2 days later. Cookies were good too. For my lunchtime presentation, I sat in on the MidnightDBAs and won a printer but traded it for a MidnightDBA laptop sticker. It was a fair trade in my mind. During their talk, Sean mentioned how disconcerting it was to have strangers come up and talk to him about personal aspects of his life as if they were friends *cue the not-me whistling* Sat with Allen and we got to chat a bit more between bites and laughing at Sean and Jen's antics.
Post lunch, I went to listen to Geoff Hiten talk about "Bad SQL." I don't know any Geoff Hiten but I was following @SQLCraftsman and oh hey, they're the same person. I wouldn't have made the connection either except for @t_burger another person I followed on twitter and she of the most excellent Woot flying monkeys. Geoff had some really good bad sql samples in there. Some things I had seen before but I hadn't really come across an elegant solution. The one I liked best was where he described "Doing an OR when joining parent/child, the query algebrizer gives up and does scans. Better to rewrite as 2 separate queries and union the results" I need to get an example of the query to show better how it worked but it made sense when I was looking at it. He also had a great line in there that got me to thinking about a good blog post "Who took classes in Computer Science? (90% hands go up) How many took a class on 'How to inherit a system'?" It'd probably dovetail nicely with Brent Ozar's "BLITZ! 60 minute server takeover" from 24 Hours of SQL Pass #24hop Geoff showed some fine code formatting skills by writing his queries with leading commas in his select statements. For that alone, he gets 5s across the board. He talked about query optimzier's assumption of 100 rows of data and 40% cpu cap but the important take away is that scalar functions can bite you in the ass without you realizing it. Simon Sabin also touched on the subject of TVFs in his High Performance Functions talk at 24 Hours of SQL Pass. Geoff's final example had a nice insidious implicit conversion example. He had a blog post on it called Leverage
Next session was a toss up between Tim Mitchell and SSIS scripting or @WesBrownSQL and the basics of "Understanding storage systems and SQL Server". Even though I was far more interested in SSIS, I needed to better understand luns, raid settings, spindles, rpms, sectors, heads, blah blah blah. It's hard for hardware to really sink in for me, especially since I'm so far devoid from it. At work we have SAN admins for storage, LAN admins for VMs, my DBAs and some other teams in the mix. Developers don't ever get to touch anything physical. Wes did a good job just covering some of the basics with clear delineations between theoretical vs actual or expected. He had a good voice of experience in his presentation and I'd be interested in his RAID calculator were I to be involved with hardware. I've also been out of the World of Warcraft for 1.5 years now but raid calculator still means something entirely not-disk related.
My final session was by Jason Massie on "Query plan crash course" I knew the name sounded familiar and it was @statisticsio. I started trying to take more notes than tweets and got this far
Iterators * access methods scans = sequential read * lookups Fine if it's only hitting a very few rows (random reads) * spools Can be trouble * joins Merge & hash joins (reporting environments) Nested loops usually preferable in OLTP Nested loop with Yield (warning) * distributed queries * sorts, aggregates, top * parallelismbefore I got a voicemail from SuperShuttle. Trying to save about half the cab fair to DFW airport, I contracted with these yahoos to pick me up at Region 10 between 4:50 and 5:05 They called me at 3:13 stating they would pick me up at 4:30 unless I called them back. What, they can break the contract unless I call back and say otherwise? Bounced out of the session to retrieve my phone which had gotten bumped on and ran out of battery. In retrospect, while I doubt I'll do business with SuperShuttle again, it was fortuitous that they did screw things up as I got to meet Stuart Ainsworth, @stuarta in the flesh. He was one of my missing SQL Bingo squares from SQL Pass 2009! He had to bounce early or something and I never got a chance to make his acquaintance but Saturday paid that debt in full. We had a chance to talk with him and Tim about life, SQL Server and his experience with 3 SQL Saturday's under his belt (rock on Atlanta).
TracksThe day was organized into 7 tracks with 6 topics each ranging from 100 to 300 level courses
- SQL Beginner
Bag of swag
- Plastic, non-dishwasher safe, stainless steel mug/thermos contraption. NTSSUG logo on one side, SQL Saturday Dallas logo on the reverse
- One red wristband, used for admittance to the after party
- Full color, 24 page booklet covering everything you need to know
- Flier for SQL Nitro, an offering from http://www.nitrosphere.net/
- 6 page pamphlet from Matrix Resources, http://www.matrixresources.com/
- Dual sided flier from Microsoft with an invitation to stop by their table for a chance to win an XBOX Elite or a SQL Server branded Eclipse audio speaker. Backside listed their speakers, topics and times. 8 speakers listed + CSS
- A not-quite 1/4 page flier encouraging membership in SQL Pass. Advertised #24hop, virtual chapters and a $200 discount for SQL Pass, code SQLSAT3D
- http://www.expressor-software.com/ had a 4 page greyscale flier discussing their SSIS objects.
- Attunity brought out Best Buy gift cards as well as an opportunity to learn more about their Change data capture CDC suite for SSIS http://www.atunity.com/SSIS
- Confio had a flier describing their ignite8 product and was giving away a FlipVideo camera http://confio.com
- Red-Gate had a postcard promoting SQL Search, http://www.red-gate.com/
- CozyRoc had a tri-fold brochure describing their SSIS+ library http://www.cozyroc.com
- Another tri-fold brochure from http://WestClinTech.com While I appreciate their sponsorship of the event, they should fire their marketing people. Their XLeratorDB product might be the bees kness but their bullet points read like something a tweenager would write
- A notepad from Novedea http://novedea.com
- SQL Server R2 puffy sticker
- One business card with the NTSSUG logo on it to signify I had paid for lunch
- A raffle ticket that contained my unique number to be written on each session evaluation as well as my overall survey (at least if I wanted to win a prize I should use it)
- Overall event survey
- Overbook the event like the airlines. 80% turnout was an unofficial number I heard
- Volunteers will do anything, just tell them what to do
- Matching shirts are great for identifying staff vs participants
- Nametags would also be helpful
- If using software to record sessions, be sure it works with everyone's setup and it's installed beforehand
- A good wireless connection is a must
- Afternoon gelato was masterful stroke
- Speakers should practice and use zoomit
- Good speakers have scripts/checklists for their demos
- Good speakers have backups in case scripts fail
- Good speakers repeat questions before answering them
- Good speakers use large fonts in demos
- Everyone loves an iPad
- Clear signage is a must
- Have extra program booklets ready
- 500 is the sweetspot for sponsors as it's large enough to draw people but small enough they can get face time
- Don't go overboard with "big name" speakers. Grow local folks too
- Make sure there are plenty of writing implements for folks
- Budget for carpet cleaning or find some other way to keep people from having accidents
- MCI > DFW airport. Free wifi vs non-free