Author Archives: Wes Brown

About Wes Brown

Wes Brown is Vice President at Cantata Health and maintains his blog at http://www.sqlserverio.com. Previous experiences include Product Manager for SQL Litespeed by Quest software and consultant to fortune 500 companies. He specializes in high availability, disaster recovery and very large database performance tuning. He is a frequent speaker at local user groups and SQLSaturdays.

A New Year, Time To Get My Learn On!

altMy friend, and newly minted MVP, Jen McCown (blog|twitter) is hosting  T-SQL Tuesday this month. I normally don’t do the T-SQL Tuesday, but this is a post about resolutions so I am resolving to do more of them in the new year. I’ve always considered myself a core engine kind of guy. Focused on things like I/O, on disk structures and the optimizer. As SQL Server grows it has become harder and harder to keep up with the Joneses’ (Steve?). Like every other DBA that earned their salt in the mines of 6.0 through 2000 I’ve got a ton of tools I’ve written myself to monitor every aspect of SQL Server. I’ve also not kept up as well with other technologies like replication that have an impact on my day to day life at work. So, with all that in mind this is my list of technical things to “get good at” this year.

SQL Server Stuff

1. Partitioning
I’ve worked on and off with partitioning since SQL Server 2000 and have a solid grasp of how it works and what the benefits are, just not at a deep enough level. I found myself telling someone that was just flat wrong a few weeks ago about partitioning in SQL Server 2008 R2. It wasn’t a huge deal but if I’m spreading misinformation I’m doing my community and myself harm.

2. Change Data Capture
Again, I’m using a throw back from the good old days. Using triggers to capture change data and insert that into history tables. It’s time to get rid of this performance robber and move to something a tad more modern. I sat in a couple of sessions at PASS and think if I can rap my head around it we could see a large improvement in performance.

3. Replication
I feel pretty good about my replication skills but it is becoming very important to our infrastructure and I need to make sure that I’m not making assumptions that aren’t true anymore and that I’ve configured my environment as best as I can. I sat in on Kendal Van Dyke’s (blog|twitter) replication at PASS and came away with a couple of things that I need to do and some additional things to research.

4. Analysis Services Administration
We are moving full boar into the BI stack. It isn’t my job to write MDX but I have to make sure that the performance from an infrastructure level is good and that we are prepared to recover if the need arises.

.Net Programming Stuff

1.LINQ
I do some stuff with LINQ including LINQ to SQL but I need to get better at it. Just trying to keep my mediocre c# skills from falling off completely.

2.Parallel Programming in .Net
I write a ton of multi-threaded stuff and have built up my own threading frameworks over the years. Microsoft is making a big push to make parallel programming easier. With PLINQ and the new Async framework that is in development right now. It isn’t a part of my core job skills but it is something I enjoy and use quite a bit.

3.Entity Framework
I don’t have to like it but it is everywhere I turn these days. I do get questions as well on how to optimize the database and without knowing exactly what is going on under the covers it limits my ability to troubleshoot issues.

90 Degrees From Center

1. Get Better With Python
I do more than Microsoft stuff and still enjoy learning new things. I recently picked up on Python and look to keep growing my skillset with 2.7 and 3.x lines. It is a fun language to program in. If you dig on easy to read and easy to write Python has that in spades.

2. Pick Up Lisp again
You heard me. Lisp the grandfather of modern functional languages. I worked with Lisp about a million years ago it seems. Apparently, it is back in vogue with several dialects floating around and quite a robust community supporting them. I can get a bit religious at times but passionate people make for a culture of innovation.

SQLMeetings.com Is Live!

You heard right, I’ve finished with the 1.0 release. It isn’t pretty but it works. If you need a primer check out my last post. If you need a list just fill out the form and I’ll get you taken care of.

I’d like to thank Scott Stauffer(blog|Twitter) for helping me out with some tools.

I’d like to thank Sean McCown for providing me with an MSDN subscription so I could finish this project! If you aren’t following the MidnighDBA’s (blog|Twitter) you should!

If you would like to test things out then please sign up to testlist@sqlmeetings.com

Lets take a look at the features:

  • Create custom list <mylist>@sqlmeetings.com.
  • Send to list via email or web site.
  • Only list owners can send emails to list.
  • View number of replies and who has replied.
  • Manage subscriptions and list owners.
  • See who has unsubscribed and how.
  • Automatic bounce detection and auto unsubscribe from list.
  • Automatic “out of office” detection and ignore.
  • Export subscriber list.
  • Subscribe or unsubscribe via email or web.

Lets take a quick tour.

On the front page you can see a list of recent emails that have gone out.

image

You can update your account information.

image

You can manage your subscriptions.

image

You can email your list.

image

Check to see if anyone has replied to a mailing.

