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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?iльки гарантуСФться повний контроль над взаСФмодiСФю програмного додатку з сервером i оптимiзацiСФю звтАЭязкiв. Додатково програмiсту додаСФться повний контроль над виявденням i обробкою помилок, повтАЭязаних з транзакцiями.

2.1 ТЕХНОЛОГРЖЯ DAO

(Data Access Object обтАЭСФкти доступу до данних) приззначена для викоритання обтАЭСФктiв, методiв, властивотей, значно полегшшують роботу програмного додатку з базою даних. Для обмiну iнформацiСФю з SQL сервером в обтАЭСФктах DAO викоритову-ються рiвнi дотупу Jet i ODBC, одна вони утворюють ще один рiвень абстракцiСЧ мiж додатками i викликами функцiй ODBC, якi використовуються при обробцi запитiв.

Технологiя DAO для роботи з базами даних, таблицями, видами передбачаСФ викоритання коллекцiй обтАЭСФктiв. Наприклад для створення новоСЧ таблицi легше викликати метод Add вiдповiдного обтАЭСФкта, мiж використовувати стандартний пiдхiд технологiСЧ ODBC.

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

Але треба вiдмiтити, що технологiя DAO поступово витiсняСФться бiльш прогресивною технологiСФю ADO(ActiveX Data Object обтАЭСФкти данх ActiveX ) .

2.2 ТЕХНОЛОГРЖЯ ODBC

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

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

Головним недолiком ODBC СФ необхiднiсть в трансляцiСЧ запитiв. Проведення цiСФСЧ додатковоСЧ роботи вiдповiдно вiдображаСФться на швидкостi доступу до даних. При роботi з ODBC можна отримати суттСФвий виграш у швидкостi обробки даних, якщо в системi клi-СФнт/сервер саме на серверi системи SQL Server буде оброблятись запит, а не на клiСФнтському комптАЭютерi. Також прирiст у швидкостi роботи ODBC даСФ використання встроСФнних процедур.

2.3 JSCRIPT

Тепер перейдемо до процесiв, що повтАЭязанi з вимiрюванням швидкостi системи SQL Server 7.0 . У даннiй роботi прпонуСФться написання програмного додатку на встроСФнному shell OS Windows NT - Java Script . Сам програмний додаток це програма написана для iнтерпритуюча мова. Файл з розширенням . js буде виконавчим для OS Windows NT. Спочатку напишемо Script для створення бази даних :

// ADO Flags

var adLockOptimistic = 3;

var adOpenStatic = 3;

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

//var SQL_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(i000==0)

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

}

WScript.echo("Completed");

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

StringNumberRandomUser1134User2212User3375 . . . . . . . . . . . .

У наведеному Script функцiя Connect вiдповiдаСФ за регiстрацiю в SQL Server i утворення бази даних DBTest .

DSN iмтАЭя звтАЭязку, визначаСФться при утвореннi джерела даних ODBC.

UID iдентифiкатор користувача, використовуСФться при регiстрацiСЧ на серверi, у SQL Server iдентифiкатор користувача завжди маСФ починатись з тАЬ sа тАЭ .

PWD або тАЬ password тАЭ кодове слово доступу , необхiдний для регiстрацiСЧ на серверi. В даному випадку не використовуСФмо.

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

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

Напишемо ще один Script , для тестування швидкостi роботи SQL Server . Щоб визначети час вiдповiдi на запит як умога точнiше будем