Oracle для профессионалов Том Кайт торгово-издательский дом DiaSoft


 (round((dbms_utility.get_time-l_start)/100, 2) ||



Download 0,99 Mb.
Pdf ko'rish
bet51/93
Sana16.03.2022
Hajmi0,99 Mb.
#495509
1   ...   47   48   49   50   51   52   53   54   ...   93
Bog'liq
tom kait oracle dlia professionalov[0001-0091]

17 (round((dbms_utility.get_time-l_start)/100, 2) ||
18 ' seconds...');
19 end;
20 /
14.86 seconds...
PL/SQL procedure successfully completed.
В этом коде используется динамический SQL для запроса одной строки из таблицы
ALL_OBJECTS
. Он генерирует 1000 уникальных запросов со значениями 1, 2, 3, ... и
так далее, жестко заданными в конструкции WHERE. На моем ноутбуке с процессором
Pentium 300 Мгц для его выполнения потребовалось около 15 секунд (скорость выпол-
нения на разных машинах может быть различной).
Теперь сделаем то же самое с использованием связываемых переменных:
tkyte@TKYTE816> declare
2 type rc is ref cursor;
3 l_rc rc;
4 l_dummy all_objects.object_name%type;
5 l_start number default dbms_utility.get_time;
6 begin
7 for i in 1 . . 1000
49


50
Глава 1
8 loop
9 open l_rc for
10 'select object_name
11 from all_objects
12 «here object_id = :x'
13 using i;
14 fetch l_rc into l_dummy;
15 close l_re;
16
 end
loop;
17 dbms_output.put_line
18 (round((dbms_utility.get_time-l_start)/100, 2) ||
19 ' seconds...');
20 end;
21 /
1.27 seconds.. .
PL/SQL procedure successfully completed.
В этом коде использован точно такой же алгоритм. Единственное изменение — вме-
сто жестко заданных значений 1, 2, 3... и так далее в запросе используется связываемая
переменная. Результаты весьма впечатляющи. Код не только выполняется намного бы-
стрее
 (разбор
запросов требовал больше времени, чем их реальное
 выполнение!),
но и
позволяет большему количеству пользователей одновременно работать с системой.
Выполнение операторов SQL без связываемых переменных во многом подобно пе-
рекомпиляции подпрограммы перед каждым вызовом. Представьте себе передачу кли-
ентам такого исходного кода на языке Java, что перед любым вызовом метода класса им
необходимо вызывать компилятор Java, компилировать класс и выбрасывать сгенери-
рованный байт-код сразу после выполнения метода. При необходимости вызова того же
метода в дальнейшем им пришлось бы делать то же самое — компилировать, запускать
и выбрасывать байт-код. В своих приложениях никто так не поступает — не делайте этого
и в СУБД.
В главе 10 мы рассмотрим способы определить, используются ли связываемые пере-
менные, различные варианты их применения, поддерживаемую СУБД возможность ав-
томатической подстановки связываемых переменных и т.д. Мы также рассмотрим
особый случай, когда использование связываемых переменных нежелательно.
Часто, как и в рассматриваемом проекте, — переписывание существующего кода так,
чтобы использовались связываемые переменные, является единственно возможным вы-
ходом. Получаемый в результате код работает на несколько порядков быстрее и во много
раз увеличивается количество поддерживаемых системой одновременно работающих
пользователей. Для этого, однако, требуется много времени и усилий. Дело не в том,
что использовать связываемые переменные сложно или при этом часто делают ошибки, —
проблема в том, что с самого начала этого не делали, и поэтому пришлось пересмотреть
и изменить практически
 весь
код. Разработчикам не пришлось бы платить такую цену,
если бы они с первого дня понимали принципиальную важность использования в при-
ложении связываемых переменных.


Разработка успешных приложений для Oracle

Download 0,99 Mb.

Do'stlaringiz bilan baham:
1   ...   47   48   49   50   51   52   53   54   ...   93




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish