MySQL flush tables - Текущая база данных или каждая база данных? - PullRequest
14 голосов
/ 03 декабря 2008

Имеет ли команда MySQL:

FLUSH TABLES;

сбросить каждую таблицу в текущей базе данных или каждую таблицу на сервере?

Я использую MySQL 5.0 - документация неясна, хотя упоминается, что:

FLUSH TABLES WITH READ LOCK;

сделает это для ВСЕХ баз данных.

Спасибо.

Ответы [ 3 ]

18 голосов
/ 04 декабря 2008

Это все базы данных.

9 голосов
/ 04 декабря 2008

Я пытался найти это, но я также не смог найти авторитетный ответ.

  • Я посмотрел в руководстве, как и вы.
  • Я нашел документацию по внутренним компонентам MySQL на FLUSH TABLES, но в ней ничего не сказано.
  • Я даже прочитал исходный код в mysql_server/sql/sql_base.cc, но не смог быстро найти ответ.

Я предполагаю, что ответ является одной из тех вещей, которые разработчики считают настолько очевидными, что им никогда не нужно это говорить.

Согласно внутреннему документу, кеш таблиц MySQL содержит список самых последних использованных таблиц. Нет никакого упоминания о кешах таблиц, специфичных для базы данных, в MySQL Server, похоже, есть только один кеш таблиц.

FLUSH TABLES описывается как принудительное закрытие всех открытых таблиц (находящихся в кэше таблиц). Не упоминается, что это ограничено одной базой данных, но вы можете указать отдельные таблицы в аргументах FLUSH TABLES. Таким же образом, я предполагаю, что по умолчанию это относится ко всему кешу таблиц и, следовательно, ко всем базам данных с открытыми файлами на MySQL Server.

7 голосов
/ 04 июня 2009

когда вы делаете просто mysql_connect, а затем "показывает таблицы", например, -> mysql_error (): база данных не выбрана

с "таблицами сброса" mysql_error не существует, поэтому я думаю, что ответ каждая база данных

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