Скорость обработки запросов на SQL серверах

Разделы Программирование, Базы данных
Тип

Диплом и связанное с ним

Формат Microsoft Word
Язык Украинский
Загрузить архив:
Файл: 014-0016.zip (14kb [zip], Скачиваний: 52) скачать

МІНІСТЕРСТВООСВІТИ  УКРАЇНИ

КИЇВСЬКИЙУНІВЕРСІТЕТ  ІМЕНІТАРАСАШЕВЧЕНКА

Факультеткібернетики

Кафедратеоретичної  кібернетики

ВИПУСКНАКВАЛІФІКАЦІЙНАРОБОТА

БАКЛАВРА

                        Натему  :      Швидкістьобробки  запитів

                                                        наSQL-серверах

                                                                  Виконавець:студент4  курсу

                                                                   ДимаПавлоКостянтинович

                                       Науковийкерівник :ассистент  Коваль Ю.В.

Випускна  кваліфікаційнароботабакалавра

Рекомендована  дозахистувДЕК

Протокол№ 10, від“25”травня  2000 р.

           Зав.кафедри                       проф. БеловЮ.А

                                             м Київ   -  2000

                                           ЗМІСТ

1.Вступ………..………………………………………………………….2  

2.Швидкістьроботи  SQLсервера…………………………………….5

2.1 Технологія DAO…….………………………………………………6

2.2 ТехнологіяODBC…..………………………………………………6

2.3JSCRIPT……………………………………………………………..7

3. Результати  тестування..…………………………………………….17

Висновок………………………………………………………………..21

Списоквикористаної  літератури…………………………………….22

Частина1 :  ВСТУП

         Усвіті   сучасних  інформаційнихтехнологійособливо  виділяє-тьсявсесвітнямережа  Internet. Опорнимелементом  вціймережі  єсерверабаз  данних.Самена  серверізберігаєтьсяінформація  доякоїможуть  отриматидоступкористувачі.  Прироботікористувача  з базоюданнихвInternet,вінпосилає  запитдо базиданнихю  цейзапитсформовано  заправиламимовиSQL (StructuredQueryLanguage) – моваструктурованихзапитів.

Вмережах  використовуютьсятакі SQL–сервера  якOracle,MicrosoftSQLServer,Sybase,dbase,  Informix,Progressтаінші. ЯкприкладSQL – серверавізьмемо MicrosoftSQLServer7.0 .

     СистемаMS  SQLServer -  цебагаторівневасистема  обмінуданнимивід  клієнтадосервера,  дозволяєстворюватиі  підтримуватибазиданних.

    Навідіну  від бази  даннихорієнтованихна  великікомп”ютерита  міні-комп”ютери,досерверної базиданних  користувачіотримуютьдоступ  зісвоїхкомп”ютерів,  анез  допомогоютерміналів.При  цьомумеханізмироботи  SQL-серверадопомагаєрозв”язувати  проблеми,щовиникають  урезультатізвернень  добазиданних  багатьохкомп”ютерів,кожен  зякихможе  незалежнозвертатисьдо  різнихчастин базиданних,  щозберігаєтьсяна  сервері.

   Зв”язоксистеми  клієнт/серверз  комп”ютерами-клієнтами  забезпечу-єтьсячереззасоби  передачіданнихі  базовоїопераційноїсистеми.  Дляцьогосистема клієнт/серверMSSQLServer7.0використовує   вбудованікомпонентиОСWindowsNT.

   СервернаСУБД   MSSQLServer 7.0добавляє  домережевихкомпонент  окреміелементисервіса,  такіякOLE-DB  відповідаєзазв”язок  таупровадженняоб”єктів  базданихіODBC- відкритийінтерфейсбаз  даних.Цікомпоненти  забезпечуютьтіснийзв”язок  необхідногопрограмногозабезпечення.

   SQLServer 7.0має  багатоінструментів,призначених  длярозробкизовнішнього  інтерфейсубазиданих.  Окрім  мовиSQLдля  зберігання,вибіркиданних  можнавикоритовуватидодатки [приложения]з  графічнимінтерфейсом   користувача  GUI.  Цедужеспрощує  розробкубазданих,  таблицьізв”язків  міжними.Зручно  використовувати SQLServer   разом  зпрограмамидля  роботивInternet.

   Центральнимкомпонентомсистеми  SQLServer   єреляційнабаза  данихтаїї  структура. Вреляційнійбазі  данихінформаціяпредставляєтьсяв  виглядірядківта  стовбців.Рядкине  впорядковані,крімвипадку,  колидлятаблиці  створюєтьсякластернийіндекс.  Самаструктураоператорів  запитів,здопомогою  якихпроходятьвиборка  данихзрядків таблиці, незалежить  відтого впорядкованірядки чи  ні.       

