MySQL - что делает скип-блокировка в my.cnf? - PullRequest
24 голосов
/ 03 июня 2009

Я использую MySQL 5.0.67 на RHEL5 и основываю свою конфигурацию на my-огромный.cnf.

Я не могу найти ничего в руководстве MySQL для строки 'skip-lock', которая появляется в файле конфигурации.

Должно ли это быть заменено на 'skip_external_locking' или я должен просто полностью удалить строку, поскольку теперь это значение по умолчанию.

Руководство по MySQL для внешней блокировки с пропуском

Спасибо.

Ответы [ 2 ]

26 голосов
/ 03 июня 2009

см. http://dev.mysql.com/doc/refman/5.0/en/external-locking.html

цитата:

Если вы запускаете несколько серверов, которые используют один и тот же каталог базы данных (не рекомендуется), на каждом сервере должна быть включена внешняя блокировка.

Это действительно связано с опасностями, которые представляют несколько процессов, обращающихся к одним и тем же данным. Во многих ситуациях СУБД вы хотите заблокировать таблицу / строку перед выполнением операции, а затем разблокировать ее. Это сделано для предотвращения возможного повреждения данных.

Редактировать: см. http://dev.mysql.com/doc/refman/4.1/en/news-4-0-3.html Цитата

Переименовано --skip-Lock в --skip-external-Lock.

0 голосов
/ 13 января 2013

Дополнительная заметка для тех, кто не переходит по ссылке, предоставленной @Jonathan Fingland:
8.7.4. Внешняя блокировка

Этот параметр применим только к таблицам MyISAM.

Как указал Ричард, внешняя блокировка по умолчанию отключена. Вам необходимо включить внешнюю блокировку, если вы используете myisamchk для операций записи или myisampack для упаковки таблиц.

Из документов:

Если вы используете myisamchk для выполнения операций по обслуживанию таблиц в MyISAM таблицы, вы должны либо убедиться, что сервер не работает, либо что на сервере включена внешняя блокировка, поэтому он блокирует файлы таблиц по мере необходимости согласовывать с myisamchk для доступа к таблицам. То же самое верно для использования myisampack для упаковки таблиц MyISAM.

Если вы используете myisamchk для операций записи, таких как восстановление или оптимизировать таблицы, или если вы используете myisampack для упаковки таблиц, вы должны всегда гарантируйте, что сервер mysqld не использует таблицу. если ты не останавливайте mysqld, вы должны по крайней мере сделать mysqladmin flush-таблицы прежде чем запустить myisamchk. Ваши таблицы могут быть повреждены, если сервер и myisamchk получают доступ к таблицам одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...