Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основное / Письменные лекции по дисциплине «Базы данных».docx
Скачиваний:
77
Добавлен:
29.11.2021
Размер:
713.33 Кб
Скачать

7.7. Статус таблиц

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. На время проверки таблица обычно блокируется «на чтение».

7.8. Просмотр таблиц, доступных в бд

SHOW TABLES — выводит список существующих таблиц.

7.9. Получение информации о статусе сервера

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

7.10. Получение информации о переменных

В SQL Server имеется более 30 глобальных переменных, не имеющих параметров, которые определяются и поддерживаются системой. Все глобальные переменные имеют префикс в виде двух символов @@. Вы можете извлечь значение любой из них с помощью простого запроса SELECT, как в следующем примере:

SELECT @@СONNECTIONS

Здесь используется глобальная переменная @@CONNECTIONS для извлечения количества подключений к SQL Server со времени запуска программы.

@@ERROR — содержит номер ошибки, возникшей при выполнении последнего оператора T-SQL в текущем соединении. Если ошибка не обнаружена, содержит 0. Значение этой системной переменной переустанавливается после выполнения каждого очередного оператора. Если требуется сохранить содержащееся в ней значение, то это значение следует переносить в локальную переменную сразу же после выполнения оператора, для которого должен быть сохранен код ошибки.

@@IDENTITY — содержит последнее идентификационное значение, вставленное в базу данных в результате выполнения последнего оператора INSERT. Если в последнем операторе INSERT не произошла выработка идентификационного значения, системная переменная @@IDENTITY содержит NULL. Это утверждение остается справедливым, даже если отсутствие идентификационного значения было вызвано аварийным завершением при выполнении оператора. А если с помощью одного оператора осуществляется несколько операций вставки, этой системной переменной присваивается только последнее идентификационное значение.

@@ROWCOUNT — одна из наиболее широко используемых системных переменных. Возвращает информацию о количестве строк, затронутых последним оператором. Обычно применяется для контроля ошибок, отличных от тех, которые относятся к категории ошибок этапа прогона программы. Например, если в программе обнаруживается, что после вызова на выполнение оператора DELETE с конструкцией WHERE количество затронутых строк равно нулю, то можно сделать вывод, что произошло нечто непредвиденное. После этого сообщение об ошибке может быть активизировано вручную.

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

7.11. Получение информации о процессах

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

7.12. Получение информации о привилегиях

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

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

7.13. Структура SQL

7.14. Завершение потока

Команда KILL thread_id

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

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

7.15. Очистка КЭША 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-переменные сервера.