Частина2  :ШВИДКІСТЬРОБОТИ  SQLSERVER 7.0

Впроцесі  роззвитку SQLServer  прирозробціклієнтських  додатківвикористовувалосьдекілька  підходів.Ядромсистеми  завждибувпроцессор  обробкизапитів, якийпрацював  насервері.Запити  писалисьнамові SQLвводились  іопрацьовувалисьчерез  утілітитипуQuery  Analyzer.

Принаписанні  програмнихдодатківдля  взаємодіїз SQLServerчастішеза  усевикористовують :

1 DB-Library

2 ODBCіDAO

DB-Libraryявляє  собоюспецифічнийдля SQLServerінтерфейсприкладних  програм .Вінє  меншзручнийніж ODBC, дляпереносу  програмногододаткувіншусерверну  системуалез  точкизорупрацездатностівін  реалізовуєсамийшвидкий  доступдоінформації.

Це  забезпечуєтьсянетільки  тим,щовін  надаєоптимізованийінтерфейс  API,  алевикористовуєв  програмахособистумову  системиSQLServer. ODBC(як  іSQL-OLE )  надаютьтакийже  рівеньсервісуале  створюютьдодатковийрівень  абстракціїміждодатком  ітапроцессором   запитів SQL  Server .

ВDB-Libнепідтримується   зв”язок  таблицьабоавтоматичного  оновленнязначень.Це  можнарозглядатияк  позитивоскількигарантується  повнийконтрольнад  взаємодієюпрограмногододатку  зсерверомі  оптимізацієюзв”язків.Додатково  програмістудодаєтьсяповний  контрольнадвиявденням  іобробкоюпомилок,  пов”язанихзтранзакціями.

      2.1  ТЕХНОЛОГІЯ    DAO

(DataAccessObject – об”єкти  доступудоданних)приззначенадлявикоритання  об”єктів,методів, властивотей,значно  полегшшуютьроботупрограмного  додаткузбазою  даних.Дляобміну  інформацієюзSQLсерверомв  об”єктахDAOвикоритову-ютьсярівні  дотупуJet і ODBC, однавониутворюють  щеодинрівень  абстракціїміждодатками  івикликамифункцій  ODBC,  яківикористовуютьсяпри  обробцізапитів.

ТехнологіяDAO  дляроботиз  базамиданих,таблицями,  видамипередбачаєвикоритання  коллекційоб”єктів.Наприклад  дляствореннянової  таблицілегшевикликати  методAddвідповідногооб”єкта,  міжвикористовуватистандартний  підхідтехнології ODBC.

Прироботіз  базоюданихможна  використатистандартнийпідхід  длядоступудомайжебудь-якого  сховищаданих,що  підтриимуєтьсязасобоми ODBC.

   Але  требавідмітити,що  технологіяDAO  поступововитісняєтьсябільш  прогресивноютехнологієюADO(ActiveX  DataObject – об”єктиданх ActiveX) .

     2.2   ТЕХНОЛОГІЯ ODBC

   Зметою  можливоговстановленнязв”язку  з   різнимиСУБД  фірмоюMicrosoftбуларозроблена  технологіяODBC .Вона  забезпечуєствореннядодаткового  рівняабстракціїміж  програмнимдодаткомі  СУБД.Данийрівень  дозволяєстворитиодну  командуSelectівикористовуватиїї  длявиборкиданих  збудь-якихпідтримуємих  типівбазданих,  враховуючитівипадки,  колиСУБДвзагалі  непідтримуємовуSQL.

   Служби  ODBC  являютьсобоюокремий  рівеньдоступудо  файлівбазданих.  ODBC  беренасебе  відповідальністьзаотриманнявід  до-датківзапитівна  вибіркуінформаціїі  переведенняїхна  мову,щовикористовує  ядробазаданих,  дляобробкизапиту.  Гарнимприкладомвикористання ODBCтехнологіїє  СУБДAccessфірмиMicrosoft.Головнарізниця  між ODBC  іBD-Lib  полягаєутому,  що ODBC  вимагаєпобудовиі  передачійомулише  стандартнихSQL  команд,аBD-Lib    вимагаєособливогосинтаксису  припобудовіу  буферікоманд,що  напрравляютьсябезпосередньоу  сервернесередовище.

