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 ответов

140 просмотров

А СУБД какая ?

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 на других таблицах - а такие запросы бывают (но очень редко).

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта