You can find the code at github.
In the previous blog post, I had described how I had created a table in the
mysql database to store cost factors persistently and written an interface to read the values from the table.
This week I have rewritten the whole thing as per my mentor’s suggestions. The first important point was that I should read from the table only once, when the server starts. For this I had a look into the file
mysqld_main() is the entry point, which starts the server. There are functions like
acl_init() etc. which do the same thing which I was supposed to implement. Following these examples, I have written a function
Cost_factors::init(), which reads the cost factors from the table
optimizer_cost_factors and populates the values of the data members of the class
I have modified the
handler::scan_time() functions to include the
SCAN_TIME_FACTOR respectively. I have tried writing a test which tries to test these factors. However I was not able to come up with an example query which will demonstrate that changing these factors result in a different execution plan.
The next part of the project would be to measure the change in the query times by modifying the cost factors and write the stats in the table. I will have a discussion about this with my mentor and give an update of the progress in the next week’s blog.
blog comments powered by Disqus