Дополнительные возможности администрирования

Блокировка таблиц


Синтаксис:

LOCK TABLES tbl_name [AS alias] {READ | [LOW_PRIORITY] WRITE}
[, tbl_name {READ | [LOW_PRIORITY] WRITE} .]
.
UNLOCK TABLES

Таблицы блокируются для использования отдельным потоком. Действие блокировок распространяется до тех пор, пока не произойдет разблокирование командой UNLOCK TABLES или соединение с блокирующим потоком не будет разорвано.

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

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

Каждый поток для выполнения действий без блокировки ждет до тех пор, пока эта блокировка не будет снята или не закончится время, выделенное на эту операцию. В последнем случае произойдет ошибка по timeout.

Блокировки WRITE имеют более высокий приоритет в очереди на блокировку, чем блокировки WRITE, чтобы данные были внесены без задержек. Обойти это условие можно, указав ключевое слово LOW PRIORITY.

Блокировать необходимо все таблицы, которые будут использованы; при этом необходимо использовать те же псевдонимы, которые будут использованы в запросах.

Обычно блокировки используются для внесения очень больших изменений в таблицы, в этом случае блокировки ускоряют работу и для эмуляции транзакций.

Резервное копирование и восстановление таблиц.



Синтаксис:

BACKUP TABLE tbl_name [, tbl_name.] TO '/path/to/backup/directory'

RESTORE TABLE tbl_name [, tbl_name.] FROM '/path/to/backup/directory'

Функция BACKUP копирует минимально необходимые для восстановления файлы таблиц в указанную директорию.

Функция RESTORE восстанавливает таблицы из файлов, предварительно подготовленных функцией BUCKUP.

Перед восстановлением таблиц необходимо удалить старые таблицы, иначе восстановление не будет произведено. Кроме того, восстановление занимает достаточно много времени по сравнениию с резервированием, так как при этом для таблиц формируются индексы.

Оптимизация таблиц


Синтаксис:

OPTIMIZE TABLE tbl_name [, tbl_name2 .]

Оптимизация таблиц используется после большого количества удалений или изменений информации в таблицах. Оптимизация выполняется за счет удаления неиспользуемого места в таблицах и сортировки индексов.

Проверка состояния таблиц


Синтаксис:

CHECK TABLE tbl_name [, tbl_name .] [option [option]]
option = QUICK | FAST | EXTEND | CHANGED
ANALYZE TABLE tbl_name [, tbl_name.]
Проверка данных таблиц на наличие ошибок для таблиц MyISAM и BDB выполняется функцией CHECK TABLE. Если найдена ошибка в таблице данных или индексов, таблица помечается как дефектная и не может быть использована до тех пор, пока не будет восстановлена.

Анализ ключей можно провести с помощью утилиты myisamchc -a, проверку данных таблиц - с помощью myisamchc -m.

Функция ANALYZE TABLE проверяет состояние индексов в таблицах для MyISAM и BDB. На время проверки таблица обычно блокируется "на чтение".

Ремонтирование таблиц


Синтаксис:

REPAIR TABLE tbl_name [, tbl_name.] [QUICK] [EXTENDED]

Производит ремонт и сжатие таблиц.

Очистка КЭШа MySQL


Синтаксис:

FLUSH [HOSTS]
[.LOGS]
[.PRIVILEGES]
[.[TABLE | TABLES] table_name [, table_name.]]
[. TABLES WITH READ LOCK]
[.STATUS]
Очистка КЭШа MySQL сбрасывает всю информацию, находящуюся в КЭШе данных MySQL, на диск. Для выполнения этой операции необходимы привилегии Reload_priv.

Ключевое слово HOST указывает MySQL очистить информацию о клиентских площадках. Применяется при смене клиентского IP-адреса или появлении ошибок связи с сервером.

LOGS закрывает и повторно открывает все журналы. Если определен журнал изменений или binary-журнал без расширения, то номер в расширении имени журнала будет увеличен на 1 относительно предыдущего файла.

PRIVILEGES записывает и заново открывает информацию о привилегиях пользователей. Это делается для вступления в силу изменений, сделанных в политике привилегий.

Использование TABLES без перечисления имен таблиц закрывает и открывает все открытые таблицы. При этом записываются все изменения, внесенные в таблицы. При перечислении имен таблиц будет перезагружена информация только из указанных таблиц.

FLUSH TABLES WITH READ LOCK закрывает все открытые таблицы и блокирует их чтение до тех пор, пока не будет выполнена команда UNLOCK TABLES. БЛОКИРОВАНИЕ базы данных подобным образом позволяет выполнять резервное копирование базы данных.

STATUS обнуляет runtime-переменные сервера.

Отключение потока


Синтаксис:

KILL thread_id

Каждое подключение к MySQL выполняется в отдельном потоке. При необходимости можно определить поток командой SHOW PROCESSLIST и отключить соединение с ним.

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

Просмотр информации о базе данных, таблицах, полях и т.д.

Синтаксис:

