Things I Learned in 2014
2015 is here!
Last year I wrote about what I had learned in 2013, and I try to make it a tradition. So without further ado, here’s what I learned in 2014:
Columnstore Indexes are amazing. The Columnstore technology is fascinating to me, and I keep learning more and more about it. When applying it at one of our clients, a lot of the queries started to fly. On the other end, some of the queries got worse, either because they didn’t run in Batch Mode, or because they applied filtering on a column that is not compressed well. That’s why I believe that in some situations we will end up with a hybrid solution, which can be one of the following:
Keeping both a regular table and a Clustered Columnstore table side by side
Working with a regular table and a Nonclustered Columnstore Index on top of it
Creating an Indexed View on top of the Columnstore
I will blog much more about Columnstore this year. Meanwhile, you can read Niko Neugebauer’s awesome Columnstore series, and watch Sunil Agarwal’s Technical Deep Dive session and Jimmy May’s session from 24 Hours of PASS SQL Server 2014 Edition.
Columnstore is also another example of a technology that seemed half-baked in V1 (SQL Server 2012 in this case) , and is amazing in v2 (SQL Server 2014). So watch out for the next version of Hekaton (In-Memory OLTP), that will hopefully make it easier to migrate to and make schema changes.
The new Cardinality Estimator is disappointing. I know Microsoft says that on average, most queries will benefit from the new Cardinality Estimator, but when I talk about it I always say that you can also drown in a pool with an average depth of 25 centimeters. I’ve seen quite a few cases where the new Cardinality Estimator caused a query to run much slower. I was also disappointed to read that the new Cardinality Estimator doesn’t take into account multi-column statistics. I hope to have a better experience with it in 2015.
You might be using Resource Governor more soon. One of the recommendations that keeps coming up for both Columnstore and In-Memory OLTP is to use Resource Governor. With the addition of the ability to control IO resources, Resource Governor seems more and more handy.
Azure is here. Microsoft strategy of cloud-first mobile-first is not only on paper. It’s happening. Microsoft is pushing hard on this, and when Microsoft pushes hard, the market reacts. Microsoft develops new technologies for the cloud (DocumentDB, Azure Search, Azure ML, and more), makes older technologies better (HDInsight, Azure SQL Database, Azure VMs), and even allows running technologies you couldn’t on-premise, like Cloudera Hadoop and Linux! Microsoft is all in for the cloud, and puts in a lot of efforts to make us be there also.
Azure SQL Database gradually becomes something you can count on. With the latest additions of service tiers and feature enhancements (parallelism, Columnstore and more), Azure SQL Database gradually becomes a serious thing. They are also very close to disabling throttling completely. Also, SQL Server and Azure SQL Database have the same code base, and some of the things go first to the cloud, tested in production on the millions of databases that reside there, and get to the box product after a while. Here’s a few additions in Columnstore, for example.
More than ever, DBAs need to wear the Data Architect hat. Today’s world is full of diverse technologies. Some new, some “old”, some “sexy”, some not, some mature, some not, some in the cloud, and some on-prem. Someone needs to find the right mix of technologies that will make the right solution, and as data people, we’re in a very good position for doing that. It’s not easy, because there are so many technologies, but today’s world dictates that we start understanding when we should use which one.
Don’t over-think, and don’t fall into the traps of “this topic is not interesting” or “there are already a million posts about this topic”. I’m currently in this situation, and I can tell you that falling into those traps get you to a situation where you don’t write. Writing is like a muscle, and when you don’t train this muscle, it’s hard to get back into the rhythm. On the other hand, if you’re on the other end of the spectrum, do apply some kind of filtering, and don’t overwhelm your readers with too many posts.
Data professionals love podcasts. In August, we launched the English edition of SQL Server Radio. We got a lot of great feedback, and the number of listeners keeps coming up (about 1,200 per episode currently). We met a few listeners at PASS Summit, and it’s cool to see where our listeners are from and how they heard about the show. I intentionally didn’t write “DBAs love podcasts”, because among our listeners there are also Database Developers, Data Architects, sysadmins, and more.. The ability to take a podcast anywhere you want (commuting, jogging, washing the dishes, etc) is priceless. We try to keep a mix of one “all over the place” show a month, where we talk about various topics, and one deep dive show a month, where we focus on a specific topic. This approach seems to be working up till now.
PASS Virtual Chapters are a great platform. I presented a few webinars last year, and all were a great experience. In the comfort of your home or office, you can get “in front” of hundreds of people. The VC leaders are extremely nice and always looking for new speakers. If you’re new to presenting or have a new session, It’s a great way to gain experience. By the way, did you know I co-lead the Professional Development VC? If you’re interested in presenting, get in touch.
It’s always good to start with a story. This will make your attendees more engaged and intrigued. Some humor is good also, if what you say is indeed humorist.
Invest in your abstracts. Abstracts are a pain to write, but they are an essential pain. Even if you have a great session, if you don’t give a good clue about what the audience will get from it, it won’t get accepted. Perhaps the best resource for writing abstracts is this post by Adam Machanic (b| t). Among other great tips, Adam states that if your abstract, which is a short story, makes the attendee understand he’s the story hero and your session will help him escape the danger, you hit the jackpot. I used this technique in this abstract for my session, “Query Progress Tracking in SQL Server”.
At the Office
Talking about something makes you understand it better. When you talk about something, your brain processes and transforms the information, and makes you understand the issue better. So if you have something you struggle with or don’t completely understand, go talk to someone about it. On the other hand, if someone wants to consult you with something, sit, listen, ask a few guiding questions, and a lot of times, the magic will happen by itself.
Learning optimization. Ever since I joined Madeira, I have to learn a lot, so I search for ways to optimize my learning process. One of the ways is watching presentations at faster rates. I usually watch presentations at a speed of x1.5. You can do it in many sites like YouTube and Channel9, and some applications like Media Player and VLC. I also work on reading faster (there are apps and browser extensions for that too).
Parkinson’s law. The law dictates that “work expands so as to fill the time available for its completion”, or in other words: “The amount of time that one has to perform a task is the amount of time it will take to complete the task”. As humans, we have a tendency to think, tweak, optimize and procrastinate until an external deadline makes us get things done. For example, I’m using Parkinson’s law in this post. Even though I want to write more things and sharpen others, I realize I can’t wait with publishing much longer, because we’re already a few days into 2015. I also set myself an external deadline by promising my friend Boris Hristov (b|t) on Twitter that this post will be out today. Once realizing that, you can use the law to make things happen faster. Here are a few more examples:
Work without your laptop charger. It will force you to get things done before the battery runs out
Commit to present a session at a user group or SQLSaturday.
Commit to your manager you’ll meet a certain deadline
Make a public commitment on twitter
Put money on the table. Buy a one month subscription for your favorite online training site
If you blog, schedule your post ahead. That will make you finish it on time
That’s it for this year. I actually learned a lot other things, but I think this is enough for now..
Let’s go and make 2015 amazing!