Developing and Index Advisor for MySQL
Eduardo Weiland <[email protected]> Thu, 05 Nov 2015 07:58:54 -0200
| Newsgroups | gmane.comp.db.mysql.devel |
|---|---|
| Message-ID | <150d715affe.b48d562a32102.3935144437286891430@eduardoweiland.info> |
Hello there,
I am new here in the list. I am from Brazil and I am finishing my bachelor'=
s degree in Computer Science.
I have to do a final work for the course, and (I don't know why) I came out=
with the idea of developing an index advisor for MySQL.
Just to be clear, by index advisor I mean some tool that suggests what indi=
ces can be created in the database, based on statistics and query log. In o=
ther words, indexes that do not exist in the database but can be created by=
the administrator in order to improve query execution performance.
I have never worked with MySQL internals before. I know a lot of C and C++ =
programming, so I just need some help to understand MySQL structure.
My main inspirations for doing this work are [1] and [2] (actually, they ar=
e the same work, but two different articles). One important thing I have fo=
und in [1]:
Before making the decisions, the optimizer allows the developer to over=
ride the information about physical design by using several function =CC=B3=
hooks=E2=80=98. The hooks can be replaced at runtime with functions that in=
sert new stastistics information into the list of physical design features.=
This makes the optimizer believe that the newly inserted data regarding th=
e what-if indexes and what-if tables are present in the database. Then, the=
optimizer selects the execution plans using the statistics from the what-i=
f features.
I guess that this is what I need. Some way to virtually create indexes and =
then calling the MySQL optimizer or some sort of EXPLAIN method to understa=
nd "what MySQL optimizer thinks about this index? Would this index be used =
if it existed?".
I am probably wrong about all I have said here, but I want to hear what you=
think about this.
I am very grateful for all your help.
Att.
Eduardo Weiland
http://eduardoweiland.info
[1] PARINDA: an interactive physical designer for PostgreSQL http://dl.acm.=
org/citation.cfm?id=3D1739131
[2] An automated, yet interactive and portable DB designer http://dl.acm.or=
g/citation.cfm?id=3D1807167.1807314
--
MySQL Internals Mailing List
For list archives: http://lists.mysql.com/internals
To unsubscribe: http://lists.mysql.com/internals