Головним  недоліком ODBC є  необхідністьвтрансляції  запитів.Проведенняцієї  додатковоїроботивідповідно  відображаєтьсянашвидкості  доступудоданих.  Прироботі з ODBC  можнаотриматисуттєвий   виграшушвидкості  обробкиданих,якщовсистемі  клі-єнт/серверсаме  насерверісистеми  SQLServerбуде  оброблятисьзапит, ане  наклієнтськомукомп”ютері.  Такожприрісту  швидкостіроботи ODBCдає  використаннявстроєннихпроцедур.

    2.3JSCRIPT

   Тепер  перейдемодопроцесів,  щопов”язаніз  вимірюваннямшвидкостісистеми  SQLServer 7.0 .  Уданнійроботі  прпонуєтьсянаписанняпрограмного  додаткунавстроєнному  shell OSWindowsNT-JavaScript .Сампрограмнийдодаток  цепрограма  написанадляінтерпритуюча  мова.Файлз  розширенням   . jsбудевиконавчим  для OS  Windows  NT.  Спочатку  напишемо Script  дляствореннябази  даних:

// ADO Flags

var adLockOptimistic = 3;

var adOpenStatic = 3;

varSQL_DataBase = "DSN=OTSt;UID=sa;PWD=;DATABASE=OTSt"

//varSQL_DataBase = "DSN=OTStt;UID=;PWD="

var oConn;    

var oRs;                    

           function db_Connect(){

                       // Create ADO Connection Object.Use IISSDK OBDC Souce with

                       // default sa account and no password

           oConn = new ActiveXObject("ADODB.Connection");

                       oConn.Open(SQL_DataBase);

                       oConn.CommandTimeout=600;

           }

           function db_Record(SQL){

                       var oRs;

                       // Create ADO Recordset Component, and associate it with ADO              

                          connection

                       oRs = new ActiveXObject("ADODB.Recordset");

                       oRs.ActiveConnection = oConn;     

                       // Get empty recordset

                       oRs.Source = SQL;

                       oRs.CursorType = adOpenStatic;                            // use a cursor                 

                                                                                          other than Forward Only

                       oRs.LockType = adLockOptimistic;                        // use a locktype

                                                                                               permitting insertions

                       oRs.Open();

                       return oRs;

           }

           function db_Close(){

                       oConn.Close();

           }

           function db_Requery(Rec,SQL){

                       Rec.Close();

                       Rec.Source = SQL;

                       Rec.Open();

           }

db_Connect();

try {

           oRs=db_Record("CREATE TABLE dbo.DBTEST ( String char (30) NULL, Number int NOT NULL DEFAULT (0), Random int NOT NULL DEFAULT (0))");

} catch (e) {

}

oRs=db_Record("SELECT * FROM DBTEST WHERE 0=1");

for(i=0;i<100000;i++){

           oRs.Addnew();

           oRs("String").value="User"+i;

           oRs("Number").value=i;

           oRs("Random").value=Math.round(100*Math.random());

           oRs.Update();

           if(i%10000==0)

                       WScript.echo("Now in base present "+i+" records");

}

WScript.echo("Completed");

База  данихбудемати  вид :

String

Number

Random

User1

1

34

User2

2

12

User3

3

75

. . . .

. . . .

. . . .

Унаведеному  Script  функція Connectвідповідаєза  регістраціювSQLServer  іутвореннябази  данихDBTest .

DSN – ім”я  зв”язку,визначаєтьсяпри  утворенніджереладанихODBC.

    UID – ідентифікаторкористувача,використовуєтьсяпри  регістраціїнасервері,  уSQLServerідентифікаторкористувача  завждимаєпочинатись  з“ sа ” .

    PWD – або“ password ”кодове  словодоступу ,необхідний  длярегістраціїна  сервері.Вданому  випадкуневикористовуємо.

   Функція Recordпроводитьзапис  увсірядки базиданихDBTest створені  значення , у  стовбчикRandom – створені  генераторомвипадковихчисел  значеннявід0  до99 .

     Кількістьрядків  утаблицібуде  10 000,створеннязаймає  3,5хвилин.Стовбчик   Numberбудеключем.

    Напишемо  щеодин Script , для  тестуванняшвидкостіроботи  SQLServer.Щоб  визначетичас відповідіна  запитякумога  точнішебудемопосилати  насерверне  одинзапит , адекілька  десятківоднаковихзапитів,  обрахувавшисереднійчас  відповідіотримаємоточний   часобробкизапиту  ізнаходженнясервером  результуючоїмножиниелементів. Алетреба  враховуватитакийвипадок  - якщодляпідвищення  точностіпослатидекілька  сотеньоднаковихзапитів, то  SQLServerпочнехешування  таблицідляоптимізації  своєїроботи

