Spec-Zone .ru
спецификации, руководства, описания, API

8.10.3. Параллельные Вставки

MyISAM механизм хранения поддерживает параллельные вставки, чтобы уменьшить конкуренцию между читателями и писателями для данной таблицы: Если a MyISAM у таблицы нет никаких дыр в файле данных (удаленные строки в середине), INSERT оператор может быть выполнен, чтобы добавить строки до конца таблицы в то же самое время, когда SELECT операторы читают строки из таблицы. Если там многократны INSERT операторы, они ставятся в очередь и выполняются в последовательности, одновременно с SELECT операторы. Результаты параллельного INSERT возможно, сразу не видимо.

concurrent_insert системная переменная может быть установлена изменить параллельное - вставляют обработку. По умолчанию переменная устанавливается в AUTO (или 1), и параллельные вставки обрабатываются как только описано. Если concurrent_insert устанавливается в NEVER (или 0), параллельные вставки отключаются. Если переменная устанавливается в ALWAYS (или 2), параллельные вставки в конце таблицы разрешаются даже для таблиц, которые удалили строки. См. также описание concurrent_insert системная переменная.

При обстоятельствах, где параллельные вставки могут использоваться, редко есть любая потребность использовать DELAYED модификатор для INSERT операторы. См. Раздел 13.2.5.2,"INSERT DELAYED Синтаксис".

Если Вы используете двоичный журнал, параллельные вставки преобразовываются в нормальные вставки для CREATE ... SELECT или INSERT ... SELECT операторы. Это делается, чтобы гарантировать, что можно воссоздать точную копию своих таблиц, применяя журнал во время операции резервного копирования. См. Раздел 5.2.4, "Двоичный Журнал". Кроме того, для тех операторов блокировка чтения помещается в выбранный - от таблицы, так, что вставляет в ту таблицу, блокируются. Эффект состоит в том, что параллельные вставки для той таблицы должны ожидать также.

С LOAD DATA INFILE, если Вы определяете CONCURRENT с a MyISAM таблица, которая удовлетворяет условие для параллельных вставок (то есть, это не содержит свободных блоков в середине), другие сеансы может получить данные от таблицы в то время как LOAD DATA выполняется. Использование CONCURRENT опция влияет на производительность LOAD DATA немного, даже если никакой другой сеанс не использует таблицу одновременно.

Если Вы определяете HIGH_PRIORITY, это переопределяет эффект --low-priority-updates опция, если сервер был запущен с той опции. Это также заставляет параллельные вставки не использоваться.

Для LOCK TABLE, различие между READ LOCAL и READ это READ LOCAL неконфликт разрешений INSERT операторы (параллельные вставки), чтобы выполниться, в то время как блокировка сохранена. Однако, это не может использоваться, если Вы собираетесь управлять процессами использования базы данных, внешними к серверу, в то время как Вы содержите блокировку.