I recently published a paper "Solving database performance problems with better storage performance" and thought that you'd like to see a few snippets of it here.
Database management systems are some of the most complex pieces of software deployed in an organization’s datacenters. Database performance problems can cause application slow-downs or failures. These, in turn, can cause the organization to lose revenues, lose customers or fail to meet its goals in other ways. This, by the way, is considered "bad" by most IT folks I've spoken with.
Modern database engines are made up of multiple processes, each serving a different purpose. These processes may be deployed on multiple systems and manage huge amounts of structured and unstructured data.
Furthermore, each database engine manages storage differently. Some treat data as a series of tables, some as a number of records and still others deal with data as “memory images.” Each database engine also manages access to the data differently. Some maintain extensive indices allowing very rapid access to specific items, but this requires the database engine to do more work maintaining those indices if a data item is modified or deleted.
There are a number of ways to address database performance issues:
- Rooting about to find what the real issue is - this could require the focused attention of the organization's system, storage, network, application and database gurus.
- Changing the application design so that it utilizes data more efficiently
- Spelunking in the database parameters and logs to learn what the database is doing and changing how it is configured to work better in that application environment.
- Short circuiting the research and analysis process by just using faster storage.
Since database based applications are heavily dependent on storage performance, another successful, but lower cost, approach has been to replace poorly performing storage devices or storage servers with newer technology. This approach directly attacks the performance issues without requiring application rewrites, complex database tuning exercises or upgrading systems with costly replacements Ideally, the storage subsystem would be built using available technology, such as dynamic random access memory (DRAM), one of the fastest storage technologies on the market today. DRAM storage provides consistent performance over other SSD technologies when reducing I/O bottlenecks for random reads and write, without requiring performance tuning. This would result in significantly higher storage performance — far faster than traditional media — and much improved database performance, between 2 – 25 times faster.
If you'd like to learn more, please feel free to download the paper. It was sponsored by Kaminario.