ірезультати  роботибудутьне  точні,оскількипри  звичайномузапиті хешуваннятаблиці  неробиться.

// ADO Flags

var adLockOptimistic = 3;

var adOpenStatic = 3;

varSQL_DataBase = "DSN=OTSt;UID=sa;PWD=;DATABASE=OTSt"

//varSQL_DataBase = "DSN=OTStt;UID=;PWD="

var oConn;    

var oRs;                    

function db_Connect(){

           // Create ADO Connection Object.Use IISSDK OBDC Souce with

           // default sa account and no password

           oConn = new ActiveXObject("ADODB.Connection");

           oConn.Open(SQL_DataBase);

           oConn.CommandTimeout=600;

}

function db_Record(SQL){

           var oRs;

           // Create ADO Recordset Component, and associate it with ADO connection

           oRs = new ActiveXObject("ADODB.Recordset");

           oRs.ActiveConnection = oConn;                 

           // Get empty recordset

           oRs.Source = SQL;

           oRs.CursorType = adOpenStatic;                            // use a cursor other than Forward Only

           oRs.LockType = adLockOptimistic;                        // use a locktype permitting insertions

           oRs.Open();

           return oRs;

}

function db_Close(){

           oConn.Close();

}

function db_Requery(Rec,SQL){

           Rec.Close();

           Rec.Source = SQL;

           Rec.Open();

}

function Test(TestNumber, Query, CountTests){

           Max=0;

           Min=1000000;

           Delta=0;

           Ave=0;

          

           WScript.echo("Query #"+TestNumber);

           for(i=0;i

                       StartTime=new Date();

                       db_Requery(oRs,Query);

                       EndTime=new Date();

                       Delta=(EndTime-StartTime);

                       WScript.echo("Probe #"+i+" Result="+Delta+" ms");

                       Ave=(Ave*i+Delta)/(i+1);

           }

           WScript.echo(" Result="+Ave+" ms");

}

db_Connect();

oRs=db_Record("SELECT *FROM DBTEST WHERE 1=0");

Test(1, " SELECT   *    FROM   DBTEST " , 50 );

Test(2 , " SELECT*   FROM  DBTESTORDERBY  String",50);

Test( 3 ," SELECT *FROM DBTEST ORDERBY   Number ",50);

Test (4,"SELECT Sum(Number) FROM DBTEST GROUP   BYString",50);

