Join buffer size для больших таблиц. Что нужно настроить в mySQL сразу после установки? Где же хранятся настройки mysql

В MySQL существует 2 основных движка: InnoDB и MyISAM . Таблицы баз данных обоих типов могут существовать на одном сервере. При необходимости их можно конвертировать, использование MyISAM оправдано при преобладающем количестве операций с данными одного вида: например SELECT или INSERT.

Во всех остальных случаях выгоднее использовать InnoDB — этот движок обеспечивает лучшую сохранность данность и более высокую скорость работы с ними (блокируется при операции с таблицей строка, а не вся таблица как в случае с MyISAM).

Любой тюнинг MySQL — любая тонкая настройка должна начинаться с определения преобладающего количества таблиц определенного типа.

Определение типа таблиц в MySQL

Делается это при помощи запроса вида (для innodb):



WHERE engine = "innodb";

Или (для myisam):

SELECT table_schema, table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE engine = "myisam";

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

Конфигурация MySQL в my.cnf

Ниже рассматриваются основные опции при конфигурации MySQL с преимущественным использованием InnoDB .

Все дальнейшие модификации производятся в конфигурационном файле /etc/mysql/my.cnf

innodb_buffer_pool_size — размер буфера под InnoDB таблицы и индексы. При преобладании InnoDB таблиц стоит устанавливать значение равным 80% общего количества ОЗУ (8 Гб для сервера с 10 Гб RAM является нормой). Для более мощных серверов данное значение можно увеличивать еще вплоть до 95% доступной RAM.

innodb_buffer_pool_instances — очень важный параметр, определяющий количество инстансов, которые могут существовать, по умолчанию значение параметра равно 1, более оправданным является значение вычисляемое как сумма innodb_buffer_pool_size в гигабайтах и ядер CPU, деленная пополам.

innodb_buffer_pool_size in Gb + CPUs)/2

innodb_flush_log_at_trx_commit - значение устанавливается в 0, 1, 2. 0 означает, что лог сбрасывается на диск раз в секунду, вне зависимости от транзакций. При 1 лог сбрасывается при каждой завершенной транзакции. 2 — лог хранится в ОЗУ. Быстрее всего сервер баз данных будет работать при 0.

innodb_log_buffer_size - размер буфера лога 1-8 Мб являются хорошими значениями

innodb_log_file_size - максимальный размер каждого лог-файла. Можно увеличивать значение, это даст большую производительность поскольку не нужно будет ротировать лог слишком часто, открывать и закрывать новые файлы.

Общие параметры (не имеющие отношения к типу движка)

max_connections=2000 — устанавливаем параметр минимальным возможным при необходимости экономить ресурсы сервера, при возникновении в логе записей вида «Too many connections…» увеличиваем значение. 4000 клиентов является максимумом. Можно довести максимальное количество клиентов до 7000, но для стандартных сборок 4000 является пределом.

key_buffer=1024M — размер буфера под индексы в оперативной памяти. Оптимальное значение 20-25% доступной RAM. Если значение параметра слишком маленькое — данные начнут писаться в SWAP, что снизит скорость работы в разы.

Памяти под индексы выделяется достаточно если отношение значений Key_reads/Key_read_request оказывается < 0,01

Узнать значения параметров можно выполнив в консоли сервера баз данных запрос

SHOW STATUS LIKE «Key%»;

Также в выводе будут значения Key_write_requests и Key_writes

table_cache=2048 максимальное число открытых таблиц для всех потоков.

Увеличение параметра означает увеличение файловых дескрипторов, используемых для работы MySQL.

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

SHOW STATUS LIKE «Opened_tables%»;

Затем установить значение переменной несколько больше значения в выводе:
+—————+——-+
| Variable_name | Value |
+—————+——-+
| Opened_tables | 1756 |
+—————+——-+

open_files_limit = 2048

Утсанавливать значение стоит опирясь на существующее количество открытых файлов MySQL

В конфигурационном файле задается большее значение.

sort_buffer=128M – ускоряет запросы ORDER BY или GROUP BY. Устанавливается не очень большим (как правило — в зависимости от среды)

