Программирование >>  Программный интерфейс приложений 

1 ... 198 199 200 [ 201 ] 202 203 204 ... 264


+---------------------------------------+

I BENCHMARK(100000, PASSWORD( secret )) -I----------------------------------------+

I 0 I +---------------------------------------+

1 row in set (1.63 sec)

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

Функция BENCHMARK () впервые появилась в MySQL 3.22.15.

bIT COUNT (и). Возвращает число определенных аргументом разрядов, которое обрабатывается как значение типа BIGINT (64-разрядное целое значение).

BIT COUNT(0) 0

BIT C0UNT(1) =>1

BIT C0UNT(2) Ol

BIT C0UNT(7) 03

BIT C0UNT (-1) =>64

DATABASE (). Возвращает строку с именем текущей базы данных или пустую строку, если текущая база данных не задана.

DATABASE () => samp db

DECODE {Str,password). Считывая зашифрованную строку str, созданную ранее посредством вызова функции ENCODE (), расшифровывает ее с помощью строки пароля password и возврашает результат расшифровки.

DECODE (ENCODE ( secret , scramble ) , scramble ) => secret

ENCODE {Str, password). Зашифровывает строку str с помощью строки пароля password и возвращает результат в виде двоичной строки. Строка может быть расшифрована функцией decode (). Поскольку зашифрованный результат является двоичной строкой, для его хранения следует использовать столбец одного из типов blob.

ENCRYPT (.угг); ENCRYPT (5/ r,5fl ). Зашифровывает строку str и возвращает результирующую строку. Это шифрование является односторонним. Необязательный аргумент salt должен представлять собой строку из двух символов. При определенном значении salt зашифрованный результат для str будет одинаковым все время. Если



аргумент salt не задается, идентичные вызовы функции encrypt () приводят к различным результатам.

ENCRYPT ( secret , AB ) АВЗБЗСЫЕЪбЫс

ENCRYPT( secret , AB ) 0 ABS5SGhlEL6bk

ENCRYPT( secret ) zloPSNlSWRwFA

ENCRYPT ( secret ) => 12FjgqDtV0g7Q

Функция ENCRYPT 0 вызывает UNIX-функцию crypto, соответственно от этой функции зависит и результат encrypt (). Во-первых, если функция crypto отсутствует в системе, ENCRYPT () всегда возврашает значение null. Во-вторых, результат функции ENCRYPT о зависит от работы crypto в каждой конкретной системе. Так, например, в некоторых системах crypto шифрует только первые восемь символов строки.

Функция ENCRYPT О впервые появилась в MySQL 3.2L12. Начиная с версии MySQL 3.22.16, аргумент salt может включать больше двух символов.

get: lock (str, timeout). Функция GET LOCK() используется вместе с функцией RELEASE LOCK () ДЛЯ установки и снятия блокировки. Эти две функции можно применять при создании приложений, взаимодействуюших друг с другом по имени блокировки.

Функция GETLOCKO вызывается вместе с именем блокировки, определяемым строкой str, и значением периода, задаваемым аргументом timeout в секундах. Эта функция возврашает значение 1, если блокировка установлена в течении заданного периода, или значение О, если блокировка установлена не была. Возникновение ошибки в процессе работы функции приводит к возврату значения NULL. Значение timeout определяет, сколько времени необходимо ждать до попытки установки блокировки (но не период времени, по достижении которого блокировка снимается). После установки блокировка остается постоянно активизированной до момента разблокировки пользователем.

Например, следуюшая функция устанавливает блокировку с именем Nellie , ожидая 10 секунд: GET LOCK{ Nellie ,10)

Блокировка применима только к строке. Невозможно заблокировать базу данных, таблицу, или какую-либо строку либо столбец в пределах таблицы. Другими словами, блокировка не запретит другому клиенту вносить изменения в таблицы базы данных. Именно поэтому блокировка с помошью функции GET LOCK() является только поверхностной - другие клиенты могут легко определять, установлена ли каким-либо пользователем блокировка.



Клиент, установивший блокировку на имя, не позволяет другим клиентам заблокировать это же имя (или подобные попытки других потоков многопотокового клиента, который поддерживает несколько соединений с сервером.) Предположим, например, что клиент 1 блокирует строку Nellie . Если клиент 2 пытается блокировать эту же строку, она окажется недоступной до тех пор, пока клиент 1 не снимет блокировку или пока не истечет время заданного им периода. В первом случае клиент 2 впоследствии сможет успешно установить блокировку, а в последнем случае его постигнет неудача.

Так как два клиента не могуг блокировать данную строку одновременно, приложения, обрашаюшиеся к данным по именам, могуг использовать состояние блокировки этого имени как индикатор доступности или недоступности строки. Например, можно создать имя блокировки, основанное на значении уникального ключа для строки в таблице, что позволит выполнять совместную ее блокировку.

Блокировка снимается только вызовом функции release LOCK () с указанием имени блокировки:

release lock( Nellie )

Функция release lock () возврашает значение 1, если блокировка снята успешно, или значение О, если блокировка установлена другим соединением (снимаются только собственные блокировки). Если блокировки с заданным именем не существует, функция возвращает значение null.

Разрыв клиентского соединения или повторный вызов функции get lock() приводит к автоматическому снятию блокировки (один клиент в состоянии заблокировать только одну строку в определенный момент времени). В последнем случае старая блокировка снимается до установления новой, даже если имя новой блокировки подобно имени старой.

Функцию getlock (j/r, о) можно также использовать для определения, установлена ли в текущий момент времени блокировка на строку str. (Если эта строка не заблокирована, то вызов данной функции приведет к установке блокировки. В таком случае следует не забывать вызвать функцию release lock ().)

Функция get lock() впервые появилась в MySQL 3.2L7.

last iNSERT lD(); last iNSERT iD (expr). Первая форма этой функции (без аргумента) возврашает значение auto increment, которое было сгенерировано последним во время текущего сеанса работы сервера, или значение О, если такое значение сгенерировано не было. Вторая форма функции last insert id () предназначена для использования в операторе update. Результат ее обрабатывается таким же образом, как и автоматически созданное значение.



1 ... 198 199 200 [ 201 ] 202 203 204 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика