MySQL. Библиотека профессионала - Аткинсон Л
..pdf242 Глава Инструкции SQL
SQL_SAFE_MODE |
Когда эта опция включена, все запросы на обновление и удаление, в которых не указан первичный ключ, отменяются. Подобный режим предназначен для новичков, которые способны ненароком ввести запрос, затрагивающий все записи таблицы.
SQL_SELECT_LIMIT |
Эта опция ограничивает число записей, возвращаемых запросами на выборку. Предложение LIMIT инструкцииSELECT переопределяетданнуюустановку. По умол чанию может возвращаться неограниченное число записей.
число_позиций
Эта опция заставляет подчиненный сервер пропустить указанное число позиций в журнальном файле главного сервера. Перед тем как устанавливать данное значение, необходимо отключить репликацию.
TIMESTAMP |
Эта опция задает текущее время сеанса, что бывает полезно при восстановлении измененных записей.
SET TRANSACTION
Инструкция SET TRANSACTION задает уровень изоляции транзакции. Ее формат таков:
SET [GLOBAL | SESSION] TRANSACTION LEVEL
[READ UNCOMMITTED COMMITTED | REPEATABLE READ |
По умолчанию инструкция затрагивает только ближайшую транзакцию. Если ука зан флаг GLOBAL, изменения коснутся всех транзакций, выполняемых на сервере. Флаг обозначает все транзакции данного сеанса.
Уровень изоляции определяет, к каким данным, с которыми работает транзакция, смогут получить доступ другие потоки. В режиме READ UNCOMMITTED транзакция мо жет читать данные из таблиц напрямую, не проверяя, окончательные это данные или нет. Другим потокам разрешено менять содержимое этих таблиц, не дожидаясь за вершения транзакции. Таким образом, в ходе транзакции можно выполнить один и тот же запрос дважды подряд и получить разные результаты.
Врежиме READ COMMITTED транзакция работает только с окончательными дан ными. Изменения, вносимые другими потоками, не отразятся в запросе на выборку до тех пор, пока не будут зафиксированы. Тем не менее по прежнему существует воз можность того, что один и тот же запрос, выполненный дважды в ходе одной тран закции, выдаст разные результаты, так как между первым и вторым запросом другой поток может успеть выполнить собственную транзакцию.
Врежиме REPEATABLE READ любая строка, читаемая или обновляемая в ходе транзакции, не может быть изменена другим потоком. Транзакция блокирует все строки, к которым обращается. Таким образом, значения, извлекаемые инструкцией
Полныйсписок инструкций 243
никогда не меняются в течение транзакции. Но возможно появление строк призраков, т.е. во время транзакции можно увидеть строку, добавленную другой тран закцией.
В режиме SERIALIZABLE транзакции принудительно выполняютсядругзадругом, последовательно. Несколько потоков могут начинать транзакции одновременно, но если окажется, что две транзакциипытаются обновить одну и ту же строку, одна из них будет объявлена проигравшей в тупиковой ситуации и отменена. Это наивысший уровень целостности данных.
SHOW COLUMNS
Инструкция |
SHOW |
COLUMNS возвращает описание столбцов таблицы. Она имеет |
|
следующий синтаксис: |
|
||
SHOW |
[FULL] |
|
I |
FROM |
таблица |
[FROM |
[LIKE шаблон] |
Флаг FULL задает выдачу для каждого столбца информации о привилегиях. Пред ложение LIKE позволяет отобрать из таблицы только те столбцы, имена которых со ответствуют указанному шаблону. Синтаксис строки шаблона был описан в главе 10, "Типы данных, переменные и выражения". Аналогичные результаты выдает инструк ция DESCRIBE.
SHOW COLUMNS FROM team;
SHOW CREATE TABLE
Инструкция SHOW CREATE TABLE возвращает описание запроса, который необ ходим для создания указанной таблицы. Синтаксис инструкции таков:
SHOW CREATE TABLE таблица
В листинге 13.46 показаны результаты, выдаваемые в случае таблицы Обратите внимание на то, что имена столбцов заключены в обратные кавычки. установитьопцию SQL_QUOTE_SHOW_CREATE,кавычки небудутотображаться,ноони необходимы, когда есть имена столбцов с пробелами.
Полный список инструкций 245
Имя пользователя можно дополнить именем узла, как показано в листинге 13.48.
SHOW INDEX
Инструкция SHOW INDEX возвращает информацию об индексах таблицы. Ее син таксис таков:
SHOW |
FROM таблица
Результатом этого запроса будет таблица, столбцы которой перечислены в табл. 13.4. Каждый компонент составного индекса будет представлен в таблице результатов дельной строкой.
Столбец |
Описание |
Table |
Имятаблицы |
|
Указание на то, допускаются ли дублирующиеся значения |
Key_name |
Имя индекса |
Seq_in_index |
Порядковый номер для компонентов составного индекса |
|
Индексируемый столбец |
Collation |
Порядок сортировки |
Cardinality |
Среднестатистическое количество уникальных элементов |
|
индекса |
|
Число индексируемых символов в столбце с частичной |
|
индексацией |
Packed |
Признак того, является ли индекс сжатым |
Comment |
Указание на то, имеет ли индекс тип |
246 Глава Инструкции SQL
Инструкция SHOW LOGS возвращает информацию о журнальных файлах:
SHOW [MASTER] LOGS
Таблица результатов содержит три столбца. В столбце отображается путь к файлу, а в столбце Туре — тип файла, например Значение столбца Status деляет статус файла: FREE или IN USE.
Инструкция SHOW PROCESSLIST выдает список соединений с текущей базой данных:
SHOW [FULL] PROCESSLIST
Если текущий пользователь имеет привилегию PROCESS, будет показан список всех соединений, поддерживаемых на сервере. В противном случае учитываются лишь соединения текущего пользователя. Флаг FULL говорит о том, что для каждого соединения необходимо показать полный текст запроса, выполняемого в настоящий момент. По умолчанию отображаются только 100 первых символов запроса.
SHOWSTATUS
Инструкция SHOW STATUS возвращает статистическую информацию о сервере. Ее синтаксис таков:
SHOW [MASTER I SLAVE] STATUS [LIKE шаблон]
Флаги MASTER и SLAVE указывают на то, что информация выдается соответствен но о главном и подчиненном серверах. В предложении LIKE задается шаблон имен выводимых переменных. Список переменных приведен в табл. 13.5.
Переменная |
Описание |
Aborted_clients |
Количество неправильно закрытых соединений |
|
Количество неудавшихся попыток подключиться |
|
к серверу |
Bytes_received |
Количество байтов, полученных от клиентов |
Bytes_sent |
Количество байтов, посланных клиентам |
Connections |
Количество попыток подключиться к серверу |
|
Число временных таблиц, созданных на диске |
|
Число временных файлов, созданных демоном |
Полный список инструкций 247
Переменная |
Описание |
|
|
|
Число временных |
созданных в памяти |
|
Delayed_errors |
Количество инструкций INSERT |
вы |
|
|
звавшихкакую тоошибку |
|
|
Delayed_insert_threads |
Число потоков, в которых выполняются инструк |
||
|
ции INSERT DELAYED |
|
|
Delayed_writes |
Количество строк, записанных инструкциями |
||
|
INSERT DELAYED |
|
|
|
Число инструкций FLUSH |
|
|
Handler_delete |
Количество удаленных строк |
|
|
|
Количество операций чтения первого элемента |
||
|
любого индекса |
|
|
Handler_read_key |
Количество операций чтения индексируемых |
||
|
строк |
|
|
Handler_read_next |
Количество операций чтения следующего эле |
||
|
мента индекса |
|
|
Handler_read_prev |
Количество операций чтения предыдущего эле |
||
|
мента индекса |
|
|
Handler_read_rnd |
Количество операций чтения фиксированного |
||
|
элементаиндекса |
|
|
Handler_read_rnd_next |
Количество операций чтения следующей записи |
||
|
из файла данных |
|
|
Handler_update |
Число запросов на обновление |
|
|
|
Число запросов на добавление |
|
|
|
Количество используемых блоков в индексном |
||
|
буфере |
|
|
|
Количество операций чтения индексных блоков с |
||
|
диска |
|
|
|
Количество запросов на чтение индексных бло |
||
|
ков из буфера |
|
|
Key_writes |
Количество операций записи индексных блоков |
||
|
надиск |
|
|
Количество запросов на запись индексных блоков в буфер
248 Глава Инструкции SQL
Переменная |
Описание |
|
|
Max_used_connections |
Максимальное число одновременных соединений |
||
|
Количество строк, которые должны быть записа |
||
|
ны инструкциями INSERT |
DELAYED |
|
lushed_key_blocks |
Количество измененных индексных блоков, ожи |
||
|
дающих записи на диск |
|
|
Opened_tables |
Число открывавшихся таблиц |
|
|
Open_files |
Число открытых файлов |
|
|
Open_streams |
Число открытых потоков |
|
|
Open_tables |
Число открытых таблиц |
|
|
Questions |
Общее число запросов |
|
|
ull_j |
Число операций объединения, в которых не ис |
||
|
пользовалсяиндекс |
|
|
oin |
Число операций объединения, в которыхприхо |
||
|
дилось отбирать диапазон строк второй таблицы |
||
Select_range |
Число операций объединения, в которых |
|
|
|
дилось отбирать диапазоны строк первой таблицы |
||
Select_range_check |
Число операций объединения, в которых не ис |
||
|
пользовался индекс, Но после каждой строки |
||
|
пришлось проверять правильность ключа |
||
Select_scan |
Число операций объединения, в которых при |
||
|
шлось сканировать первую таблицу |
|
|
Slave_open_temp_tables |
Число временных таблиц, открытых на подчи |
||
|
ненном сервере |
|
|
Slave_running |
Статус подчиненного сервера |
|
|
|
Число потоков, которые слишком долго запуска |
||
|
лись |
|
|
Slow_queries |
Число запросов, которые слишком Долго выпол |
||
|
нялись |
|
|
|
Число операций слияния, которые пришлось вы |
||
|
полнить при сортировке |
|
|
Sort_range |
Число операций |
в |
при |
|
шлось создавать диапазоны строк |
|
|
Sort_rows |
Число отсортированных строк |
|
Полный список инструкций 249
|
Описание |
|
Число операций сортировки, в которых при |
|
шлось сканировать таблицу |
|
Число табличных блокировок, которые были по |
|
ставлены немедленно |
Table_locks_waited |
Число табличных блокировок, которые не были |
|
поставлены немедленно |
Threads_cached |
Число потоков в кэш буфере |
Threads_connected |
Текущее число соединений |
Threads_created |
Количество созданных потоков |
Threads_running |
Количество выполняющихся потоков |
Uptime |
Количество секунд, прошедших с момента запуска |
|
сервера |
SHOW TABLE STATUS
Инструкция SHOW TABLE STATUS выводит статусную информацию о таблицах. Ее синтаксис таков:
SHOW TABLE STATUS [FROM |
[LIKE шаблон] |
В предложении LIKE задается шаблон имен таблиц. Список столбцов возвращае мой таблицы приведен в табл. 13.6. Описание каждой таблицы базы данных занимает одну строку.
Столбец |
Описание |
|
Следующее значение |
Avg_row_length |
Средняя длина записи |
Check_time |
Время последнего выполнения инструкции CHECK TABLE |
Comment |
Комментарии, указанные при создании таблицы |
Create_options |
Параметры создания таблицы |
|
Время создания таблицы |
Data_f |
Число выделенных, но неиспользуемых байтов |
Data_length |
Длина файла данных |
250 Глава Инструкции SQL
|
Описание |
Index_length |
Длина индексного файла |
Max_data_length |
Максимальная длина файла данных |
Name |
Имя таблицы |
Rows |
Число записей в таблице |
|
Формат хранения записей: сжатый, динамический или |
|
фиксированный |
Туре |
Тип таблицы |
|
Время последнего обновления таблицы |
SHOW TABLES
Инструкция SHOW TABLES возвращает список таблиц, существующих в указанной базе данных:
SHOW [OPEN] TABLES [FROM |
[LIKE шаблон] |
По умолчанию отображаются все таблицы текущей базы данных. Флаг OPEN огра ничивает список только открытыми таблицами. В этом случае во втором столбце ука зывается, сколько раз таблица и использовалась (листинг 13.49).
6 rows in set (0.00 sec)
SHOW VARIABLES
Инструкция SHOW VARIABLES возвращает список серверных переменных:
SHOW VARIABLES [LIKE шаблон]
Подробное описание серверных переменных приведено в табл. 13.7.
Полный списокинструкций 251
|
Описание |
|
|
ansi_mode |
Будет равна ON, если включен режим ANSI |
||
|
(описан в главе 14, "Утилиты командной |
||
|
строки"при |
|
fleMOHamysqld) |
back_log |
Максимальное |
число |
необслуженных |
|
запросов на подключение |
||
|
Базовый каталог (по умолчанию— |
||
|
local) |
|
|
|
Размер кэша для таблиц типа BDB |
||
|
Каталог для таблиц типа BDB (по умол |
||
bdb_logdir |
Каталог журнальных файлов для таблиц |
||
|
типаBDB |
|
|
er_size |
Размер буфера журнальной регистрации |
||
|
для таблиц типа BDB |
|
|
|
Максимальное |
число |
блокировок для |
|
таблиц типа BDB |
|
|
bdb_shared_data |
Будет равна ON, если для таблиц типа |
||
|
BDB включен режим совместного ис |
||
|
пользования данных |
|
|
|
Временный каталог для таблиц типа BDB |
||
bdb_version |
Версия СУБД Berkeley DB |
||
binlog_cache_size |
Размер буфера для двоичного журнала |
||
|
транзакций |
|
|
|
Набор символов по умолчанию |
||
|
Поддерживаемые наборы символов |
||
concurrent_insert |
Будет равна ON, если для таблиц типа |
||
|
разрешены |
одновременные |
|
|
операции вставки |
|
|
connect_timeout |
Время простоя, по истечении которого |
||
|
запрос на подключение будет отменен |
Каталог табличных данных (по умолча нию— /usr/local/var)