Выделяемое количество ОЗУ будет определяться как значение sort_buffer, умноженное на Threads_running

SHOW STATUS LIKE «Threads_running%»;

record_buffer=720M — хорошим значеинем будет эквивалент sort_buffer умноженный на 4-6.

query_cache_limit=2M – максимальный размер результата выборки (или другого запроса), который будет кэшироваться. Значение можно увеличивать, по умолчанию установлен 1 Мб.

max_join_size=1000000 — максимальное количество записей, которые могут обрабатываться единовременно. Своего рода «защита от дупака» при использовании JOIN.

thread_cache_size=64 — задает колчество потоков обработки данных в кэше, т.е. количество потоков которые не создаются вновь при каждом запросе. Можно увеличивать параметр, это положительно скажется на быстродействии

  • Перевод

Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.

Удивительно, сколько народу устанавливает mySQL на свои сервера и оставляют его с настройками по умолчанию.

Несмотря на то, что в mySQL существует довольно много настроек, которые Вы можете изменить, есть набор действительно очень важных характеристик, которые обязательно нужно оптимизировать под собственный сервер. Обычно после такой небольшой настройки производительность сервера заметно увеличивается.

  • key_buffer_size - крайне важная настройка при использовании MyISAM-таблиц. Установите её равной около 30-40% от доступной оперативной памяти, если используете только MyISAM. Правильный размер зависит от размеров индексов, данных и нагрузки на сервер - помните, что MyISAM использует кэш операционной системы (ОС), чтобы хранить данные, поэтому нужно оставить достаточно места в ОЗУ под данные, и данные могут занимать значительно больше места, чем индексы. Однако обязательно проверьте, чтобы всё место, отводимое директивой key_buffer_size под кэш, постоянно использовалось - нередко можно видеть ситуации, когда под кэш индексов отведено 4 ГБ, хотя общий размер всех.MYI-файлов не превышает 1 ГБ. Делать так совершенно бесполезно, Вы только потратите ресурсы. Если у Вас практически нет MyISAM-таблиц, то key_buffer_size следует выставить около 16-32 МБ - они будут использоваться для хранения в памяти индексов временных таблиц, создаваемых на диске.
  • innodb_buffer_pool_size - не менее важная настройка, но уже для InnoDB, обязательно обратите на неё внимание, если собираетесь использовать в основном InnoDB-таблицы, т.к. они значительно более чувствительны к размеру буфера, чем MyISAM-таблицы. MyISAM-таблицы в принципе могут неплохо работать даже с большим количеством данных и при стандартном значении key_buffer_size , однако mySQL может сильно «тормозить» при неверном значении innodb_buffer_pool_size . InnoDB использует свой буфер для хранения и индексов, и данных, поэтому нет необходимости оставлять память под кэш ОС - устанавливайте innodb_buffer_pool_size в 70-80% доступной оперативной памяти (если, конечно, используются только InnoDB-таблицы). Относительно максимального размера данной опции - аналогично key_buffer_size - не стоит увлекаться, нужно найти оптимальный размер, найдите лучшее применение доступной памяти.
  • innodb_additional_mem_pool_size - данная опция практически никак не влияет на производительность mySQL, однако рекомендую оставлять для InnoDB около 20 МБ (или чуть больше) под различные внутренние нужды.
  • innodb_log_file_size - крайне важная настройка в условиях баз данных с частыми операциями записи в таблицы, в особенности при больших объёмах. Бо льшие размеры увеличивают быстродействие, однако будьте осторожны - увеличится и время восстановления данных. Я обычно выставляю значение около 64-512 МБ в зависимости от размера сервера.
  • innodb_log_buffer_size - стандартное значение данной опции вполне подойдёт для большинства систем со средним количеством операций записи и небольшими транзакциями. Если же в Вашей системе бывают всплески активности, или Вы активно работаете с BLOB-данными, то рекомендую немного увеличить значение innodb_log_buffer_size . Однако не переусердствуйте - слишком большое значение будет пустой тратой памяти: буфер сбрасывается каждую секунду, поэтому Вам не понадобится больше места, чем требуется в течение этой секунды. Рекомендуемое значение - около 8-16 МБ, а для небольших баз - и того меньше.
  • - жалуетесь, что InnoDB работает в 100 раз медленнее MyISAM? Вероятно, Вы забыли про настройку innodb_flush_log_at_trx_commit . Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Большинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы.
  • table_cache - открытие таблиц может быть весьма ресурсоёмко. К примеру, MyISAM-таблицы помечают заголовки.MYI файлов как «используемые в текущий момент». Обычно не рекомендуется открывать таблицы слишком часто, поэтому лучше, чтобы кэш был достаточных размеров, чтобы держать все Ваши таблицы открытыми. Для этого используется некоторое количество ресурсов ОС и оперативной памяти, однако это обычно не является существенной проблемой для современных серверов. Если у Вас несколько сотен таблиц, то стартовым значением для опции table_cache может быть«1024» (помните, что каждое соединение требует свой собственный дескриптор). Если у Вас ещё больше таблиц или очень много соединений - увеличьте значение параметра. Я видел mySQL сервера со значением table_cache равной 100 000.
  • thread_cache - создание/уничтожение потоков также является ресурсоёмкой операцией, которая происходит при каждой установке соединения и каждом разрыве соединения. Я обычно выставляю эту опцию равную 16. Если у Вашего приложения могут быть скачки количество конкурентных соединений и по переменной Threads_Created виден быстрый рост количества потоков, то стоит увеличить значение thread_cache . Цель - не допускать создания новых потоков в условиях нормального функционирования сервера.
  • query_cache_size - если Ваше приложение много и часто читает данные, и при этом у Вас нет кэша на уровне приложения, эта опция может очень помочь. Не ставьте здесь слишком большое значение, так как обслуживание большого кэша запросов будет само по себе затратным. Рекомендуемое значение - от 32 до 512 МБ. Не забудьте проверить, насколько хорошо используется кэш запросов - в некоторых условиях (при небольшом количестве хитов в кэше, т.е. когда практически не выбираются одинаковые данные) использование большого кэша может ухудшить производительность.
