MySQL flush tables - Текущая база данных или каждая база данных?

Выполняется ли команда MySQL:

FLUSH TABLES;

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

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

Ответы

Ответ 1

Все базы данных.

Ответ 2

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

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

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

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

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

Ответ 3

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

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