DATABASE PERFORMANCE COOKBOOK
Great news! You’ve completed CSCI 6442 (congratulations!) You have an MS from GWU (congratulations again!) You’re working on a project using a DBMS (congrats) And they think of you as a database guru (whoops!) And now—a programmer says “I’m having performance problems.” The boss, of course, tells her to come see you! How to proceed? Is it time to buy one of those huge books on performance tuning? SCENARIO
First, look at the basics. Don’t buy the book yet. How loaded is the server? Which DBMS is being used? How does the application use SQL? Identify the queries that are slow Review the use of SQL—can SQL do more? Look at the plan for each one First—check for existence of indexes and their use in the plan Then—general review of the query and the plan Recommend changes to indexes and query as appropriate Get performance test results right away WHERE TO LOOK
The problem may be at the server Find that out first Server may be overloaded Server may not be administered effectively Server may not have enough capacity Sometimes test server does not have production capacity Often, adding server capacity is the cheapest way to improve performance A server upgrade may cost a few thousand dollars Cost of a programmer to the company is over $1,000 per day You won’t make many software changes in ten person-days of work but for $10,000 you can buy quite a server SERVER LOAD
There are huge differences in efficiency between database systems If either the IBM, Sybase, Oracle or Microsoft family is being used, you can work with it If MySQL is used, check that NODB is being used. Even then, you have limited options for optimization If you’re going to need serious optimization, get away from MySQL With MySQL you can get stuck with poor optimization options You’ll also gain many other useful features with a fully-featured DBMS DBMS CHOICE
Do applications make full use of SQL? Applications may use SQL for put and get, do all data manipulation in the application They may issue many SQL statements to get a result that you can obtain with a single statement Often programmers will just copy another programmer’s SQL to get access to the database, won’t understand a thing Make sure that the ability of SQL to do powerful, sophisticated selections, and use that power for updates and deletes, is being used Huge performance gains are available from fixing these problems These are very easy wins APPLICATION USE OF SQL
Usually some SQL statements stand out as performance problems If they’re all slow, the problem may be in the database server or the application server If all SQL statements are slow, go back two charts and repeat IDENTIFY PROBLEM QUERIES
Start again with the basics Review the use of SQL in each problem query Can more function be added to the database and removed from the application? This can improve performance Look at indexes Look at indexes and their use in the plan Test with additional indexes as indicated Adding indexes is often all that’s necessary to improve performance Now you need to buy a big book Buy one of those huge books about performance tuning for your DBMS Your DBMS may process the statement differently depending on how written Test alternative formulations of the statement for performance Follow the book for additional help Recommend changes in SQL statement, indexes WHERE TO LOOK
Carry out and document results of performance tests on your improvements right away Create and write down a quantitative record of what you accomplished WHERE TO LOOK
Share the results of the performance improvement, with due modesty Use them constructively, such as to create a write-up on DBMS performance for your project You are a hero, take the credit—but do it in a gracious way TAKE THE CREDIT