Как Вы можете видеть, это - глобальные настройки. Эти переменные зависят от «железа» сервера и используемых движков mySQL, в то время как сессионные переменные обычно настраиваются специально под конкретные задачи. Если Вы в основном используете простые запросы, то нет никакой необходимости увеличивать значение sort_buffer_size , даже если у Вас есть лишние 64 ГБ оперативной памяти. Более того, большие значения кэшей могут только ухудшить производительность сервера. Сессионные переменные лучше оставить на потом, для тонкой настройки сервера.

PS: инсталляция mySQL идёт с несколькими предустановленными файлами my.cnf, рассчитанными под разную нагрузку. Если Вам некогда настраивать сервер вручную, то обычно лучше использовать их, чем стандартный конфигурационный файл, выбрав тот, что больше подойдёт под нагрузку Вашего сервера.

Конфигурационные параметры по умолчанию в Mysql расчитаны на небольшие базы данных, работающие под малыми наргузками на весьма скромном железе. Если Ваши планы насчет Mysql выходят за границы таблиц на несколько сотен записей, Вам обязательно придется менять настройки по умолчанию. Процесс оптимальной настройки Mysql состоит из двух частей - первоначальная настройка и корректировака параметров во время работы. Корректировка параметров в рабочем режиме во многом зависит от специфики Вашей системы и ее мониторинга - тут особых правил не существует. Для стартовой настройки есть ряд рекомендаций:

MySQL - свободная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

Откройте файл настроек mysql, например:

/etc/mysql/my.cnf

Сымае распространенные параметры, на которые стоит обратить внимание и изменить под Ваши требования:

key_buffer_size

Если Вы используете только MyIsam таблицы, устанавливайте это значение в 30%…40% всей доступной оперативной памяти на сервере. MyIsam использует кеш операционной системы для данных, поэтому учтите, что оставшаяся свободная память понадобится именно для этого. Если же MyIsam таблиц у Вас немного и их совокупный размер маленький - оставьте это значение в пределах 32M.

