A web application that I was developing would become extremely slow as the number of requests increased per minute. I couldn’t figure out why because with my local database everything seemed fine. Here is the process that I used in MySQL to determine the bottleneck in my database. The final problem was a missing index on a table that was used in the where clause of a select statement over and over again. I included a snapshot the MySQL Process list at the end of the post. Hope this helps someone.
Steps to Follow:
- show full processlist;
- shows each database connection that has been allocated for your database
- contains the time a connection has been Sleep
- contains how long a Query is taking to execute, you want this to be less than a second ideally
- describe <query>;
- this gives you the database’s plan for executing the query
- you want the number of rows that will be looked at to be as small as possible
- show index from <table>;
- this will list all indices contained on a table
- this is a quick way to discover if you are missing a key index that could improve query performance
- create index <tablename_fieldname_idx> on <table>(field);
- this will add a new index to a table