Optimizer tracing: how to configure it
In this blog post , my colleague Jørgen Løland described a new feature of MySQL 5.6: Optimizer Tracing . I recommend reading his article, as it presents this new feature in a simple, easy-to-read manner. The Optimizer Tracing feature can help understanding what the Optimizer is doing; it is available since milestone 5.6.3, announced October 3rd at Oracle Open World (here is the changelog ). It's good to see it mature now; I remember that Sergey Petrunia did the first prototype back in March 2009! Today I will be giving some must-have tips related to handling big traces. First thing to know, a trace lives in main memory (internally it is allocated on the heap or free store of the MySQL Server). An SQL statement which gives the optimizer a lot of work (for example, by joining many tables) will generate a large trace. Up to gigabytes in some pathological cases! To avoid hogging memory then, a trace will never grow beyond the value of the @@optimizer_trace_max_mem_size sess...