Когато създавате приложение, можете да подобрите производителността по редица начини, включително:
Натоварването на мрежата може да е значително при приложения, които изпращат и получават много команди и отговори. SQL блоковете и запомнените процедури са два начина за намаляване на това натоварване.
Ако приложение изпраща редица SQL оператори, без да изисква програмна логика, може да използвате SQL блок. Ако е необходима логика на програма в рамките на група от SQL оператори, можете да използвате запомнени процедури.
Всички изпълними оператори освен следните могат да се поставят в рамките на SQL блок с оператори:
CALL FETCH CLOSE OPEN SQL блок Connect Prepare Release Describe Rollback Disconnect Set connection execute immediate
За допълнителни подробности се обърнете към SQL Справочник.
Информация за използването на SQL блокове в приложение потърсете в НЕ АТОМАРЕН SQL блок. Информация за използването на SQL блокове с помагалото за импортиране потърсете в Използване на средствата за импорт и експорт.
Запомнените процедури помагат да се намали мрежовия трафик, като поставят програмна логика на сървъра. В DB2 преди версия 5.0 запомнените процедури можеха да връщат само параметри и приложението трябваше да генерира отделна команда за записване на промените. В резултат се получават два мрежови хода. В DB2 версии 5.0 и следващи можете автоматично да запишете промените, когато излизате от процедурата. Освен това можете да върнете резултатен набор, който намалява логиката на приложението от страната на клиента.
Информация за използване на запомнени процедури потърсете в Запомнени процедури.
Групирането на свързаните заявки към база данни (SQL операторите) в една заявка към базата данни може да намали броя на заявките и отговорите, прехвърляни през мрежата. Например ако се групират следните оператори:
SELECT COL1, COL2, COL5, COL6 FROM TABLEA WHERE ROW_ID=1 SELECT COL1, COL2, COL5, COL6 FROM TABLEA WHERE ROW_ID=2
в
SELECT COL1, COL2, COL5, COL6 FROM TABLEA WHERE ROW_ID=1 OR ROW_ID=2
ще се изпратят по-малко заявки през мрежата.
Освен това можете да използвате ключови думи като IN и BETWEEN, за да намалите броя на редовете, които се връщат. Допълнително можете да използвате ключовите думи WHERE, IN и BETWEEN в операторите UPDATE и DELETE.
Можете да използвате предикатна логика, за да заявите само редовете и колоните, които са необходими. По този начин се намалява мрежовия трафик и натоварването на процесора при обмена на данни.
Например, не използвайте запитването:
SELECT * FROM TABLEA
ако на практика се е необходим само първия ред от TABLEA с ROW_ID=1 или ако са необходими само колона 1 или колона 2.
Трябва да създадете блокове данни, ако очаквате голямо количество данни от сървъра. Чрез създаването на блокове се подобрява използването на мрежовата ширина на лентата и се намалява натоварването на процесора както на хоста или AS/400 сървъра на базата данни, така и на DB2 Connect работната станция.
При изпращането и получаването на всяко съобщение има фиксирано натоварване на процесора и мрежата, независимо от размера на съобщението. Блоковете с данни намаляват броя на съобщенията, необходими за трансфер на едно и също количество данни.
Чрез създаването на блокове първият ред от данните от запитването няма да се достави на приложението, докато не се получи първия блок. Създаването на блокове увеличава времето за извличане на първия ред, но подобрява времето за извличане на следващите редове.
Друго съображение е количеството памет, което се използва. Използваната памет обикновено се увеличава, когато е активирана функцията за създаване на блокове. За пълна дискусия относно създаването на блокове, когато се използва SNA свързване, се обърнете към DRDA Ръководство за свързваемост.
В DB2 Connect можете да контролирате количеството данни, които се обменят в рамките на всеки блок, както е описано в RQRIOBLK.
За да активирате създаването на блокове, използвайте опцията BLOCKING на командата prep или bind. (За повече информация вижте Командата BIND.) Създаването на блокове е включено, ако:
Дефиниции на неопределен указател, само за четене и указател, който може да се обновява, потърсете в Ръководство за разработка на приложения.
Забележка: | Когато се използва динамичен SQL, указателят винаги е неопределен. |
Обновяващите SELECT изрази (с оператори UPDATE/DELETE WHERE CURRENT OF) не могат да работят с блокове, така че ги използвайте, само когато е абсолютно необходимо.
Обновяващ SELECT осигурява, че редът не е променен между времето, когато се изпълни SELECT и се генерира UPDATE/DELETE. Ако това ниво на конкурентност не е важно за вашето приложение, алтернативата е да се използва DELETE или UPDATE с критерии за търсене, базирани на стойностите, върнати от не-обновяващ SELECT.
При SELECT само за четене определете FOR FETCH ONLY (освен под VM и VSE, където не се поддържа).
Използвайте статичен SQL, колкото се може повече. Избягва подготовка на изпълними SQL раздели и неопределени курсори. Ако не може да се избегне използването на динамичен SQL, можете да направите следното, за да минимизирате мрежовия трафик и да увеличите производителността:
Ако SQLDA приложението не е достатъчно голямо, за да съхрани върнатия SQLDA, програмата трябва да генерира друга команда DESCRIBE с достатъчно голям SQLDA, за да съхрани отново резултата. Това би увеличило мрежовия трафик.
Не използвайте последователност PREPARE и DESCRIBE. Използването на оператори PREPARE.....INTO осигурява по-добра производителност.
Като цяло използването на Процесор за обработка на команди е по-бавно отколкото използването на динамичен SQL в програмата, защото Процесор за обработка на команди трябва да анализира входа, преди да предаде SQL заявката към базата данни. Освен това Процесор за обработка на команди форматира данните при получаването им, което може да не е необходимо за вашето приложение.
SQL операторите в интерпретивен език (като REXX) са значително по-бавни, отколкото същите оператори в компилиран език (като C).
Има два типа оператори CONNECT, наречени тип 1 и тип 2. При тип 2 свързването към базата данни поставя предишната връзка в пасивно състояние и не я прекъсва. Ако по-късно превключите към пасивната връзка, ще избегнете необходимостта от зареждане на библиотеки и настройката на вътрешните структури данни. Поради тази причина като се използва тип 2 свързване може да се увеличи производителността за приложения, които осъществяват достъп до повече от една база данни. Допълнителна информация за свързване тип 2 потърсете в Ръководство за администриране и SQL Справочник.