Памятка к митапу по базам и высоким нагрузкам в Иркутске:
5% настроек базы обеспечивают 95% производительности Innodb:
- innodb_buffer_pool_size количество памяти выделяемое под кеш данных InnoDB. Обычно 80% всей памяти на выделенном под базу сервере
- innodb_buffer_pool_instances - количество пулов на сервере. Нужно для ускорения работы в многоядерной конфигурации. По одному пулу на 1-8 ядрер. innodb_buffer_pool_size описывает общее количество памяти, а не объем памяти одного пула
- innodb_log_file_size - объем транзакционного лога. Обычно (обычно) ставится в количество данных, которые может писать mysql в 1-10 секунд. Обычно не меньше 512Gb
- innodb_log_buffer_size - кеш транзакционного лога в памяти
- innodb_flush_method - если не знаете что это, ставьте в O_DIRECT
Общие настройки MySQL
- max_connections - количество клиентов, которые могут одновременно подключиться к серверу. Поставим мало - не все клиенты смогут подключиться. Поставим слишком много, можем получить OOM. Среднее значение от 100 до 5000 подключений.
- max_heap_table_size / tmp_table_size - если временная таблица будет больше значение настройки, она будет сброшена на диск и запрос станет очень медленным. Если у вас большое количество запросов требующих временные таблицы в памяти - можете получить OOM если память закончится
Помните: скорость работы базы обеспечивают не настройки, а запросы. Про них поговорим отдельно.
#полезныематериалы
@downtime_bar
Post #11
420
- ❤ 1