72 похожих чатов

Вопрос касательно tmp_table_size. Дано: тяжелый сервер Битрикс24. Процент временных таблиц потребовавших создание

на диске стабильно больше 40% (Created_tmp_disk_tables / (Created_tmp_tables + Created_tmp_disk_tables))
tmp_table_size = max_heap_table_size = 256 МБ

Есть два противоречивых мнения:
1. Увеличивать показатели и надеяться что базе данных хватит оперативы на все.
2. Уменьшать показатели, перенести tmpdir в оперативную память (и если упадет, то упадет только конкретный запрос)


Менять запросы не вариант - почти все они генерируются проприетарным ПО по каким-то внутренним правилам.

Вопрос: какой из двух вариантов выбрать и есть ли третий?

31 ответов

130 просмотров

А СУБД какая ?

Andrei-Nikolaev Автор вопроса
Andrei Nikolaev
MySQL 5.7.37-40

что такое тогда "перенести tmpdir в оперативную память " ?

1. Увеличивать показатели /2. Уменьшать показатели, — тоже как бы не ясно

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
что такое тогда "перенести tmpdir в оперативную п...

Создать виртуальный диск на linux (tmpfs), примонтировать его в какую-нибудь директорию и изменить конфигурацию MySQL (tmpdir) чтобы он создавал временные таблицы в этой директории (которая де-факто находится не на диске, а в памяти).

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
1. Увеличивать показатели /2. Уменьшать показатели...

Сейчас tmp_table_size = 256МБ, ее можно увеличить до 512 например.

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
с чего она будет в памяти-то ?

Потому что сам раздел будет не физическим, а в оперативной памяти

Andrei Nikolaev
Уже - Samsung EVO 960

Ну так и успокойся с памятью тогда, память лучше под кэш БД отдать. innodb buffer pool

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
Ну так и успокойся с памятью тогда, память лучше п...

Ваше мнение услышал. Большое спасибо. Подожду еще альтернатив (если будут).

Временные таблицы же на SSD у тебя сконфигурены ?

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
Временные таблицы же на SSD у тебя сконфигурены ?

Да. Там все на SSD - и база и временные таблицы и ось

А третий вариант - индексы создавать надо. Это полезнее всех этих прыжков

А проблема-то сейчас в чём? Ну спиллятся времянки на диск, чуть медленнее запросы работают, но работают. А от манипуляций с tmpfs будешь регулярно получать очень быстрые краши вместо медленных результатов)

Я тоже не понял какой показатель вы хотите там увеличивать или уменьшать

Andrei-Nikolaev Автор вопроса
Nick Nalbantov
А проблема-то сейчас в чём? Ну спиллятся времянки...

У клиента "тормозит" ПО и он хочет "ускориться". Примерно 40% от скорости занимает время выполнение запросов (запросы не легкие с join'ами и кучей where). Одна из рабочих гипотез - что создание этих временных таблиц дает тормоза. "Специалисты" заказчика тыкают пальцами на этот процент и хотят чтобы его уменьшили (то бишь увеличили параметры), уверяя что это как-то увеличит производительность. Некоторые сисадмины (наши) уверяют что показатель наоборот надо уменьшать и переносить в оперативную память. Я не спец в этом и не считаю что это как-то сделает погоду, но если вдруг у кого-то есть какие-либо аргументы за/против - мне бы хотелось разобраться.

Ну то есть вам нужен нормальный mysql DBA, но нанять его нет денег

Andrei-Nikolaev Автор вопроса
Roman Sergeev
Ну то есть вам нужен нормальный mysql DBA, но наня...

Если бы была какая-то ежедневная/ежемесячная ситуация - думаю так и поступили бы, но вот такой вот "разовый" прыжок во мнениях произошел. Я бы и сам нырнул куда-нибудь да почитал, вот только в доках про mysql не пишут про трюки с tmpfs.

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
Так какой показатель ты хочешь менять?

tmp_table_size И max_heap_table_size - там же написано (вроде как по докам лучше чтобы они были одинаковые).

Andrei Nikolaev
tmp_table_size И max_heap_table_size - там же напи...

Ну это можно сделать ЕСЛИ хватает оперативной памяти для самой базы данных, для её кэша

Andrei Nikolaev
У клиента "тормозит" ПО и он хочет "ускориться". П...

Зависит от того, сколько сессий параллельно работает (может у вас там 200 бухгалтеров разом тяжёлые отчёты грузят) и сколько едят эти запросы (может там спиллы на десяток гигов) Выкручивание tmp_table_size, скорее всего, даст очень ограниченный эффект Перенос на tmpfs - дорогая затея, не самый эффективный способ использования RAM. Ну и риски OOM повышаются резко - понравится ли это клиенту больше, чем тормоза? Лучше просто планок RAM закупить тогда уж. Начинать надо бы с редизайна схем, докручивания индексов, статистики по таблицам, партиционирования, а потом уже за конфигурацию кластера браться

Andrei Nikolaev
Если бы была какая-то ежедневная/ежемесячная ситуа...

Не надо всякий tmpfs, Если у тебя есть SSD, то это как бы его заменяет

Nick Nalbantov
Зависит от того, сколько сессий параллельно работа...

Последний абзац ему недоступен он об этом сразу сказал

Andrei Nikolaev
tmp_table_size И max_heap_table_size - там же напи...

Параметр Max Hip Table size тебе трогать не нужно, это не про это, это про максимальный размер таблиц для Engine Memory которые создаются пользователем, то есть явно кодом SQL. Я подозреваю что у тебя-то таких таблиц нет вообще. Но с другой стороны если ты его увеличишь и таких таблиц всё равно нет то ничего страшного тоже не будет

Andrei-Nikolaev Автор вопроса
Ilya Zviagin
Параметр Max Hip Table size тебе трогать не нужно,...

Насколько я понял она играет роль для запросов ALTER TABLE на других таблицах - а такие запросы бывают (но очень редко).

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Карта сайта