Test(5 , " SELECT   Sum(Number)   FROM  DBTEST   GROUP   BY

             Random",50);

Test( 6 , " SELECT*   FROM   DBTESTWHERE Number = 99999 " , 50);

Test(7 ," SELECT *FROMDBTEST   WHEREString = 'User99999'",50);

Test(8,"SELECT * FROM    DBTEST   WHERE   Number   in (SELECT

Number   FROM   DBTEST ) " , 50 );

Test(9 ,"SELECT * FROM DBTEST WHERE Number in (SELECT

Number   FROM   DBTESTWHEREString < ' User50000 ' ) ",50);

Test(10 , " SELECT   *   FROM   DBTEST   WHERENumber  in(SELECT

        Number FROM DBTEST WHERE String='User50000')", 50);

Test(11, "   SELECT   *   FROM   DBTESTWHERE Number in (SELECT

                 Number FROM DBTEST WHERE String > ' User10000 ' ) " , 50);

Test(12 , "INSERT     INTO     DBTEST (String,Number)

              VALUES('User30',30) " , 50 );

Test(13 , "DELETE    FROM     DBTEST (String,Number)    

               VALUES('User30',30) " , 50);

Test(14 ," DELETE     FROM     DBTEST " , 1);

db_Close()

Головна  функціяTestу  циклі50разів  посилаєзапитна  сервер, обраховуєрізницюміж  початкомобробкизапиту  ічасомзакінчення  обробки :     

                   StartTime=new Date();

                    «обробказапиту  »    

                   EndTime=new Date();

                    Delta=(EndTime-  StartTime);

Уостанньомуscriptмаємо  14тестівдля  тестуваннярізнихможли-востей  SQLServer.Розглянемо  їхдокладніше .

    Тести  12і 13характеризують    швидкістьвставкиі  вилученняелементівубазіданих.

    Тест  14знищуєусю  таблицю.

Запити  навибіркуінформації  :

    Тест  1:" SELECT   *    FROM   DBTEST " -виділитивсі  елементи ;

    Тест  2: " SELECT*   FROM  DBTESTORDERBY  String"-відсортуватиусі  елементизазначенням  устовбчику“String”;

    Тест  3:" SELECT *FROM DBTEST ORDERBY  Number"- відсортува-ти   усіелементиза  значеннямустовбчику  “ Number ”;

    Тест  4:"SELECT Sum(Number) FROM DBTEST GROUP   BY  String"

- скластиусі  елементистовбчика“ Number ” за  значеннямустовбчи-ку  “String”;

     Тест  5:" SELECT   Sum(Number)   FROM  DBTEST   GROUP   BY

Random" - скластиусі  елементистовбчика“ Number ” за  значеннямустовбчику  “ Random ”;

     Тест  6:" SELECT*   FROM   DBTESTWHERE Number = 99999 " – визначитиусіелементи, у  яких значенняустовбчику  “ Number ” = 99999;

    Тест  7:" SELECT *FROMDBTEST   WHEREString = 'User99999'" - визначитиусіелементи, у  якихзначенняу стовбчику “String “ = 'User99999' ;

    Тест  8 : "SELECT * FROM    DBTEST   WHERE   Number   in (SELECT Number   FROM   DBTEST ) "- визначити  усіелементиз  множиничисел ;

    Тест9 :"SELECT * FROM DBTEST WHERE Number in (SELECT

Number   FROM   DBTESTWHEREString < ' User50000 ' ) " - визначитиусіелементи  змножиниелементів, у  якихзначенняу стовбчику “String “ < ' User50000 ';

    Тест  10 : " SELECT   *   FROM   DBTEST   WHERENumber  in(SELECTNumber FROM DBTEST WHERE String='User50000')" - визначити  усіелементиз  множиниелементів, уяких  значенняу стовбчику “String “ = ' User50000';

    Тест  11 : " SELECT   *   FROM   DBTESTWHERE Number in (SELECT Number FROM DBTEST WHERE String > ' User10000 ' ) "- визначитиусі  елементизмножини  елементів, уякихзначення  у стовбчику “String “ > ' User10000' ;

       

Частина 3 :   РЕЗУЛЬТАТИТЕСТУВАННЯ

Для  наведенняприкладууніверсальностіпри  використаннінаписан-ногоscriptпри  вимірюваннішвидкодії,виміряємо  швидкістьобробкизапитів  усистеміSQLServer  7.0таMicrosoftAccess 97.

   Щоб scriptсприймавсясистемою Accessбез  супереченьтребазмінити  параметри ідентифікації :

   //var  SQL_DataBase = "DSN=OTSt;UID=sa;PWD=;DATABASE=OTSt"

     var  SQL_DataBase = "DSN=OTStt;UID=;PWD="

   Отриманірезультатиприведемо  утаблиці:

Тест№

SQL Server7.0

Access 97

1

2,673

1,81

2

7,781

5,603

3

7,356

5,211

4

8,239

7,54

5

0,903

0,494

6

0,345

0,231

7

0,390

0,287

8

11,207

7,11

9

3,843

2,53

10

0,655

0,507

11

11,469

9,816

12

0,3

0,285

13

0,31

0,22

14

55,62

34,324

Яквидно  зрезультатівпроведенного  вимірюваннязапитина  локальнійбазіданихAccess опрацьовуютьсязначношвидше  ніжнасервері.

Аналізуючизапити  2і3,  4і5,  6і7  бачимо, що   обробкаелементів  різнихтипіву  однаковихзапитахмає  різнийчас.

    Такнаприклад сортувати  усіхелементівза  значеннямустовбчику  “String”  опрацьовуєтьсяповільнішеніж у  стовбчику" Number"-причинау  розміруелементівцих  типів.

   Тежсаме  приобробцізапитів   4і5  присумуванніелементів  стовбчика   " Number"   заелементами  стовбчиків “ String ”  і” Random”.

Стовбчик “String ” зберігає  значеннятипуStringі стовбчик”Random”

зберігаєзначення  типуInteger,елементитипів  маютьрізнийрозмір  іобробляютьсяз  різноюшвидкістю.

Розглядаючи  швидкістьобробкимножин  елментівзазначимо,що  чиибільшеелементів  обробляєсерверубазіданих  тимбільшечасу  нацейде.  Такнаприкладзапит  10напошук  у базіданихелемента  типу String  - 'User50000'ззаймаєнабагато  меншечасуніж  пошук   елементів,що  менше   'User50000'.Таких елементівприблизно  50 тисячіїх  пошукзаймаєдосить  довгийчас.Пошук  елементів, щобільше 'User10000'займаєу  серверащебільший  час.

Запити  12,13визначаютьчас  занесеннядобази  новогорядкаі  вилученнярядказ  базиданих.

Проводячи  наведенідослідженняза  роботоюсерверами  отримуємоповнухарактеристикуйого  роботи.

   Використаємо  наведенівищепрограмні  додаткиі   проведемо  виміринаіншихSQL-серверах.  Порівняємошвидкостіроботи  SQLServer7.0іOracle 8:

Тест№

SQL Server7.0

Oracle 8

1

2,673

2,71

2

7,781

8,06

3

7,356

8,09

4

8,239

8,75

5

0,903

1,041

6

0,345

0,4

7

0,390

0,432

8

11,207

11,917

9

3,843

4,05

10

0,655

0,78

11

11,469

12,021

12

0,3

0,295

13

0,31

0,291

14

55,62

43,134

    Як  виднозрезультатів SQL Server  7.0працюєшвидше  за Oracle 8приобробці  вибірок,апри  вставціівилученні  елементіву Oracle   краші  результати.Цеможнапояснити  різноюбудовоюядер  обробкизапитів.

   Проведемо  такіжзаміриідля SQL сервера   Informix.

Тест№

SQL Server7.0

Informix

1

2,673

2,11

2

7,781

6,932

3

7,356

7,138

4

8,239

7,934

5

0,903

0,856

6

0,345

0,456

7

0,390

0,471

8

11,207

13,04

9

3,843

4,41

10

0,655

0,748

11

11,469

12,814

12

0,3

0,315

13

0,31

0,31

14

55,62

51,48

   По  результамвидно,щоSQL Server7.0  працюєповільнішеза Informix  приобробціпростих  запитів,апри  пошуку іпорівнянніелементів працює швидше.Назапитах  повставціі  вилученніелементіву Informix іSQLServer 7.0майжеоднакові результати.

    Таким  чиноммидосягли  метиданноїроботи -  побудувалипрограмнідодатки,  якимизмогливизначити  характеристикипрацездатностірізних  сервернихбазданих.

              ВИСНОВОК

    В   результатіпроведенноїроботи  булорозглянуторізні  фактори,щовпливають  нашвидкістьроботи  системиSQLServer  7.0.

   Булинаписані  двіпрограми,що  даютьзмогувимірювати  швид-кістьобробкизапитів  багаторівневоюсерверноюсистемою MicrosoftSQL  Server7.0ітимсамим  даютьможливість   досліджуватиефективність  настройкипараметрівсистеми,  даютьзмогуоцінити  оптимальністьпобудовибази  даних,оптимальністьвикористання  індексів, правил,обмежень,ефективність  роботизтранзакціями.   

   Булирозглянуті  сильнііслабкі  бокитехнологійроботи  зпрограмнимидодатками  -DB-LibraryтаODBC   зDAO.

   Як  прикладроботипрограмних  додатківотриманідані  прошвидкодіюсистем  базданих SQL Server7.0  таMicrosoftAccess 97.

Порівняні  результатизастосування програмнихдодатків  усистемах SQL-серверів  такихякOracleта  Informixзшвидкістю  роботиMicrosoftSQL Server  7.0.

   Використовуючинаписані  script-и  програмістиірозробники  систембазданих  типуклієнт/серверможуть  визначатихарактеристикистворених  нимисистемз  ціллюаналізуі  удосконалення.

            

    СПИСОК  ВИКОРИСТАНОЇЛІТЕРАТУРИ :

1. “Використання Microsoft  SQLServer 7.0”СтефанВінкоп

    вид. Москва 1999 р.

2. “ Teach Yourself Oracle 8 In 21 Days”CaryN. Prague

3. “ Секреты Access97”Уильям  Амоизд.Диалектика1997р.

4. “ ТехнологіяJava”Джо  Вебервид. “BHV”1996 р.

5. Журнал“PCWorld” № 3,7,8за97 р., № 1,9  за98 р.

6. www.techrepublic.com