СУБД MySQL оснащена специальными функциями, предназначенными для получения информации о самой системе. Они перечислены в табл. 7.10.
Функции DATABASE(), USER() и VERSION() возвращают информацию о выбранной в данный момент времени базе данных, текущем пользователе и версии работающего сервера MySQL соответственно.
Функция CONNECTION_ID() определяет идентификатор соединения клиента с сервером, а функция LAST_INSERT_ID() возвращает значение счетчика, которое автоматически генерируется MySQL при добавлении в поле, объявленном с атрибутом AUTOINCREMENT.
Это очень удобно при обработке связей между несколькими таблицами при необходимости использования идентификатора записи в качестве ключа другой таблицы. Это видно из следующего примера.
Функция BENCHMARK() поможет разработчику произвести оценку рабочих характеристик MySQL. Для этого сервер выполняет определенное выражение, заданное число раз. Эта функция всегда возвращает 0 и отчет о времени, которое необходимо для данного подключения клиента к серверу. На основании этих данных можно сделать определенный вывод о рабочих характеристиках сервера.
В этом примере системе MySQL потребовалось 2,08 секунд для выполнения выражения LOG(RAND() * PI()) 999999 раз. Выполнение этой функции через равномерные или неравномерные интервалы времени позволяет разработчику получить исходные данные для оценки производительности сервера.
СУБД MySQL также имеет три функции, которые предназначены специально для блокировки работы клиентов на прикладном уровне. Функция GET_LOCK() принимает два аргумента - имя блокировки и длительность блокировки в секундах - и пытается заблокировать работу клиента на заданное время. При успешном завершении функция возвращает 1, в противном случае - 0 или NULL.
Функция RELEASE_LOCK() предназначена для выполнения обратной функции, отмены блокировки с указанным временем, при успешном завершении она возвращает 1, при сбое - 0 и в случае ошибки - NULL.
Функция IS_FREE_LOCK() проверяет наличие блокировки с указанным именем и возвращает 1 или 0 - в зависимости от того, является блокировка активизированной или свободной.
В определенный момент времени может быть активизировано не более одной блокировки. Последовательность вызовов функции GET_LOCK() снимает активные блокировки.
Функции GET_LOCK() , RELEASE_LOCK() и IS_FREE_LOCK() упрощают синхронизацию работы с базами данных нескольких клиентов MySQL, согласуя семантику блокировки.
Функция FOUND_ROWS() возвращает общее количество строк, выбранных по последнему запросу SELECT. Она особенно полезна при применении с конструкциями SQL_CALC_FOUND_ROWS и LIMIT, т.к. позволяет контролировать количество выбранных строк в результирующем наборе (с LIMIT), одновременно отображая общее количество выбранных записей (конструкция SQL_CALC_FOUND_ROWS функция FOUND_ROWS() ). Рассмотрим следующий простой пример, подтверждающий вышесказанное.
В этом случае первый запрос из всего результирующего набора выбирает только ограниченный поднабор, состоящий из четырех записей. Однако в этом запросе использовалась конструкция SQL_CALC_FOUND_ROWS. Поэтому MySQL сохраняет общее количество выбранных в результирующем наборе строк, и позволяет вывести это число с помощью функции FOUND_ROWS(). Таким образом, второй запрос позволяет получить полную статистику без дополнительного просмотра таблиц.
И, наконец, специализированная функция MASTER_POS_WAIT() предназначена прежде всего для использования на подчиненном сервере MySQL при обеспечении связи "главный-подчиненный". Функция MASTER_POS_WAIT() принимает три аргумента: имя регистрационного журнала, положение в регистрационном журнале и значение тай-маута. Эта функция блокирует главный сервер во избежание доступа к нему в период восстановления подчиненного сервера до указанного журналом состояния. Использование этой функции обычно рассматривается в контексте репликации, о которой можно больше узнать в главе 17, "Механизм репликации MySQL".
Резюме
Эта глава посвящена различным встроенным функциям реляционной СУБД MySQL. Они разбиты на несколько категорий, и особенности каждой из них показаны в соответствующих примерах.
Как видим, MySQL имеет достаточно широкий набор функций, позволяющий пользователям выполнять операции в диапазоне от простейших (получение текущего времени и даты, выполнение простых математических вычислений и т.д.) до самых сложных (вычисление тригонометрических функций, выполнение арифметических операций над датами и временем, кодирование данных). Во многих примерах также было показано, каким образом эти функции могут помочь перевести обработку с прикладного уровня на уровень базы данных, что иногда позволяет повысить производительность всей системы.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Системные информационные функции
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Функции форматирования | Все о MySQL. Обработка баз данных и таблиц |