image

Manage your subscribers.

image

The goal is to keep it simple as possible. I hope I have done that. There are some features I would still like to have just for managing my own lists. If you have any thoughts please leave me a comment, who knows if you use SQL Meetings I’ll probably add anything you want that makes it useful to you.

Version 1.1~1.4
Cleanup and bug fixes. I’m a believer that Great is the enemy of good. This is good, so I’m launching it. That doesn’t mean it won’t have bugs and there are a few outstanding code cleanup tasks I have already scheduled. Remember, asp.net isn’t my day job at all, this was and is a learning experience for me.

Version 1.5 features(Possible):
Posterous friendly emails.
Tweet with link to message from @SQLMeetings.
Re-email a send message, you send out a mail and want to send that same mail again.

Version 2.0 features(Possible):
Linkedin integration.
Facebook integration.
Schedule reminders using generic template, you may not have your details hammered out yet but still want to send out a reminder say one week before the meeting.

Giving Back, SQLMeetings.com Is Going Live Soon

I’ve been pretty quite since the PASS Summit and with good reason. Every year we have a chapter leader meeting. Every year, there is a laundry list of things that chapters would like PASS HQ to do for them. Time and again I’ve watched other people in the community step up and build something to fill a void in the PASS structure. In the early days SQLServerCentral.com hosted websites for chapters until PASS HQ got the infrastructure in place. We lean on other tools like Google groups or meetup.com to get other things done as well but aren’t controlled by PASS or PASS HQ. It always strikes me as odd that infrastructure related items are always on the list and are always backlogged. We are a professional organization of technology people and deal with stuff like this every single day.

So, I have decided to help out. I’m staring up SQLMeetings.com. The goals are pretty simple to start with.

Provide an easy way to email your user group.
Provide an easy way for your users to RSVP.
Provide an easy way for group leaders to manage lists.
Provide an easy way for group leaders to track RSVP’s.

Provide an easy way to email your user group.
Sounds pretty straight forward. Just fire up outlook and BCC your group the email field. For a long time that is basically what I did. It was a pain to manage email changes, RSVP’s and bounced email. That led me to setup an email list server setup and moved that list there as a read only list. That was better, it provided bounce management but it was still hard to get people on to the list. Luckily, it used a SQL Server back end and I wrote an integration point with our then DotNetNuke website. If you singed up via DNN it automatically added you to the email list. If your email ever bounced you were deactivated from the list. You couldn’t change your email though, or RSVP easily ether. Now that we have moved off DNN I’ve lost the signup integration point and have fallen back to telling people to subscribe using cactuss_meetings@wesworld.net again.

Provide and easy way for users to RSVP.
I got nothing on this one. I’ve tried using meetup.com but it pushes your users to another website from your own and another barrier for them to easily RSVP. Basically, I get emails from people saying they will be there I pad the numbers and add some fudge in and order the food.

Provide an easy way from group leaders to manage lists.
If you have ever used a traditional list server everything is done via email with commands embedded in the body of the mail. It isn’t the slickest of user experiences. I was just editing the list server tables by hand, being a SQL Server expert and all.

Provide an easy way for group leaders to track RSVP’s.
Over time, you like to see how your RSVP’s stack up to actual attendance and watch the growth of your group over time. Again, I did this with a high tech piece of kit, pen and paper.

This is my goal for “1.0” feature sets.
user groups can have a personalized email.
lists are <email>@sqlmeetings.com. For example my local UG would be cactuss@sqlmeetings.com. This account is used to receive, process, and send all emails.
List owners are the only people allowed to email the list for distribution. You can have multiple list owners so one person isn’t stuck sending out the email.
List management is handled two ways. If you want to subscribe via email you send an email with subscribe in the subject to cactuss@sqlmeetings.com and it handles the rest. If you are a list owner you can manage the list via the web. Things like adding users, marking users as list owners and deactivating users is done via web.
To RSVP the only thing you have to do is hit the reply button. The list server tracks what users have replied to what email. As a list owner you can look at response rate via the web site.

The list server part is done. I wrote a windows service that handles processing the emails. The web UI will be done by the end of the week(Keep your fingers crossed). I am horrible at web stuff and have asked a couple of other folks to help out. This first iteration is beta stuff to flesh out functionality.

This is where you come in. Do you need something like this? If you want to use it just drop me an email admin (at) wesworld (dot) net or hit me up on twitter @WesBrownSQL. I need some folks to test out the base functions and start suggesting things for the 2.0 like twitter integration and post to posterous.

Oh, did I mention this is free? It is something I needed for my UG and figured others would like it too.

Fusion-io, Flash NAND All You Can Eat

