07.Описание запросов и транзакций (1034731), страница 2
Текст из файла (страница 2)
1. В поле Операция можно указать
код операции, связанной с запросом,
признаки обработки запроса в КИСП.
Коды операции перечислены в следующей таблице.
Таблица 7.1.
Код операции | Примечания |
I. | Заглавная латинская буква I с точкой. Операция включения новых записей в базу данных (INSERT). Этот код можно указывать только для одной какой-либо таблицы запроса, в которую включаются записи (INTO). Остальные таблицы запроса связаны с необязательным подзапросом SELECT оператора INSERT языка SQL. |
U. | Заглавная латинская буква U с точкой. Операция обновления атрибутов записей базы данных (UPDATE). Этот код можно указывать только для одной какой-либо таблицы запроса, в которой обновляются записи. Остальные таблицы запроса связаны с возможными подзапросами SELECT в условии поиска WHERE оператора UPDATE языка SQL. |
D. | Заглавная латинская буква D с точкой. Операция удаления записей базы данных (DELETE). Этот код можно указывать только для одной какой-либо таблицы запроса, из которой удаляются записи (FROM). Остальные таблицы запроса связаны с возможными подзапросами SELECT в условии поиска WHERE оператора DELETE языка SQL. |
Если не указана ни одна из перечисленных выше операций, то считается, что выполняется операция поиска записей в базе данных (SELECT). Условно эту операцию будем в дальнейшем обозначать как S. |
Признаки обработки запроса в КИСП, указанные в поле Операция, действуют на все атрибуты таблицы запроса. Они перечислены в следующей таблице.
Таблица 7.2
Признак обработки | Примечания |
W.[(число)] | Заглавная латинская буква W с точкой. Означает, что из узла вместе с вызовом той транзакции, куда входит данный запрос, передаются значения для всех атрибутов таблицы запроса. Далее эти входные данные передаются из транзакции серверу базы данных, где выполняется запрос. Если за признаком W. не указано число в круглых скобках, то к объёму входных данных для этого вызова добавляется составляющая, равная длине записи таблицы. Иначе добавляется произведение длины записи на указанное число. Этот объём влияет на время передачи и загрузку сетей, задействованных при выполнении запроса. Этот признак может использоваться в любых таблицах запросов INSERT, UPDATE, DELETE и SELECT. Следует подчеркнуть, что если атрибуты отмечены признаком W. в одном запросе, то не имеет смысла отмечать эти же атрибуты как входные в других запросах той же транзакции (ведь исходные данные являются общими для всей транзакции). |
P.[(число)] | Заглавная латинская буква P с точкой. Назначение этого признака зависит от кода операции:
|
F.[(число)] | Заглавная латинская буква F с точкой. Означает, что все атрибуты найденных записей читаются из базы данных, но не передаются обратно пользователю. То есть эти данные используются внутри транзакции и/или её запросов. Если за признаком F. не указано число в круглых скобках, то к объёму читаемых данных добавляется составляющая, равная произведению длины записи таблицы на количество найденных записей. Иначе добавляется произведение длины записи на количество найденных записей и на число, указанное в круглых скобках после F.. Этот объём влияет на время передачи и загрузку сетей, задействованных при выполнении запроса. Этот признак может использоваться в любых таблицах запросов INSERT, UPDATE, DELETE и SELECT, кроме тех таблиц, где закодированы операции I., U., D.. |
Признаки отделяются друг от друга и от возможного кода операции пробелом или запятой.
2. В поле Условие поиска можно указать признаки обработки конкретного атрибута выбранной таблицы запроса. Следует отметить, что признак обработки конкретного атрибута имеет смысл задавать в том случае, если одноимённый признак не указан в поле Операция. Признаки перечислены в следующей таблице.
Таблица 7.3
Признак обработки | Примечания |
W.[(число)] | Заглавная латинская буква W с точкой. Означает, что из узла вместе с вызовом той транзакции, куда входит данный запрос, передаётся значение для атрибута таблицы запроса. Далее это входное данное передаётся из транзакции серверу базы данных, где выполняется запрос. Если за признаком W. не указано число в круглых скобках, то к объёму входных данных для этого вызова добавляется составляющая, равная длине атрибута таблицы. Иначе добавляется произведение длины атрибута на указанное число. Этот объём влияет на время передачи и загрузку сетей, задействованных при выполнении запроса. Этот признак может использоваться в любых таблицах запросов INSERT, UPDATE, DELETE и SELECT. Следует подчеркнуть, что если атрибут отмечен признаком W. в одном запросе, то не имеет смысла отмечать этот же атрибут как входной в других запросах той же транзакции (ведь исходные данные являются общими для всей транзакции). |
P.[(число)] | Заглавная латинская буква P с точкой. Назначение этого признака зависит от кода операции:
|
F.[(число)] | Заглавная латинская буква F с точкой. Означает, что значения атрибута читаются из найденных записей, но не передаются обратно пользователю. То есть эти данные используются внутри транзакции и/или её запросов. Если за признаком F. не указано число в круглых скобках, то к объёму читаемых данных добавляется составляющая, равная произведению длины атрибута таблицы на количество найденных записей. Иначе добавляется произведение длины атрибута на количество найденных записей и на число, указанное в круглых скобках после F.. Этот объём влияет на время передачи и загрузку сетей, задействованных при выполнении запроса. Этот признак может использоваться в любых таблицах запросов INSERT, UPDATE, DELETE и SELECT, кроме тех таблиц, где закодированы операции I., U., D.. |
#имя >#имя >=#имя <#имя <=#имя !=#имя | Имя с первым знаком # определяет переменную связи таблиц запроса. Перед символом # может быть указана арифметическая операция сравнения: > (больше), >= (не меньше), < (меньше), <= (не больше), != (не равно). Одна и та же переменная связи должна быть определена по крайней мере для двух атрибутов одной или разных таблиц запроса, причём хотя бы для одного атрибута эта переменная должна быть описана без знака операции (отсутствие знака операции означает равенство). Например, в поле Условие поиска какого-либо атрибута определено условие #REL1. Это означает, что значение этого атрибута должно быть равно значению другого атрибута, где указана переменная #REL1. Другой пример. Если для атрибута определено условие >#REL1, то его значение должно быть больше значения другого атрибута, где определена переменная #REL1. В одном поле Условие поиска можно указывать только одну переменную связи. |
Признаки отделяются друг от друга пробелом или запятой. В поле Условие поиска можно указывать и комментарий, указывающий на особенности поиска по соответствующему атрибуту. Важно, чтобы этот комментарий не совпадал ни с одним из перечисленных выше признаков.
Признаки W., P. и F., которые можно указать в полях Операция и Условие поиска, влияют только на объёмы данных, передаваемых между узлами. В табл. 7.4 перечислены признаки, влияющие на объём входных данных (от пользователя до сервера базы данных).
Таблица 7.4.
Признаки, влияющие на объём входных данных.
Узел пользователя узел, где выполняется транзакция | Узел, где выполняется транзакция узел сервера базы данных, связанного с транзакцией | Узел сервера базы данных, связанного с транзакцией узел сервера базы данных, где хранится таблица запроса | |
Все таблицы запросов U., D., S. | W. | W. | W. |
Таблица запроса I.: - где не указана операция I. (таблица подзапроса select), - где указана операция I. | W. W. | W. W. | W. P. (определяет объём данных, включаемых в таблицу) |
В табл. 7.5 перечислены признаки, влияющие на объём выходных данных (от сервера базы данных до пользователя).
Таблица 7.5.
Признаки, влияющие на объём выходных данных.
Узел сервера базы данных, где хранится таблица запроса узел сервера базы данных, связанного с транзакцией | Узел сервера базы данных, связанного с транзакцией узел, где выполняется транзакция | Узел, где выполняется транзакция узел пользователя | |
Все таблицы запросов U., D. | F. | 0 | 0 |
Все таблицы запроса S. | P. или F. | P. или F. | P. |
Таблица запроса I.: - где не указана операция I. (таблица подзапроса select), - где указана операция I. | F. 0 | 0 0 | 0 0 |
Если некоторые узлы совмещены (например, транзакции и сервер базы данных выполняются в одном узле), то соответствующий трафик будет отсутствовать.
3. Если по крайней мере в первом поле строки мультистолбца Нечёткое число для мощности атрибута в запросе (в дальнейшем сокращённо "в поле Мощность") указано непустое значение , то это означает, что данный атрибут входит в условие поиска. В поле Мощность можно указывать число разных значений атрибута, удовлетворяющих элементарному условию (подусловию) поиска по этому атрибуту. Ниже приведены некоторые примеры, помогающие понять правила определения требуемого значения в поле Мощность.
Элементарное условие | Значение в поле "Мощность" |
город='МОСКВА' | 1 |
город IN ('МОСКВА','КУРСК','ОРЁЛ') | 3 |
дата=TO_DATE('01-JAN-98') | 1 |
дата >= TO_DATE('01-JAN-98') AND дата <= TO_DATE('10-JAN-98') | 10 |
номер = 25 | 1 |
номер BETWEEN 25 AND 27 | 3 |
Если чётко определить мощность атрибута в запросе заранее трудно, то её можно задать в виде нечёткого числа. Для этого требуется заполнить все четыре поля (R1, R2, R3, R4) соответствующей строки мультистолбца.