innodb_buffer_pool_size

Если Вы использутете только InnoDB таблицы, устанавливайте это значение максимально возможным для Вашей системы. Буффер InnoDB кеширует и данные и индексы (а кеш операционной системы не используется), поэтому значение этого ключа стоит устанавливать в 70%…80% доступной памяти.

Если Ваш сервер работает на линкусе или юниксе, не забудьте установить параметр innodb_flush_method в значение “O_DIRECT”, что-бы избежать кеширования на уровне ОС того, что уже кеширует Mysql.

innodb_log_file_size

Обратите внимание на этот параметр, если у Вас предусматривается большой показатель записей. Чем больше размер этого ключа, тем более эффективно будет происходить запись данных. Но учтите, что при этом увеличится время восстановления системы! Этот параметр обычно устанавливают в 64M-512M.

innodb_flush_log_at_trx_commit

Этот параметр в значительной степени влияет на скорость работы (записи) innoDB таблиц.
Значение “1″ означает, что любая завершенная транзакция будет синхронно сбрасывать лог на диск.
Значение “2″ делает то же самое, только сбрасывает лог не на диск, а в кеш операционной системы. Это значение подойдет в большинстве случаев, т.к. не выполняет дорогой операции записи после каждой транзакции. При этом лог пишется на диск с задержкой в несколько секунд, что весьма безопасно с точки зрения сохранности данных.
Значение “0″ даст наибольшую производительность. В этом случае буфер будет сбрасывать в лог файл независимо от транзакций. Устанавливайте этот параметр в “0″ на свой риск, т.к. в этом случае риск потери данных возрастает.

table_cache

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

thread_cache

Этот параметр помагает избежать операций создания/уничтожения потоков при соединении к серверу. Установите этот параметр в 16 и наращивайте по мере потребности. Проверяйте показатель “Threads_created”, идеально он должан быть равным нулю:

Mysql> show status like ‘threads_created’; +-----–+--–+ | Variable_name | Value | +-----–+--–+ | Threads_created | 423312 | +-----–+--–+

query_cache_size

Значение этого параметра определяет сколько памяти стоит использовать под кеш запросов. Не увлекайтесь установкой огромных значений. Кеш запросов не должен быть большим, т.к. mysql будет съедать ресурсы на управление данными в кеше. Начните с 32М…128М, и увеличивайте по мере необходимости.

Настройка MySQL сводится, в основном, к редактированию главного конфигурационного файла (/etc/my.cnf в FreeBSD). Перед настройкой следует учесть, что в MySQL 5.6 названия некоторых параметров и их наличие отличается от тех, которые использовались в предидущих версиях.

MySQL 5.6 - конфигурирование my.cnf

Для того, чтобы изменения в файле my.cnf вступили в силу, необходимо перезагрузить сервер MySQL:

/usr/local/etc/rc.d/mysqld restart

Проверить, восприняты ли новые настройки сервером, можно с помощью запроса к БД:

mysql> SHOW WARIABLES;

Чтобы просмотреть только определенные настройки, нужно конкретизировать запрос. Например, чтобы увидеть параметр max_connections нужно отправить в MySQL такой запрос: mysql> SHOW VARIABLES LIKE "max_ conn% " ;

Если после перезагрузки, изменения применились частично или не воспринимаются сервером MySQL, проверьте, возможно отредактирован не тот файл или MySQL дополнительно подгружает другой конфигурационный файл, директивы которого переназначают измененные вами параметры. Например, при установке панели управления хостингом DirectAdmin, сервер MySQL устанавливается автоматически и содержит 2 конфигурационных файла: /etc/my.cnf и дополнительно подгружаемый /usr/local/mysql/my.cnf. Изменяя параметр sql_mode в /etc/my.cnf я долго не мог понять, почему он не применяется к в MySQL сервере, как оказалось, он переопределялся в /usr/local/mysql/my.cnf (FreeBSD) или /usr/my.cnf (CentOS). Как найти список всех файлов my.cnf использующихся в MySQL можно посмотреть, введя запрос в поисковой системе: "my.cnf location".

Полный список настроек, которые используются в my.cnf можно посмотреть в официальном руководстве пользователя MySQL (eng), в колонке Option File.

Настройки в разделе

local_infile

Этой переменной можно разрешить (ON или 1 - по умолчанию) или запретить (OFF или 0) использовать LOCAL в запросе LOAD DATA. Если вы не знаете точно что это и зачем нужно, настоятельно рекомендуется переключить local_infile в OFF (local_infile=OFF ) из соображения безопасности сервера в целом.

skip_external_locking

skip_external_locking - параметр отвечающий за внешнюю блокировку файлов баз данных типа MyISAM (по умолчанию установлен в ON - блокировка включена). Рекомендуется не менять этот параметр из соображений быстродействия сервера MySQL.

skip_name_resolve

Если параметр skip_name_resolve установлен в ON или 1 (skip_name_resolve=OFF - по умолчанию), то при внешнем подключении к MySQL сервер пытается перевести название домена в IP-адрес, что заметно снижает скорость обработки запроса. Для повышения быстродействия, рекомендуется установить skip_name_resolve в OFF, в этом случае в качестве хоста при подключении к MySQL можно будет использовать только IP-адрес или localhost.

low_priority_updates

По умолчанию, такие операторы MySQL как INSERT, REPLACE, UPDATE, DELETE имеют более высокий приоритет, чем, например, SELECT, и параметр low_priority_updates, соответственно, установлен в OFF. Если Ваш сервер больше посылает запросов на чтение, чем изменение данных таблиц, можно установить low_priority_updates в ON. Следует отметить, что low_priority_updates применяется только к типам таблиц MyISAM, MEMORY и MERGE.

sql_mode

От параметров, указанных в sql_mode сильно зависит работа сервера MySQL. Не правильное указание настроек может полностью остановить работу сайта, использующего MySQL привести к вставке некорректных параметров в БД и другим проблемам. Подробнее об sql_mod можно прочитать тут: , Server SQL Modes 5.6 (eng) .

По умолчанию, в MySQL 5.6.6 и более поздних версиях значение sql_mode установлено в NO_ENGINE_SUBSTITUTION (sql_mode=NO_ENGINE_SUBSTITUTION ), что будет достаточно для большинства сайтов, но все же для понимания работы MySQL следует знать и о других способах работы MySQL, задаваемых в sql_mode.

max_connections

Этот параметр отвечает за максимально-допустимое кол-во одновременных подключений к MySQL. По умолчанию его значение равно 151 и может быть изменено в пределах от 1 до 100000. Увеличивать это значение следует, если появляется ошибка "Too many connections" или администратор уверен, что значения по умолчанию будет не достаточно.

query_cache_type

Значение query_cache_type включает (ON) или выключает (OFF) кеширование запросов. Кеширование - хороший способ снизить нагрузку, если сервер обрабатывает много одинаковых запросов. Использовать query_cache_type следует практически всегда, за исключением случаев, когда запросы MySQL кеширует memcached.

query_cache_size

Размер кеша запросов MySQL. Значение можно записать в Mb - query_cache_size=32M .

Настройки для таблиц MyISAM

key_buffer_size

Если используются только таблицы MyISAM , размер буфера следует установить в размере около 30-35% от размера доступной оперативной памяти. Если же MyISAM-таблиц очень мало или нет совсем, то key_buffer_size можно установить значение 32 МБ, место будет использоваться для хранения в памяти индексов временных таблиц, создаваемых на диске. Выбор объема памяти для key_buffer_size зависит от размеров индексов, данных и нагрузки на сервер. Следует знать, что MyISAM использует кэш операционной системы, чтобы хранить там данные, поэтому нужно оставить достаточно места в ОЗУ под них. Данные могут занимать значительно больше места, чем индексы. Однако стоит проверить, что вся память, указанная в key_buffer_size под кэш, постоянно используется, иначе это будет расходование ресурсов в никуда.

Настройки для таблиц InnoDB

innodb_buffer_pool_size

