Поиск

Другие операторы администрирования

Синтаксис CACHE INDEX
CACHE INDEX
список_индексов_таблицы [, список_индексов_таблицы] ... IN имя_кэша_ключей
список_индексов_ таблицы:
имя_таблицы [[INDEX] [имя_индекса [, имя_индекса] ...)]
Оператор CACHE INDEX назначает индексам таблиц специальный кэш ключей. Это действительно только для таблиц MyISAM.
Следующий оператор назначает индексам таблиц tl, t2 и t3 ключевой кэш с именем hot_cache:
raysql> CACHE INDEX tl, t2, t3 IN hot_cache;

Синтаксис CACHE INDEX позволяет привязать к кэшу только отдельные индексы таб­лицы. Однако на самом деле текущая реализация привязывает все индексы таблицы к указанному кэшу, поэтому нет особого смысла специфицировать что-то еще, кроме име­ни таблицы.
Кэш ключей, на который ссылается оператор CACHE INDEX, может быть создан уста­новкой его размера в параметре оператора SET либо в настройках параметров сервера. Например:
mysql> SET GLOBAL keycachel.keyJbuffer_size=128*1024;
Параметры кэша ключей доступны как члены структурированной системной пере­менной (см. раздел Структурированные системные переменные).
Кэш ключей должен существовать до привязки индексов к нему:
mysql> CACHE INDEX tl in non_existent_cache;
ERROR 1283 (HY000): Unknown key cache 'non_existent_cache'
По умолчанию индексы таблиц привязываются к главному (по умолчаниию) кэшу ключей, который создается при запуске сервера. Когда кэш ключей разрушается, все назначенные ему индексы опять переназначаются на кэш по умолчанию.
Назначение индексов касается сервера глобально. Если один клиент назначает ин­декс определенному кэшу, этот кэш будет использоваться при выполнении всех запро­сов, независимо от того, какой клиент их инициирует.
CACHE INDEX появился в MySQL 4.1.1.
Синтаксис FLUSH
FLUSH [LOCAL | NO_WRITE_TO_BINLOG] опция_очистки [, опция_очистки] ...
Оператор FLUSH следует применять, когда вы хотите очистить внутренние кэши, кото­рые использует MySQL. Для выполнения FLUSH необходимо иметь привилегию RELOAD. Аргумент опция_очистки может принимать любое из перечисленных ниже значений.

  • HOSTS. Очищает таблицы кэша хостов. Вы должны сбрасывать таблицы хостов, если какой-нибудь из ваших хостов меняет IP-адрес, либо если вы получаете со общение об ошибке наподобие Host ... is blocked (Хост ... заблокирован). Ко гда случается больше, чем max_connect_errors при попытке подключиться к сер веру MySQL с данного хоста, MySQL предполагает, что с хостом что-то не в по рядке и блокирует дальнейшие попытки его подключения. Сброс кэша хостов опять снимает эту блокировку и позволяет продолжить попытки подключения. Вы можете запустить сервер mysqld с опцией -max_connect_errors=999999999, чтобы избежать ошибок подобного рода.
  • DESKEYFILE. Перезагружает DES-ключи из файла, заданного опцией -des-key f ile во время запуска сервера.
  • LOGS. Закрывает и заново открывает все журнальные файлы. Если вы указали имена журнальных файлов изменений или бинарного журнала без расширения, номер в расширении имени будет увеличен на единицу по сравнению с предыду щим файлом. Если же вы укажете имена с расширениями, MySQL просто закроет и откроет файл журнала обновлений или бинарного журнала. В среде Unix это то же самое, что послать сигнал SIGHUP серверу mysqld.
  • PRIVILEGES. Перезагружает в память информацию о привилегиях из таблиц при вилегий базы данных mysql.
  • QUERY CACHE. Выполняет дефрагментацию кэша запросов с целью более эффек тивного использования памяти. В отличие от RESET QUERY CACHE, этот оператор не удаляет никаких запросов из кэша
  • STATUS. Сбрасывает большинство переменных состояния в ноль. Это то, что стоит применять только при отладке запросов. См. раздел Как сообщать об ошибках и проблемах
  • {TABLE | TABLES} [имя таблицы [, имя_таблицы) ...]
  • Когда не названа таблица, закрывает все открытые таблицы и принуждает к закрытию все используемые таблицы. Также очищает кэш запросов. С одним или более именем таблицы сбрасывает только эти таблицы. FLUSH TABLES также уда­ляет все результаты запросов из кэша, как и оператор RESET QUERY CACHE.

    1. TABLES WITH READ LOCK. Закрывает все открытые таблицы и блокирует все табли цы во всех базах данных блокировкой по чтению до тех пор, пока не будет вы полнен UNLOCK TABLES. Это очень удобный способ получить резервную копию, если вы пользуетесь такой файловой системой, как Veritas, которая позволяет де лать снимки по времени.
    2. USER_RESOURCES. Сбрасывает в ноль все пользовательские ресурсы. Это позволяет клиентам, которые достигли лимита по максимальному числу соединений, мак симальному числу запросов или обновлений, продолжить ргботу. См. раздел Синтаксис GRANT и REVOKE

