Spec-Zone .ru
спецификации, руководства, описания, API
|
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
операторы (параллельные вставки), чтобы выполниться, в то время как
блокировка сохранена. Однако, это не может использоваться, если Вы собираетесь управлять процессами
использования базы данных, внешними к серверу, в то время как Вы содержите блокировку.