thread_cache_size в Mysql

Thank you for reading this post, don't forget to subscribe!

Когда новый кли­ент уста­нав­ли­ва­ет соеди­не­ние с Mysql, Mysql откры­ва­ет созда­ет новый тред (thread) для это­го кли­ен­та. В сре­дах с боль­ших коли­че­ством кли­ен­тов и соеди­не­ний, созда­ние и уда­ле­ние тре­дов ста­но­вит­ся доро­гой опе­ра­ци­ей. Для того, что­бы опти­ми­зи­ро­вать этот про­цесс, суще­ству­ет настрой­ка thread_cache_size. Вме­сто посто­ян­но­го созда­ния и уда­ле­ния, Mysql может сохра­нять неак­тив­ные тре­ды в кеш (и исполь­зо­вать в слу­чае необходимости).

Пара­метр thread_cache_size опре­де­ля­ет мак­си­маль­ное коли­че­ство тре­дов в кеше.

По умол­ча­нию, эта настрой­ка выклю­че­на. Зна­че­ние сто­ит выби­рать не менее зна­че­ния, кото­рое ука­за­но в max_connections (уста­нав­ли­ва­ет­ся в my.cnf):

# Зна­че­ние не мень­ше max_connections

Этот пара­метр так­же мож­но уста­нав­ли­вать без перезагрузки:

Что­бы опре­де­лить необ­хо­ди­мость изме­не­ние зна­че­ния это­го пара­мет­ра, нуж­но полу­чить зна­че­ние создан­ных тредов:

# Threads_created дол­жен быть мень­ше несколь­ких сотен

Если зна­че­ние боль­ше, чем 100, thread_cache_size сто­ит уве­ли­чи­вать (на 8…16 еди­ниц). Эту про­вер­ку сто­ит пери­о­ди­че­ски повторять.