До версии MySQL 4.1.1 операторы FLUSH не записывались в бинарнкый журнал. Начи указано необязаная с MySQL 4.1.1, этот оператор записывается, если только не было ЯВЛЯЮТСЯ FLUSH LOGS, FLUSH MASTER, FLUSH SLAVE И FLUSH TABLES WITHRE READ LOCK, которые не регистрируются в любом случае, поскольку они могут быть причинами проблем при репликации на подчиненный сервер.
Вы можете получить доступ к некоторым из этих операторов с помощью утилиты mysqladrain, используя команды flushhosts, flush-logs, flush-privileges, flush-status или flush-tables.
Взгляните также на оператор RESET, используемый при репликации (см. раздел Синтаксис RESET).

Синтаксис KILL
KILL [CONNECTION | QUERY] идентификатор_потока

Каждое подключение к mysql запускает отдельный поток. Вы можете просмотреть на любой из них с помощью SHOW PROCESSLIST и прервать помощью оператора KILL идентификатор_потока.
Начиная с MySQL 5.0.0, KILL предусматривает необязательные модификаторы CONNECTION И QUERY:

  • KILL CONNECTION - это то же самое, что KILL без модификатор* соединение, ассоциированное с указанным потоком идентификач
  • KILL QUERY прерывает оператор, который в данный момент нении, но оставляет соединение не тронутым.

Если у вас есть привилегия PROCESS, вы можете видеть все потоки сервера. Имея при­вилегию SUPER, вы можете прерывать любой поток и любой оператор. В противном слу­чае вы сможете видеть и прерывать только свои собственные потоки и операторы.
Для просмотра и прерывания потоков также используются mysqladmin processlist и mysqladmin kill.
На заметку!
В настоящее время вы не можете применять KILL с библиотекой встроенного сервера MySQL, так как встроенный сервер запускается внутри потоков приложения хоста; он не создает своих собственных потоков.
Когда вы выполняете KILL, устанавливается специальный флаг прерывания потока. В большинстве случаев может потребоваться некоторое время для реальной остановки выполнения потока, поскольку флаги прерывания проверяются сервером только через определенные интервалы времени.

  • В циклах SELECT, ORDER BY и GROUP BY, флаг проверяется после чтения блока строк. Если флаг прерывания установлен, выполнение оператора прекращается.
  • Во время выполнения ALTER TABLE флаг прерывания проверяется перед чтением блока строк из исходной таблицы. Если флаг установлен, выполнение оператора прекращается и временная таблица удаляется.
  • Во время выполнения UPDATE или DELETE флаг прерывания проверяется после чте ния каждого блока и после каждой обновленной или удаленной строки. Если флаг установлен, выполнение оператора прекращается. Следует отметить, что если не применялись транзакции, изменения не откатываются!
  • GETLOCK() прерывается и возвращает NULL.
  • Поток, обслуживающий INSERT DELAYED, немедленно сбрасывает все строки, ко торые находятся в памяти, и прерывается.
  • Если поток удерживает блокировку таблицы, блокировка немедленно отменяется.
  • Если поток ожидает освобождения дискового пространства, чтобы выполнить за пись, процедура записи прерывается с сообщением об ошибке "переполнение диска".

Синтаксис LOAD INDEX INTO CACHE
LOAD INDEX INTO CACHE
список_индексов_ та блицы [, список_индексов_таблицы] ...
список_индексов_та блицы: имя_ таблицы
[[INDEX] {имя_индекса [, имя_индекса] ...)] [IGNORE LEAVES]
Оператор LOAD INDEX INTO CACHE предварительно загружает индекс таблицы в кэш ключей, с которым он связан явным вызовом оператора CACHE INDEX, либо в кэш ключей по умолчанию в противном случае. LOAD INDEX INTO CACHE применяется только в отно­шении таблиц My ISAM.
Модификатор IGNORE LEAVES загрузку в кэш только блоков нелистовых узлов индексного дерева.

Следующий оператор предварительно загружает узлы (индексныблоки)ин таблиц tl и t2:
mysql> LOAD INDEX INTO CACHE tl, t2 IGNORE LEAVES;


Этот оператор предварительно загружает все индексные блоки tl и Синтаксис LOAD INDEX INTO CACHE позволяет указать, что предвариельно ся в кэш нужно только отдельные индексы таблицы. Однако текущая жает сразу все индексы таблицы в кэш, поэтому нет необходимости что-то кроме имени таблицы.
LOAD INDEX INTO CACHE был добавлен в MySQL 4.1.1.

Синтаксис RESET
RESET опция_сброса [, опция_сброса] ...

Оператор RESET используется для очистки состояния различных Он также выступает как более строгая версия оператора FLUSH (см. раз. Чтобы выполнить RESET, необходимо обладать привилегией RELOAD опция_сброса может быть одной из следующих:

  • MASTER. Удаляет все бинарные журналы, перечисленные в индес щает индексный файл бинарного журнала и создает новый фа£ нала.
  • QUERY CACHE. Удаляет все результаты из кэша запросов.
  • SLAVE. Заставляет подчиненный сервер "забыть" свою позицию нарном журнале главного сервера. Ранее оператор назывался раздел SQL-операторы для управления подчиненными серверами