Назад | Перейти на главную страницу

Как наложить блокировку WRITE на все таблицы в MySql?

Как наложить блокировку WRITE на все таблицы в MySql? Я пробовал следующее, но это дает ошибку.

FLUSH TABLES mytest.mytable1 WITH  LOCK;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near 'WITH  LOCK' at line 1

Что ты здесь делаешь? Блокировки в MySQL могут немного сбить с толку, если вы сделаете предположения о том, что, по вашему мнению, они делают.

  • А ЧИТАТЬ lock позволяет сеансу с блокировкой читать, а другим сеансам - читать, но не писать.
  • А ЗАПИСЫВАТЬ lock позволяет сеансу с блокировкой читать и писать, а другим сеансам доступа нет.

В FLUSH TABLES синтаксис не позволяет указать список таблиц так же как приобретение блокировки. FLUSH TABLES WITH READ LOCK блокирует все таблицы. FLUSH TABLES <tables> очистит эти таблицы. Существует некоторая неявная блокировка, связанная с очисткой таблиц, поскольку новые записи не могут поступать в таблицу, пока она очищается, но эта неявная блокировка снимается, как только завершается очистка.

Если вы хотите заблокировать определенные таблицы с помощью блокировки записи, LOCK TABLES <table> WRITE это то, что вы хотите. Здесь вы можете указать список таблиц, разделенных запятыми. Если вы хотите заблокировать все таблицы, вам нужно будет предоставить весь список.

Я хотел бы закончить простым заявлением - ПРОМЫВКА ТАБЛИЦ С БЛОКИРОВКОЙ ЧТЕНИЯ; разрешит всем сеансам операцию ЧТЕНИЯ и не позволит вносить какие-либо изменения в данные для любого сеанса. ТАБЛИЦА БЛОКИРОВКИ имя таблицы WRITE; Блокирует таблицу, и это позволит выполнять чтение или изменение данных для выпущенного сеанса, но не для других сеансов. Спасибо ......