SHOW DATABASES [LIKE wild]
or SHOW [OPEN] TABLES [FROM db_name] [LIKE wild]
or SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
or SHOW INDEX FROM tbl_name [FROM db_name]
or SHOW TABLE STATUS [FROM db_name] [LIKE wild]
or SHOW STATUS [LIKE wild]
or SHOW VARIABLES [LIKE wild]
or SHOW LOGS
or SHOW [FULL]
or SHOW GRANTS FOR user
or SHOW CREATE TABLE table_name
or SHOW MASTER STATUS
or SHOW MASTER LOGS
or SHOW SLAVE STATUS
Команда SHOW позволяет получать информацию о базе данных, таблицах, полях и индексах таблиц, а также информацию о состоянии сервера MySQL.

При использовании уточнений LIKE wild, wild является регулярным выражением, в котором могут использоваться символы "%" и "_".

Информация выводится только при наличии у пользователя соответствующих привилегий и прав доступа.

SHOW DATABASES выводит список существующих баз данных на сервере MySQL.

Вывод информации о таблицах и столбцах может происходить с использованием ключевого слова FROM или без него с указанием пути к исследуемому объекту.

mysql> SHOW FIELDS FROM table FROM database;
mysql> SHOW FIELDS FROM database.table;
SHOW TABLES Выводит список существующих таблиц. Ключевое слово OPEN Указывает MySQL выводить только открытые таблицы, данные которых находятся в КЭШе MySQL.

SHOW COLUMNS и его синоним SHOW FIELDS выводят список полей таблиц с описанием типов. Если используется ключевое слово FULL, дополнительно выводится информация о привилегиях текущего пользователя.

SHOW INDEX и его синоним SHOW KEYS возвращают данные о первичных ключах и индексах таблицы. Столбцы результата команды SHOW INDEX Имеют значения, перечисленные в табл.

Результирующие значения для команды SHOW INDEX



Информация о таблице выводится с помощью команды SHOW TABLE STATUS, Список возвращаемых значений которой приведен в следующей табл.

Результирующие значения для команды SHOW TABLE STATUS



Команда SHOW STATUS выводит список runtime-переменных, по которым можно судить о состоянии сервера MySQL.

SHOW VARIABLES выводит значения некоторых системных переменных MySQL. Эту же информацию можно получить, используя утилиту WinMySQLadmin (вкладка variables)

Переменные команды SHOW VARIABLES в утилите WinMySQLadmin



SHOW LOGS выводит информацию о существующих журналах.

SHOW PROCESSLIST выводит информацию о выполняющихся потоках. Для того, чтобы видеть все потоки, пользователю нужно иметь привилегии processlist, иначе он сможет увидеть только свои собственные потоки. Без указания опции FULL Выводятся только первые 100 или меньше символов запроса потока. Прервать выполнение потока можно с помощью функции KILL.

SHOW CREATE TABLE выводит SQL-код, с которым создана таблица.

Установка опций

Синтаксис:

SET [OPTION] SQL_VALUE_OPTION=value.

SET OPTION устанавливает различные опции, которые затрагивают серверную или клиентскую часть. Любая установленная опция остается в силе до конца текущего сеанса или пока не будет изменена.

PASSWORD=PASSWORD('новый_пароль') изменяет пароль пользователя, доступна всем не анонимным пользователям.

PASSWORD FOR user = PASSWORD('новый_пароль') изменяет пароль указанному пользователю. Пользователь указывается как пользова-тель@хост.

SQL_AUTO_IS_NULL = 0 | 1 позволяет выполнить поиск последнего значения AUTO_INCREMENT с помощью конструкций вида SELECT.WHERE auto_increment_column IS NULL. Данная операция введена для поддержки программ, работающих через ODBC, например ACCESS.

AUTOCOMMIT = 0 | 1. Если установлено значение 1, то вносимые изменения будут сделаны сразу.

SQL_BIG_TABLES = 0 | 1. при опции, установленной в 1, временные таблицы создаются не в памяти, а на диске. Это немного медленнее, однако при использовании очень больших запросов в этом случае не генерируется ошибка "Tables is full".

SQL_BIG_SELECTS = 0 | 1. значение 0 позволяет MySQL останавливать запросы, требующие больше времени, чем max_join_size, иначе выполняются все запросы. По умолчанию значение установлено в 1.

SQL_BUFFER_RESULT = 0 | 1. Позволяет MySQL сбрасывать результаты запросов во временные таблицы. Это позволяет быстрее освобождать таблицы от блокировок.

SQL_LOW_PRIORITY_UPDATE = 0 | 1. При установлено значении 1 MySQL повышает приоритет запросов SELECT и LOCK TABLE READ над запросами INSERT, UPDATE, DELETE и LOCK TABLE WRITE.

SQL_SQFE_MODE = 0 | 1. Если установлено значение 1, то при попытке произвести изменение или удаление записей без использования ключей или ограничений с помощью LIMIT запрос выполнен не будет.

SQL_SELECT_LIMIT = value | DEFAULT. Максимальное число записей, возвращаемых запросом SELECT. Если в запросе указано ограничение LIMIT, будет использоваться это ограничение. По умолчанию максимальное число возвращаемых записей не ограничено.

LAST_INSERT_ID = value устанавливает значение, получаемое функцией LAST_INSERT_ID( ).

INSERT_ID = value устанавливает начальное значение полей AUTO_INCREMENT. При добавлении новых данных новые значения AUTO_INCREMENT начнут отсчитываться от этого значения.