SQL Server 2012 introduces a lot of new features which, like the columnstore indexes I discussed last month, are inspiring a lot of excitement in the user community.
However, there’s been a bit of confusion around the set of features commonly known as AlwaysOn. (To read more about this term, check out http://msdn.microsoft.com/en-us/library/cc645581.aspx). For quite a while, I was under the impression that AlwaysOn was Microsoft’s term for the successor to database mirroring, a useful high availability feature introduced in SQL Server 2005 SP1. But as my friend and blogger, Jonathan Kehayias pointed out in a recent blog post, that’s not the case. (Read his post here: http://sqlskills.com/blogs/jonathan/post/AlwaysOn-is-a-marketing-brand-not-a-feature-in-SQL-Server-2012.aspx).
What It’s Not
As it turns out, AlwaysOn is not a single, specific feature. Rather, it is a set of availability features whose most salient components are the Failover Cluster Instances feature and the Availability Groups feature. For reasons that are unclear to me, Microsoft decided to apply specific branding to a group of the high availability features in SQL Server 2012. And, depending on which document you might be reading, this could include not only the two aforementioned features, but might also include other availability features such as support for Windows Server Core (a version of Windows that I like very much), online index modifications even with a variety of MAX data types [such as varbinary(MAX), nvarchar(MAX), and varchar(MAX)], enhancements to online alterations of tables, and the new feature called partially contained databases.
What It Is
Having said all of that, it’s important to remember that AlwaysOn is about branding, not a single specific feature. So now let’s look at those two important new features I mentioned earlier, starting with AlwaysOn Failover Cluster Instances (FCI).
FCI is basically a major enhancement to the database mirroring features of earlier versions of SQL Server. How big are the enhancements? Really big. First, FCI operates at the instance rather than the database level. It also allows multisite clustering across subnets, more flexibility in failover policy, better diagnostics and tooling (including a very nice dashboard), and speed improvements such as putting tempdb on a local drive. Basically, the product developers were able to substitute their custom built listener processes with the tried-and-true listener process in Windows. That’s one reason why Windows Server Failover Clustering Infrastructure is a prerequisite for AlwaysOn Failover Cluster Instances. Active Directory and SQL Server Enterprise Edition are also required.
The other salient feature is AlwaysOn Availability Groups (AG). AG not only provides strong availability in the case of failure, it also helps a lot with resource utilization. In terms of availability, AG provides:
• Failover of many databases
• Multiple secondary instances for improved redundancy
• As many as two synchronous secondary instances for better data protection
• Asynchronous active log synchronization for slow networks
• Flexible Failover Policy for IF-THEN-ELSE types of control over failover
• Automatic page repair for protection against page corruption
• Built in encryption and compression for secure, high performance transport of data
• Virtual naming for fast application failover and logical separation from physical details
On top of the availability features, AG provides better resource utilization. In particular, you can now offload many read workloads, such as reporting, to the secondary instance. Plus, you can perform full backups and transaction log backups on the secondary instance instead of the primary, greatly reducing IO on the primary instance. In some cases, you can perform certain DBCC checks on the secondary instance when looking for logical corruptions, although this off-loading won’t help with physical corruptions. This specific topic is addressed in the white paper titled “AlwaysOn Solution Guide: Offloading Read-Only Workloads to Secondary Replicas” which is available at http://msdn.microsoft.com/en-us/library/jj542414.aspx.
There are two great AlwaysOn FAQs that I recommend. The first is Microsoft’s official AlwaysOn FAQ at http://msdn.microsoft.com/en-us/sqlserver/gg508768.aspx. The second comes from my buddy and high availability expert Allan Hirt at www.sqlha.com/2012/04/13/allans-alwayson-availability-groups-faq/.
So what do you think? Have I missed the mark or have I helped explain why some features shipped today? I’d love to hear your feedback here or at my personal website—http://KevinEKline.com. And please feel free to follow me on Twitter at http://twitter.com/KEKline.