Из того, что я прочитал в следующем: http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html, оператор LOCK TABLES подходит только для текущего сеанса. Как я могу навсегда заблокировать определенные таблицы, чтобы сделать их доступными только для чтения для всех сеансов подключения, пока я не разблокирую их явно?
Постоянная блокировка таблицы MySQL
comment
Я не верю, что ты сможешь. Какую проблему вы пытаетесь решить?
- person Flimzy   schedule 12.11.2013
comment
Я привожу несколько больших наборов данных для проведения детального анализа и хочу убедиться, что исходные данные не изменяются после импорта.
- person Michael Sheaver   schedule 12.11.2013
Ответы (2)
Я не думаю, что вы можете просто заблокировать любую таблицу таким образом. Лучший способ сделать это - отозвать все права на обновление, вставку и удаление.
Что-то вроде этого:
REVOKE DROP, INSERT, TRUNCATE ON database.table FOR 'user'@'host'
person
Rahul Tripathi
schedule
12.11.2013
Спасибо, Рахул, похоже, это мой лучший вариант.
- person Michael Sheaver; 12.11.2013
Для таких больших и трудоемких операций хорошим вариантом может быть копирование данных в новое место для выполнения ваших манипуляций. По сути, это создает моментальный снимок данных, оставляя базу данных беспрепятственной (и, возможно, по-прежнему принимая чтение и запись), пока вы выполняете свою операцию.
- Остановить MySQL
- Скопируйте файлы данных в новое место.
- Перезапустите MySqL
- Выполните манипуляции с копией данных.
- Удалить копию (с помощью DROP TABLE)
person
Flimzy
schedule
12.11.2013