Ръководство за потребителя

Проектиране на приложения

Когато създавате приложение, можете да подобрите производителността по редица начини, включително:

SQL блокове и запомнени процедури

Натоварването на мрежата може да е значително при приложения, които изпращат и получават много команди и отговори. 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, указателят винаги е неопределен.

SQL оператори със създаване на блокове

Обновяващите SELECT изрази (с оператори UPDATE/DELETE WHERE CURRENT OF) не могат да работят с блокове, така че ги използвайте, само когато е абсолютно необходимо.

Обновяващ SELECT осигурява, че редът не е променен между времето, когато се изпълни SELECT и се генерира UPDATE/DELETE. Ако това ниво на конкурентност не е важно за вашето приложение, алтернативата е да се използва DELETE или UPDATE с критерии за търсене, базирани на стойностите, върнати от не-обновяващ SELECT.

При SELECT само за четене определете FOR FETCH ONLY (освен под VM и VSE, където не се поддържа).

Статичен и динамичен SQL

Използвайте статичен SQL, колкото се може повече. Избягва подготовка на изпълними SQL раздели и неопределени курсори. Ако не може да се избегне използването на динамичен SQL, можете да направите следното, за да минимизирате мрежовия трафик и да увеличите производителността:

Други SQL съображения

Като цяло използването на Процесор за обработка на команди е по-бавно отколкото използването на динамичен SQL в програмата, защото Процесор за обработка на команди трябва да анализира входа, преди да предаде SQL заявката към базата данни. Освен това Процесор за обработка на команди форматира данните при получаването им, което може да не е необходимо за вашето приложение.

SQL операторите в интерпретивен език (като REXX) са значително по-бавни, отколкото същите оператори в компилиран език (като C).

Има два типа оператори CONNECT, наречени тип 1 и тип 2. При тип 2 свързването към базата данни поставя предишната връзка в пасивно състояние и не я прекъсва. Ако по-късно превключите към пасивната връзка, ще избегнете необходимостта от зареждане на библиотеки и настройката на вътрешните структури данни. Поради тази причина като се използва тип 2 свързване може да се увеличи производителността за приложения, които осъществяват достъп до повече от една база данни. Допълнителна информация за свързване тип 2 потърсете в Ръководство за администриране и SQL Справочник.


[ Начало на страницата | Предишна страница | Следваща страница ]