- For live charting there was a 'race condition' bug. When the user changed the chart refresh rate while an ajax request is in progress, it would the ajax requests would start twice each interval.
- For users where client and server are in a different timezone the chart did not work. I fixed this by always using the server time.
- And as planned, I have done a considerable amount of research on how to build a query optimizer. I came to the conclusion that I will build a tool similar to the MySQL Query optimizer from Oracle.
And finally, I have already started coding this tool this week.
So my plan for the next few weeks is to build:
- A page where the user can monitor as many variables as he wants. It will offer a UI to add/remove charts.
- If the db server is local, the user can also select to display cpu usage and memory usage
- I want to have one or several possibilities to display queries for a certain timeframe, extracted from the general_log and/or slow_query log.
- Either some sort of data recording or a play/pause button + zoom feature
Having such functionality should allow one to systematically identify badly performing queries.
Although it seems so obvious now to build a query optimizer in this way, it took me quite a lot of thinking to figure this out. So I'm glad I've accomplished that this week.