Fusion-io has announced general availability of the new Octal. This card is the largest single flash based device I’ve ever seen. The SLC version has 2.56 terabytes of raw storage and the MLC has a whopping 5.12 terabytes of raw storage.  This thing is a behemoth. The throughput numbers are also impressive, both read at 6.2 Gigabytes a second using a 64KB block, you know the same size as an extent in SQL Server. They also put up impressive write numbers the SLC version doing 6 Gigabytes a second and the MCL clocks in at 4.4 Gigabytes a second.

There is a market for these drives but you really need to do your homework first. This is basically four ioDrive Duos or eight ioDrive’s using a single PCIe 2.0 16x slot. It requires a lot of power, more than the PCIe slot can provide. It needs an additional three power connectors two 6 pin and one 8 pin. EDIT: According to John C. You only need to use ether the two 6 pin OR the single 8 pin. These are pretty standard on ATX power supplies in your high end desk top machines but very rarely available in your HP, Dell or IBM server so check to see if you have any extra power leads in your box first.

Also, remember you have to have a certain amount of free memory for the ioDrive to work. They have done a lot of work in the latest driver to reduce the memory foot print but it can still be significant. I would highly recommend setting the drive up to use a 4K page instead of a 512 byte page. After that, you will still need a minimum of 284 megabytes of RAM per 80 gigabytes of storage. On the MLC Octal that comes to 18 gigabytes of RAM that you need to have available per card. To be honest with you, if you are slotting one of these bad boys into a server it won’t be a little dual processor pizza box. On the latest HP DL580G7’s you can have as much as 512 gigabytes of RAM so carving off 18 gigabytes of that isn’t such a huge deal.

Lastly, you will actually see several drives on your system each one will be a 640 gigabyte drive. If you want one monster drive you will have to stripe them at the OS level. The down side of that is loosing TRIM support which is a boon to the overall performance of the drive, but not a complete deal breaker. EDIT: John C is correct. You don’t loose TRIM for striping with the default Windows RAID stripe on Windows Server 2008 R2. I’m waiting for confirmation from Symantec if that is the case with Veritas Storage Foundation as well since that is what I am using to get software RAID 10 on my servers.

I don’t have pricing information on these yet, but I’m guessing its like a Ferrari, if you have to ask you probably can’t afford it.

SATA, SAS or Neither? SSD’s Get A Third Option

I recently wrote about solid state storage and its different form factor. Well, several major manufacturers have realized that solid state needs all the bandwidth it can get. Dell, IBM, EMC, Fujitsu and Intel have formed the SSD Form Factor Working Group bringing PCIe 3 to the same form factor that SATA and SAS use. Focusing on the same connector types and a 2.5” dive housing. I’m not sure how quickly it will make it’s way into the enterprise space but that is clearly it’s target. Reusing the physical form factor cuts down on manufacturing and R&D costs for all involved. They have an aggressive time scale for something like this. The specification hasn’t been published yet and I’ll take a deeper look into it when it becomes available. There are some key players missing though. HP and Seagate being the two in the enterprise space that give me pause. Both control a large segment of the storage space. On the controller side LSI is also absent. This could be a direct threat to their current market domination of the RAID controller chipset space if they aren’t on the ball.

Fusion-io got that early on and took a different route sticking with just PCIe to bypass the limitations of SAS/SATA and intermediate controllers. By going that route they opened up a whole other level of performance.

I asked David Flynn what he thought about the new standard. Fusion-io is a contributor to the working group.

It is quite validating that folks would be routing PCIe to the drive bays.  For us it’s just another form factor that

we can easily support it.

Two things, though…  First is that I believe it’s a hangover from the mechanical drive era to put such emphasis on form factors that allow easy servicing access.  Solid state should not need to be serviced.  It should be much more reliable than HDD’s.  But, outside of Fusion-io failure rates for solid state is actually much worse than for mechanical disk drives.

The second point is that form-factor and even PCIe attachment isn’t really the key thing to higher performing, more reliable solid state.  What makes the real difference is eliminating the embedded CPU bottleneck in the access path to the flash.

Fusion-io uses a memory controller approach to integrating flash.  You don’t find CPU’s on  DRAM modules.  SSD’s (SATA or PCIe) from everyone else use embedded CPU’s and attach using storage controller methodologies.

In an upcoming post on my solid state storage series I will explore failure rates in detail. I do find it interesting that Fusion-io is one of the very few companies that have significantly higher error detection rates than a standard hard drive or other SSD’s, even enterprise branded SSD’s. Fusion-io claims 10^20 uncorrectable detectable error rate and 10^30 uncorrectable undetectable error rate. I have yet to see any hard disk or SSD with a rate better than 10^17. So, I agree with David about actually needing a form factor for ease of service if you build the device with enough error correction, which clearly you can with solid state.