Meme Monday: I got 99 problems, but disks ain't one

02 May 2011

"I got 99 problems, but a disk ain't one"

Re: Tom LaRock (b / t)

What are nine (9) problems that I have encountered, that have nothing to do with disks?

  1. Query plans based on out of date statistics. Auto-update-stats is useless for large tables. I can insert 35 million rows and auto update stats will not do anything, for a 200 million row table. Then the query optimizer thinks that those rows do not exist.
  2. Using linked servers to move data around. The overhead of MSDTC makes data movement via linked servers an exercise in pain.
  3. Bad table design. GUIDs and nvarchar(50) columns should not be in primary keys if possible. Especially not in composite primary keys. Querying and updating the table afterwards is very slow.
  4. People that use object-to-relational mappers (nHibernate, LINQ, etc) without knowing how to troubleshoot them. Then they blame the DB for poor performance, or for not 'dealing well' with their shiny new tool.
  5. Applications that use the wrong isolation level. Don't use serializable by default.
  6. People who release broken code. Code is broken when it cannot roll back, does not have tests, will never scale, has insufficient error checking, or just plain doesn't parse. If you're running a high-traffic website and using just ASP.NET and a database, you're in trouble. Caching, XML, flat files, MSMQ, SSIS...they all have their place.
  7. Using databases as a hammer.
  8. Insufficient troubleshooting skills. Similar to #4, anyone who has to support production systems must know common troubleshooting techniques. Root cause analysis, tracing errors through different systems, asking what has changed...these are all basic skills that aren't usually taught well.
  9. People who focus on features and never stability.

This is one of my banes. I usually hear a combination of, "We're just making a prototype now, we'll clean it up later" and "Oh, that's already working in production, it doesn't need our attention". Those two excuses, paired together, hide a magnitude of sins. The result can be a shoddy system design held together using hacks, duct tape, and user workarounds.


Kendra Little (b / t) Mike Decuir (b / t) Argenis Fernandez (b / t)