Назад | Перейти на главную страницу

Почему MySQL table_cache заполнен, но не используется

Я использую сценарий tuning-primer.sh для настройки параметров my.cnf. У меня большинство вещей работает хорошо, но часть о ТАБЛИЧНОМ КЭШЕ не имеет смысла:

ТАБЛИЧНЫЙ КЭШ Текущее значение table_cache = 900 таблиц.

Всего у вас 0 столов. У вас 900 открытых столов.

Текущая частота попаданий table_cache составляет 1%, в то время как используется 100% кеш-памяти вашей таблицы.

Вероятно, вам следует увеличить свой table_cache

Когда я делаю ПОКАЗАТЬ СТАТУС; Я получаю следующие числа, относящиеся к таблице:

Open_tables = 900

Opened_tables = 0

Кажется, что-то не так. У меня есть дополнительная память, которую я мог бы использовать для увеличения размера table_cache, но я чувствую, что уже доступные 900 таблиц ничего не делают, и их увеличение просто тратит больше энергии.

Почему это могло происходить? Существуют ли другие настройки, которые могут привести к использованию всех моих слотов table_cache, даже если к ним нет обращений?

У меня 150 макс соединений и, вероятно, не более 4 таблиц на соединение, FWIW.

Вот вывод сценария настройки для временных таблиц, который я также настраивал:

ТАБЛИЦЫ ТЕМП.

Текущий max_heap_table_size = 90 M

Текущий tmp_table_size = 90 M

Из 11032358 временных таблиц 40% были созданы на диске.

Возможно, вам следует увеличить tmp_table_size и / или max_heap_table_size, чтобы уменьшить количество временных таблиц на диске.

Заметка! Столбцы BLOB и TEXT не допускаются в таблицы памяти.

Если вы используете эти столбцы, повышение этих значений может не повлиять на соотношение временных таблиц на диске.

TABLE CACHE Текущее значение table_cache = 900 таблиц, это будет итог для всех ваших 150 подключений. Если я хорошо помню, каждое соединение использует свой table_cache