innodb_buffer_pool_size - размер буфера таблиц InnoDB. Таблицы типа InnoDB используют свой буфер для хранения индексов и данных, поэтому нет необходимости оставлять память под кэш операционной системы, устанавливайте innodb_buffer_pool_size в 75% доступной оперативной памяти, если планируется использовать только таблицы с типом InnoDB. Рекомендации по максимальному размеру данной опции аналогичны key_buffer_size для MyISAM: не стоит устанавливать максимальный размер, нужно найти оптимальный вариант, а доступной ОЗУ можно найти применение и в других задачах.

Не знаю почему, но по умолчанию настройки MySQL рассчитаны на десктопы 90-х годов. Например, 8Mb памяти под индексы InnoDB. Помните, как Билл Гейтс заявил, что «640 Кб памяти должно хватать каждому». Дефолтные настройки MySQL из этой серии.

Для начала моя выжимка из конфига (4G RAM, AMD Athlon 64 X2 Dual 5600+)

# ТОЛЬКО UTF! ТОЛЬКО ХАРДКОР! collation_server=utf8_general_ci character_set_server=utf8 default-character-set = utf8 # по умолчанию пускай будет InnoDB default-storage-engine = InnoDB key_buffer_size = 512M innodb_buffer_pool_size = 512M innodb_additional_mem_pool_size = 16M innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 2 innodb_thread_concurrency = 8 join_buffer_size = 8M sort_buffer_size = 8M read_rnd_buffer_size = 8M tmp_table_size = 64M max_heap_table_size = 32M table_cache = 256 log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 1 query_cache_type = 2 query_cache_limit = 1M query_cache_size = 32M

Как посмотреть что с базой что-то не в порядке
Самый быстрый вариант зайти в phpMyAdmin во вкладку «Текущее состояние MySQL»
Там вы увидите подсказки, какие настройки нужно подкрутить.

Сами настройки можно посмотреть в том же phpMyAdmin во вкладке «Системные переменные».

У MySQL есть несколько настроек, с помощью которых можно разогнать базу до первой космической. Во-первых, настройки по хранению индексов в памяти. Мало того, что индексы значительно ускоряют выборки, но если их хранить в памяти, а не на диске (где они обычно лежат), то профит будет значительным.

key_buffer_size = 512M
Таким образом выделяем 512 Mb под индексы таблиц MyISAM. Дело в том, что у меня половина баз в MyISAM (так исторически сложилось). На 99,9% эти базы используются на чтение, так что переходить на InnoDB смысла нет.

innodb_buffer_pool_size = 512M
Такой же объем памяти выделяем на таблицы InnoDB.
Тут нужно знать меру. Если у вас 1 база размером 100 Mb, то нет смысла выделять 1 Гб памяти – она всё равно не будет использована.
Во-вторых, нужно смотреть не на размер таблицы, а на размер индексов. Пример из жизни: таблица 300 000 комментариев весит 300 Мб, а ее индексы занимают в 15 раз меньше, что вполне логично, так как обычно индексы расставляются на числовые и временные столбцы, а не на текст. Посмотреть это опять же можно в phpMyAdmin

innodb_additional_mem_pool_size = 16M
Размер памяти, выделяемый InnoDB для хранения различных внутренних структур.

innodb_flush_method = O_DIRECT
Тут мы вырубаем буферизацию таблиц для файловой системы и говорим MySQL обращаться к файлам напрямую.

innodb_flush_log_at_trx_commit = 2
При каждой транзакции MySQL пишет лог и сбрасывает на диск (значение 1). Значение 2 – сбрасываем в память. Мне не критично потерять транзакции за последние 2 секунды в случае падения сервера.

join_buffer_size = 8M
Память для запросов с джойнами, когда объединение происходит без использования индексов.

sort_buffer_size = 8M
read_rnd_buffer_size = 8M
Полезно для запросов с сортировкой ORDER BY и группировкой GROUP BY. При малом значении сортировка идет во временной таблице на диске.

tmp_table_size = 64M
max_heap_table_size = 32M
Настройки для хранения временных таблиц в памяти. Временные таблицы часто образуются при больших джойнах.

table_cache = 256
Максимальное число одновременно открытых таблиц.

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1