Подтвердить что ты не робот

MySQL - что делает skip-locking в my.cnf?

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

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

Если это заменить на "skip_external_locking" или мне нужно просто удалить строку целиком, так как теперь она по умолчанию.

Руководство MySQL для skip-external-locking

Спасибо.

4b9b3361

Ответ 1

см. 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-locking в -skip-external-locking.

Ответ 2

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

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

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

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

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

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