MySQL 5.1 – Do Threads in Cache Still Use Memory?

memoryMySQLmysql-5.1performanceperformance-tuning

I was studying about how and how much memory allocated to each connection thread and found below MySQL tutorial:

http://dev.mysql.com/doc/refman/5.1/en/memory-use.html

There is a point mentioned as below which I am unable to understand.

  • When a thread is no longer needed, the memory allocated to it is
    released and returned to the system unless the thread goes back into
    the thread cache.
    In that case, the memory remains allocated.

My concerns are the following:

  • Does it mean thread occupied the memory even system is using threads from cache?
  • A cache in thread still use memory?

Best Answer

I wrote these posts

and discussed the many buffers that are allocated for each connection. They are part of RAM and not encapsulated within the cache. Since the buffers are set based whether it is defined in my.cnf or defaulted if it is not, it would not make sense that the memory is released if a thread needs to be reused and will set its buffers to the same sizes again. As I mentioned in How costly is opening and closing of a DB connection? it would be an expensive operation to deallocate and then immediately allocate the buffers.

Therefore, with regard to your actual questions

Does it mean thread occupied the memory even system is using threads from cache?

A cache in thread still use memory?

The answer to both would be Yes