Швидкiсть обробки запитiв на SQL-серверах \укр\
Информация - Разное
Другие материалы по предмету Разное
? з транзакцiями.
2.1 ТЕХНОЛОГРЖЯ DAO
(Data Access Object обтАЭСФкти доступу до данних) приззначена для викоритання обтАЭСФктiв, методiв, властивотей, значно полегшшують роботу програмного додатку з базою даних. Для обмiну iнформацiСФю з SQL сервером в обтАЭСФктах DAO викоритову-ються рiвнi дотупу Jet i ODBC, одна вони утворюють ще один рiвень абстракцii мiж додатками i викликами функцiй ODBC, якi використовуються при обробцi запитiв.
Технологiя DAO для роботи з базами даних, таблицями, видами передбачаСФ викоритання коллекцiй обтАЭСФктiв. Наприклад для створення новоi таблицi легше викликати метод Add вiдповiдного обтАЭСФкта, мiж використовувати стандартний пiдхiд технологii 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вня абстракцii мiж програмним додатком i СУБД. Даний рiвень дозволяСФ створити одну команду Select i використовувати ii для виборки даних з будь-яких пiдтримуСФмих типiв баз даних, враховуючи тi випадки, коли СУБД взагалi не пiдтримуСФ мову SQL.
Служби ODBC являють собою окремий рiвень доступу до файлiв баз даних. ODBC бере на себе вiдповiдальнiстьза отримання вiд до-даткiв запитiв на вибiрку iнформацii i переведення iх на мову, що використовуСФ ядро база даних, для обробки запиту. Гарним прикладом використання ODBC технологii СФ СУБД Access фiрми Microsoft. Головна рiзниця мiж ODBC i BD-Lib полягаСФ у тому, що ODBC вимагаСФ побудови i передачi йому лише стандартних SQL команд, а BD-Lib вимагаСФ особливого синтаксису при побудовi у буферi команд, що напрравляються безпосередньо у серверне середовище.
Головним недолiком ODBC СФ необхiднiсть в трансляцii запит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страцii на серверi, у SQL Server iдентифiкатор користувача завжди маСФ починатись з тАЬ sа тАЭ .
PWD або тАЬ password тАЭ кодове слово доступу , необхiдний для регiстрацii на сервер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ше будемо посилати на сервер не один запит , а декiлька десяткiв однакових запитiв, обрахувавши середнiй час вiдповiдi отримаСФмо точний час обробки запиту i знаходження сервером результуючоi множини елементiв. Але треб?/p>