КОРПОРАТИВНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ
УДК 681.3
ЭКСПЕРИМЕНТАЛЬНАЯ ОЦЕНКА ПАРАМЕТРОВ ДЛЯ ИМИТАЦИОННОЙ МОДЕЛИ РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ
© 2004 г. А.И. Ведмеденко, Г.А. Черноморов
Введение
На современном этапе развития информационных технологий наиболее эффективными, с точки зрения общей стоимости владения, являются информационные системы (ИС), реализующие распределенную обработку и хранение данных [1]. Продуктивным инструментарием исследования подобных систем являются имитационные модели, с помощью которых на этапе проектирования можно получить оценки таких технических характеристик систем, как масштабируемость, производительность и доступность. В качестве исходных данных, необходимых для реализации имитационных моделей, используются параметры обслуживания транзакций в узлах распределенной системы. Основными альтернативными решениями получения значений этих параметров являются:
- конструирование аналитических соотношений, учитывающих способы организации и доступа к данным, производительность технической платформы, характеристики физической модели базы данных;
- измерение параметров на программно-техническом стенде с последующей их обработкой. Использование программных стендов позволяет получить более точные оценки для анализируемых параметров ИС.
В работах [2, 3] рассмотрены основные вопросы применения методики тестирования TPC-C Benchmark и получены параметры законов распределения. В работе [4] был предложен модифицированный метод оценки времени обработки запросов в среде промышленной СУБД и выявлены основные зависимости времени выполнения простых однотабличных запросов от структуры хранения информации и системы правления данными.
Целью данной работы является обобщение результатов исследования.
Описание тестового стенда
Конфигурация стенда: CP U/RAM/HDD-ADM® AthlonXP™ 1700+/ DDR 2x256/ IBM®DeskStar™ model: IC35L080AVVA07-0 - 82.3GB - данная конфигурация является типичной для сервера СУБД рабочей группы или отдела. СУБД Oracle® 9i™ R2 Developer Edition, полученная по лицензии разработчика, является одной из наиболее высокопроизводительных СУБД промышленного класса. В качестве счетчика времени используется высокоточный тактовый генератор 3,5 МГц, встроенный в вычислительную систему, что позволяет достичь точности измерения времени 10-6 с.
Определение параметров законов распределения времени выполнения запросов узлом распределенной ИС
Для решения указанной задачи необходимо создать систему, имитирующую транзакционную обработку данных на сервере СУБД. За основу разработки была взята методика тестирования информационных систем TPC-C Benchmark. Она разработана советом по транзакционной обработке данных - Transaction Performance Council [5], и зарекомендовала себя как эталонная система тестирования для разработчиков программного и аппаратного обеспечения. TPC-C Benchmark определяет правила измерения производительности программно-аппаратной платформы. Производительность системы исчисляется в количестве обработанных транзакций за интервал времени - этот показатель обозначается как tpmC (transaction per minute TPC-C). В качестве типовой ИС предлагается система обработки заказов на продукцию. Эта система реализует следующие бизнес-функции, выполняемые торговой компанией: оформление нового заказа, оплата заказа, доставка товара, определение статуса заказа и формирование сводки по уровню запасов на складе.
Физическую модель данных описывают девять логически связанных таблиц. Компания состоит из подразделений, количество которых изменяется в пределах от одного до десяти, данные о них представлены в таблице WAREHOUSE. В каждом подразделении имеется один склад, информация о состоянии которого размещена в таблице STOCK. Номенклатура товаров, предлагаемых компанией, хранится в таблице ITEMS. Каждое подразделение имеет от одного до десяти представительств, информация о которых хранится в таблице DISTRICT. Клиенты регистрируются в представительстве фирмы. Заказываемый клиентом товар, в большинстве случаев, доставляется со склада подразделения, в котором он зарегистрирован. Для каждого клиента ведется журнал платежей HISTORY. Информация о вновь оформленных и необработанных заказах клиентов размещается в таблице NEWORDER. Заказ содержит заголовочную часть, помещаемую в таблице ORDERS, и табличную часть - ORDERLINE. Основные характеристики схемы данных приведены в табл. 1.
Запросы, входящие в тест (табл. 2), разделены на 22 группы, и их классификация приведена в табл. 3.
Таблица 1
Количественные характеристики схемы данных стенда_
Имя таблицы Обозначение Количество записей, шт. Размер кортежа, байты Размер таблицы, байты
WAREHOUSE 1 1 90 90
DISTRICT 2 10 48 480
NEWORDER 3 21500 10 215 000
ORDER 4 111000 30 3 330 000
HISTORY 5 113000 48 5 424 000
ITEMS 6 100000 71 7 100 000
CUSTOMER 7 30000 348 10 440 000
STOCK 8 100000 306 30 600 000
ORDERLINE 9 1045000 59 61 655 000
Таблица 2
Содержание запросов реализации теста TPC-C Benchmark
Номер запроса Содержание запроса
Q01 SELECT w_tax FROM WAREHOUSE WHERE w_id = :id
Q02 SELECT d_tax, d_next_o_id FROM DISTRICT WHERE d_w_id = :w_id and d_id = :d_id
Q03 UPDATE DISTRICT SET d_next_o_id = :no WHERE d_id = :d_id and d_w_id = :w_id
Q04 SELECT c_last, c_discount, c_credit FROM CUSTOMER WHERE c_w_id = :w_id and c_d_id = :d_id and c_id = :c_id
Q05 INSERT INTO ORDERS (o id,o d id,o w id,o c id,o entry d,o carrier id,o ol cnt, o all local) VALUES (:id,:d id,:w id,:c id,sysdate,0,:ol cnt, :all local)
Q06 INSERT INTO NEWORDER (no o id,no d id,no w id) VALUES (:o id,:d id,:w id)
Q07 SELECT i _price, i name, i data FROM item WHERE i id=:id
Q08 SELECTs_ytd, s order cnt, s quantity, s dist 01, s dist 02, s dist 03, s dist 04, s dist 05, s dist 06, s dist 07, s dist 08, s dist 09, s dist 10, s data FROM STOCK WHERE s i id = :i id and s w id = :w id
Q09 UPDATESTOCKSETs quantity = :quant, s_ytd = :ytd, s order cnt = :o cnt WHEREs i id = :i id ands w id = :w id
Q10 INSERT INTO ORDERLINE (ol o id,ol d id, ol w id, ol number, ol i id, ol supply w id, ol delivery d, ol quantity, ol amount, ol dist info) VALUES (:o id,:d id,:w id,:number,:i id,:supp w id,null,:quant,:amount,:dist inf)
Q11 SELECTw id, w name, w street 1, w street 2, w city, w state, w zip, w_ytdFROM WAREHOUSE WHEREw id = :w id
Q12 UPDATE WAREHOUSE SETw_ytd = :w _ytd WHERE w _id = :w _id
Q13 SELECT d id, d name, d street 1, d street 2, d city, d state, d zip, d_ytd FROM DISTRICT WHERE d w id = :w id andd id = :d id
Q14 UPDATE DISTRICT SET d_ytd = :d_ytd WHERE d_w_id = :w_id and d_id= :d_id
Q15 SELECT c id, c_first, c middle, c last, c street 1, c street 2, c city, c state, c zip, c_phone, c since, c credit, c credit lim, c discount, c balance, c_ytd_payment, c_payment cnt, c data FROM CUSTOMER WHERE c last=:c last and c w id = :w id and c d id = :d id ORDER BYc first
Q16 SELECT c id, c first, c middle, c last, c street 1, c street 2, c city, c state, c zip, c phone, c since, c credit, c credit lim, c discount, c balance, c _ytd_payment, c_payment cnt, c data FROM CUSTOMER WHERE c id = :c id and c w id = :w id and c d id = :d id
Q17 UPDATE CUSTOMER SET c balance = :c balance, c _ytd_payment = :c_ytd, c_payment cnt =:c_payment cnt, c data = :c data WHERE c id = :c id and c w id = :w id and c d id = :d id
Q18 INSERT INTO HISTORY VALUES(:h c id, :h c d id, :h c w id, :h d id, :h w id, sysdate, :h amount, :h data)
Q19 SELECT c_id, c_balance, c_first, c_last, c_middle FROM CUSTOMER WHERE (c_id=:c_id or c_last LIKE :c last) and c w id = :w id and c d id = :d id
Q20 SELECT c_id, c_balance, c_first, c_last, c_middle FROM CUSTOMER WHERE (c_id=:c_id or c_last LIKE :c last) and c w id = :w id and c d id = :d id
Q21 SELECTMax(o_id), o_entry_d, o_carrier_id FROM ORDERS WHERE o_d_id = :d_id ando_w_id = :w_id and o c id = :c id group by o id,o entry d,o carrier id
Q22 SELECT ol number, ol supply w id, ol quantity, ol amount, ol delivery d FROM ORDERLINE WHERE ol w id = :w id and ol d id = :d id and ol o id = :o id
Q23 SELECT no o id FROM NEWORDER WHERE no w id = :w id and no d id = :d id and no o id in (SELECT Min(no o id) FROM NEWORDER WHERE no w id =:ww id and no d id=:dd id)
Q24 delete FROM NEWORDER WHERE no_w_id=:w_id and no_d_id=:d_id and no_o_id=:o_id
Q25 SELECT o_c_id FROM ORDERS WHERE o_w_id = :w_id and o_d_id = :d_id ando_id = :o_id
Q26 UPDA TE ORDERS SET o_carrier_id = : o_carrier_id WHERE o_id = : o_id and o_w_id = : w_id and o_d_id = : d_id
Q27 UPDATE ORDERLINE SET ol_delivery_d = sysdate WHERE ol_o_id = :o_id andol_w_id = :w_id and ol_d_id = :d_id
Q28 SELECT ol_amount FROM ORDERLINE WHERE ol_w_id = :w_id and ol_d_id = :d_id andol_o_id = :o_id
Q29 UPDATE CUSTOMER SET c balance = c balance + :sum ol amount, c delivery cnt= c delivery cnt+1 WHERE c id=:c id and c d id = :d id and c w id = :w id
Q30 SELECT d_next_o_id FROM DISTRICT WHERE d_id=:d_id and d_w_id=:w_id
Q31 SELECT Count(distinct(s_i_id)) FROM STOCK, ORDERLINE WHERE ol_w_id= :olw_id and ol_d_id= :d_id and ol o id < :o id r and ol o id > :o id l and s w id = :sw id and ol i id = s i id ands quantity < threshold
Таблица 3
Классификация запросов реализации теста TPC-C
T_SIZE A_T SEL_CNT RCOUNT Особенности запроса RSIZE GR TBL N_TR QRY
Использование функции Min() 10 1 3 4 Q23
<=5 1 1 1 Q01
RD - 48 и 90 2 2 1 Q02
2 5 Q30
SMALL >5 1 48 и 90 3 1 2 Q11
2 2 Q13
1 2 Q12
48 и 90 4 2 1 Q03
UPD <=5 1 - 2 2 Q14
10 5 3 4 Q24
3 1 Q06
Использование функции Max() 30 6 4 3 Q21
31 7 4 4 Q25
1 6 1 Q07
<= 5 348 8 7 1 Q04
RD 7 3 Q20
<=19 Сравнение строки с использованием оператора LIKE 348 9 7 3 Q19
MID 1 348 10 7 2 Q16
> 5 <=19 Сравнение строки с использованием оператора «=« 348 11 7 2 Q15
30 12 4 4 Q26
<= 5 1 - 348 13 7 4 Q29
UPD 7 2 Q17
>5 1 30 14 4 1 Q05
48 15 5 2 Q18
<=5 15000 Использование функции Count() 59 и 306 16 9, 8 5 Q31
RD <=15 Использование функции Sum() 59 17 9 4 Q28
BIG - 59 18 9 3 Q22
>=5 1 - 306 19 8 1 Q08
<=5 <=15 - 59 20 9 4 Q27
UPD 1 - 306 21 8 1 Q09
1 - 59 22 9 1 Q10
В табл. 3 приняты следующие обозначения для столбцов: T_SIZE - размер таблицы, возможные варианты значений: SMALL, MID, BIG - малый, средний и большой соответственно; A_T - тип операции, для которого возможны следующие варианты значений: RD, UPD - операции чтения и обновления данных в таблицах; SEL_CNT - количество полей в секции SELECT запроса; RCOUNT - количество строк в результирующем множестве данных запроса; RSIZE -размер кортежа таблиц запроса, в байтах; GR - порядковый номер группы запроса; TBL - порядковый номер базовой таблицы запроса из табл.1; N_TR - порядковый номер транзакции; QRY - номер запроса.
Функциональность разработанного программного комплекса, реализующего методику TPC-C, позволяет: выполнять последовательный запуск серии транзакций заданного типа; задавать время работы программы или количество запусков транзакции; измерять время выполнения запросов с высокой точностью; централизованно хранить параметры запуска и результаты тестирования в базе данных статистики.
Для анализа были выбраны значения, вошедшие в интервал 5 - 95 % исходов (табл. 4). Время выполне-
ния запроса определенного типа представляет случайную величину, закон распределения которой необходимо определить. Результаты анализа данных приведены в табл. 4. Для обозначения параметров статистики приняты следующие сокращения: GR - группа запросов; AVG - среднее значение; Me - медиана; Min, Max - минимальное и максимальное значения; Left, Right - порог 5 и 95 % соответственно; StDev - стандартное отклонение; Var - коэффициент вариации; AvDev - среднее отклонение; Range - размах; Skew -коэффициент асимметрии; Kurt - эксцесс. Результаты измерений времени приведены в миллисекундах.
В качестве критерия достоверности закона распределения применялся критерий х2, в качестве базового закона принималось распределение с минимальным значением данного критерия. Полученные данные описываются такими законами, как нормальный NORM, экспоненциальный EXP и закон распределения Эрланга GAMMA. В табл. 5 для закона распределения Эрланга указаны параметры масштаба и формы, для нормального закона распределения приведены значения математического ожидания и среднеквадратичного отклонения.
Таблица 4
Результаты анализа статистических данных времени выполнения запросов
GR AVG Me Min Max Left Rigth StDev Var AvDev Range Skew Kurt
1 12,71 11,77 10,32 372,97 10,73 13,63 7,09 50,34 1,89 362,65 28,06 1336,49
2 3,13 3,07 3,00 8,62 3,03 3,47 0,31 0,10 0,11 5,62 9,24 108,86
3 3,12 3,06 2,96 24,89 3,01 3,51 0,43 0,19 0,12 21,92 29,52 1330,82
4 1,78 1,72 1,64 85,42 1,69 1,92 1,22 1,48 0,11 83,78 65,15 4467,01
5 1,92 1,78 1,68 95,36 1,73 2,18 1,91 3,64 0,26 93,69 31,67 1292,68
6 3,45 3,24 3,13 268,76 3,18 3,86 3,88 15,02 0,35 265,62 64,49 4394,95
7 3,31 2,91 2,85 54,56 2,87 3,42 2,94 8,62 0,72 51,71 9,17 89,14
8 3,88 2,88 2,80 55,55 2,84 3,73 4,97 24,73 1,87 52,75 5,34 29,23
9 517,37 500,74 277,00 12958,13 478,79 584,60 216,49 46868,78 33,05 12681,13 44,90 2346,20
10 6,92 6,00 5,89 196,94 5,92 7,42 7,70 59,31 1,42 191,05 16,49 305,75
11 495,05 484,31 169,23 8635,71 466,49 551,76 167,37 28013,63 30,38 8466,48 35,66 1479,25
12 1,74 1,67 1,59 76,60 1,63 1,83 1,18 1,40 0,13 75,01 53,44 3251,39
13 2,04 1,69 1,59 202,43 1,65 2,06 3,79 14,38 0,64 200,84 32,48 1582,05
14 2,72 1,91 1,82 179,68 1,87 2,55 5,01 25,09 1,51 177,86 13,16 338,06
15 3,56 2,25 2,15 584,70 2,19 13,40 9,52 90,61 2,35 582,56 46,49 2786,99
16 71,16 64,92 4,38 806,95 42,08 120,82 36,70 1346,90 20,12 802,57 7,37 115,35
17 2,96 2,89 2,82 103,86 2,85 3,30 1,47 2,17 0,13 101,05 64,74 4407,24
18 4,45 3,67 3,57 52,16 3,62 6,51 3,87 15,01 1,38 48,58 6,59 47,74
19 4,69 4,61 4,51 10,78 4,56 5,06 0,39 0,16 0,15 6,27 8,37 88,06
20 10,63 1,89 1,53 209,32 1,67 2,50 13,70 187,72 11,91 207,79 1,76 9,54
21 1,78 1,71 1,62 29,67 1,67 2,02 0,53 0,28 0,12 28,05 32,05 1529,31
22 1,97 1,81 1,74 207,85 1,77 2,13 3,22 10,40 0,30 206,11 53,43 3334,48
Таблица 5
Параметры закона распределения СВ
Номер группы Закон распределения Параметр закона распределения Номер группы Закон распределения Параметр закона распределения Номер группы Закон распределения Параметр закона распределения
1 NORM (11.79;0.57) 9 Gamma 2, 5.59 16 Gamma 2, 2.123
2 Gamma 53, 3.9 10 EXP 3,62 17 Gamma 63, 4.81
3 Gamma 41, 4.09 11 EXP 0,05 18 Gamma 66, 6.6
4 Gamma 146, 7.82 12 Gamma 57, 3.64 19 Gamma 53, 4.67
5 Gamma 52, 4.14 13 Gamma 907, 9.11 20 Gamma 15, 4.61
6 Gamma 11, 1.74 14 Gamma 85, 7.7 21 Gamma 63, 6
7 Gamma 54, 3.57 15 EXP 3,06 22 Gamma 52, 3.7
8 Gamma 87, 6.74
Количественная оценка зависимости времени обработки простых запросов центральным процессором и применяемым аппаратным обеспечением от параметров СУБД и схемы данных
Для решения данной задачи была разработана методика и комплекс программных средств, ориентированных на генерацию данных, проведения экспериментов и анализа результатов. В качестве схемы данных используются типичные справочники и журналы операций. Выделены типы простых таблиц: малые справочники, журналы операций, полные справочники. В табл. 6 указаны параметры таблиц модели данных.
Таблица 6 Параметры физического размещения объектов схемы данных
Наименование объекта Размер строки, байт Размер для служебной информации, байт Тип объекта
TIN 13 8 Таблица
TIC 28 8 Таблица
T2 173 8 Таблица
T3 582 8 Таблица
T4 582 8 Таблица
I_T1C_COL1 20 14 Индекс
I_T\N_COLl 3 14 Индекс
I_T2_OPER_SUM 3 14 Индекс
I_T2_OPINFO 100 14 Индекс
I_T2_OPRTYPE 30 14 Индекс
I_T2_S_ACCOUNT 40 14 Индекс
I_T3_CLADRSS 60 14 Индекс
I_T3_CLCOUNTRY 25 14 Индекс
I_T3_CLINFO 510 14 Индекс
I_T4_AGE_MARIGE 5 14 Индекс
I_T4_AGE_SEX 5 14 Индекс
I T4 DISCOUNT BALANCE 5 14 Индекс
I T4 FNAME LNAME 60 14 Индекс
PK_I_T1C 4 14 Первичный ключ
PK_I_T1N 4 14 Первичный ключ
PK_I_T2 4 14 Первичный ключ
PK_I_T3 4 14 Первичный ключ
PK_I_T4 4 14 Первичный ключ
Для исследования зависимостей были выбраны следующие размеры таблиц в строках - 1000, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 250000, 500000, 750000, 1000000. Такой выбор предопределен следующими причинами. Данные в системе могут кэшироваться на нескольких уровнях: уровень буфера жесткого диска, уровень СУБД - буфер чтения
и на уровне операционной системы. Как индексы, так и таблицы малого размера 1000 - 7500 строк, могут размещаться в буферах жесткого диска и СУБД. Таблицы и индексы среднего размера частично кэширу-ются операционной системой. Таблицы и индексы большого размера 100000 - 1000000 записей не кэши-руются ни СУБД, ни операционной системой.
Простые запросы были классифицированы следующим образом (рис. 1):
Рис. 1. Граф простых запросов
I. Вид атрибута, к которому выполняется обращение: первичный (уникальный) - 1;
не первичный ( не уникальный) - 2.
II. Тип данных атрибута: числовой - 3; символьный - 4.
III. Тип запроса:
поиск уникального (единственного) значения - 5; выбор интервала значений - 6.
IV. Тип условия:
полное совпадение (равенство) - 7; частичное совпадение (символьные данные) - 8.
V. Тип условия поиска:
поиск по шаблону с заданным первым символом - 9; поиск по шаблону с неизвестным первым символом - 10.
Таким образом, целесообразно выделить семь групп запросов:
группа 1 - выборка по единственному значению первичного ключа;
группа 2 - выборка по диапазону значений первичного ключа;
группа 3 - выборка по числовому значению неключевого атрибута;
группа 4 - выборка по символьному атрибуту -точному совпадению;
группа 5 - выборка по значению символьного атрибута в соответствии с шаблоном, в котором известен первый символ;
группа 6 - выборка данных по значению символьного атрибута в соответствии с шаблоном без указания первого символа;
группа 7 - полный просмотр таблиц.
По принципу выполнения выделено две группы запросов. Запросы первого типа характеризуются тем, что результат может быть получен только путем чтения индекса (группа COUNT). Запросы второго типа содержат операцию чтения данных с диска (группа FULL). Секция «SELECT.» запросов типа COUNT выглядит: «SELECT count(*) FROM ...». Для запросов типа FULL - «SELECT * FROM ... ». В табл. 7 приведено содержание запросов.
В табл. 8 приведено соответствие запросов группам. Разделение групп 3 и 4 связано с различной сложностью условий запросов.
Запросы группы 1 выполняют выборку одной записи по значению атрибута. Запросы группы 2 заключаются в выборке заданного интервала значений пер-
вичного ключа, т. е. количество кортежей в результате каждого запроса одинаково вне зависимости от типа таблицы и от количества кортежей. Запросы групп 37 составлены таким образом, чтобы результат их выполнения не превышал 0,1 % от количества строк в таблицах. Анализ времени обработки запросов необходимо разделить на две части: первая часть - это выполнение запроса процессором (TIME_CPU) и вторая часть - прочим аппаратным обеспечением (HW_TIME). СУБД Oracle 9i позволяет пользователю получить информацию о времени обработки запроса процессором. Время обработки запроса прочим аппаратным обеспечением вычисляется как разница между временем выполнения запроса и временем обработки запроса процессором.
Таблица 7
Содержание запросов
Название запроса Содержание запроса
T1N_Q1 SELECT * FROM t1n% WHERE id = :id
T1N_Q2 SELECT * FROM t1n% WHERE :id1 < id and id< :id2
T1N_Q3 SELECT * FROM t1n% WHERE :col1 < coll and coll < :col2
T1N_Q4 SELECT * FROM t1n%
T1C_Q1 SELECT * FROM T1c% WHERE id = :id
T1C_Q2 SELECT * FROM T1c% WHERE :id1 < id and id < :id2
T1C_Q3 SELECT * FROM t1c% WHERE coll LIKE :col1 // слово%
T1C_Q4 SELECT * FROM t1c% WHERE coll LIKE :col1 // %слово%
T1C_Q5 SELECT * FROM t1c%
T2_Q1 SELECT * FROM T2% WHERE id = :id
T2_Q2 SELECT * FROM T2% WHERE :id1 < id and id < :id2
T2_Q3 SELECT * FROM t2% WHERE s_Account = :S_account and d_account = :d_account
T2_Q4 SELECT * FROM t2% WHERE s_Account = :S_account and opinfo LIKE opinfo // слово%
T2_Q5 SELECT * FROM t2% WHERE s_Account = :S_account and opinfo LIKE : opinfo // %ослово%
T2_Q6 SELECT * FROM t2% WHERE :oper_sum1 < oper_sum and oper_sum < :oper_sum2
T2_Q7 SELECT * FROM t2% WHERE opertype LIKE :opertype ands_account = :s_account
T2_Q8 SELECT * FROM t2%
T3_Q1 SELECT * FROM T3% WHERE id = :id
T3_Q2 SELECT * FROM T3% WHERE :id1 < id and id <:id2
T3_Q3 SELECT * FROM t3% WHERE cltype LIKE :cltype andcladrss LIKE :cladrss
T3_Q4 SELECT * FROM t3% WHERE cltype LIKE : cltype and clcountry LIKE : clcountry // слово%
T3_Q5 SELECT * FROM t3% WHERE cltype LIKE : cltype and clcountry LIKE : clcountry // %ослово%
T3_Q6 SELECT * FROM t3% WHERE cltype LIKE cltype andclinfo LIKE :clinfo // %слово%
T3_Q7 SELECT * FROM t3%
T4_Q1 SELECT * FROM T4% WHERE id = :id
T4_Q2 SELECT * FROM T4% WHERE :id1 < id and id <:id2
T4_Q3 SELECT * FROM t4% WHEREfirstname LIKE :Firstname andLastName LIKE :lastname // слово%
T4_Q4 SELECT * FROM t4% WHERE sex LIKE : sex and : age 1 < age and age < : age2 and
T4_Q5 SELECT * FROM t4% WHERE marige LIKE :marige and :age1 < age and age < :age2 and mange LIKE :marige
T4_Q6 SELECT * FROM t4% WHERE discount > discount and :balance1 < balance and balance <: balance2
T4_Q7 SELECT * FROM t4%
Таблица 8 Соответствие запросов группам
Группа Запросы
1 T1N_Q1, T1C_Q1, T2_Q1, T3_Q1, T4_Q1
2 T1N_Q2 , T1C_Q2 , T2_Q2 , T3_Q2 , T4_Q2
3.1 T1N_Q3 , T2_Q6
3.2 T4_Q6
4.1 T2_Q7 , T3_Q3
4.2 T2_Q3
4.3 T4_Q4 , T4_Q5
5 T1C_Q3 , T2_Q4 , T3_Q4 , T3_Q6 , T4_Q3
6 T1C_Q4 , T2_Q5 , T3_Q5
7 T1N_Q4, T1C_Q5, T2_Q8, T3_Q7, T4_Q7
В качестве основных анализируемых факторов выбраны: для запросов типа FULL - количество строк в таблице (RCOUNT), размер кортежа таблицы (ROWSIZE), количество столбцов таблицы (COLCNT), размер таблицы (TBLSIZE); для запросов типа COUNT -количество строк в таблице (RCOUNT), размер строки индекса (IDX_ROW_SIZE), количество индексируемых полей (IDX_C_CNT), размер индекса (IDX_SIZE).
Проведенный анализ коэффициентов простой корреляции между переменными для запросов обоих типов COUNT и FULL (табл. 9) показал сильную корреляцию между некоторыми факторами, и позволил уменьшить число переменных до двух - TBLSIZE и IDX_SIZE.
Анализ графического представления результатов эксперимента по линейной шкале показал наличие линейной формы зависимости для группы, которая описывается уравнением: y = b0 + b1x. Для определения коэффициентов функции был использован инструментарий анализа данных предоставляемый для систем Oracle Datawarehouse. В табл. 10, 11 приведены результаты анализа линейных зависимостей для групп запросов. Значимость параметров функции определяется по параметру R2 - коэффициенту доверия. Значимые его значения позволяют говорить о существовании зависимости между переменными. Результаты измерений времени приведены в 10-4с -стандартная величина измерения времени для параметров сессии с СУБД Oracle 9i, именуемая процессорной сессией.
Таблица 9
Корреляция между переменными для групп
Запросы группы FULL Запросы группы COUNT
1 2 3 5 1 2 3 4
А1 0.33 0.09 0.05 0.34 А1 0.32 0.46 0.11 0.88
A2 0.46 0.14 0.03 0.51 A2 0.27 0.15 0.15 0.40
2 1 0.00 0.00 0.72 2 1 0.00 0.00 0.45
3 - 1 0.67 0.39 3 - 1 0.35 0.50
4 - - 1 0.26 4 - - 1 0.20
Примечание. В таблице введены следующие обозначения для переменных: Т1МЕ_СРи - А1, НШ_ТМЕ - А2, КСОШТ - 1, КОШБШ - 2, СОЬСЫТ- 3, ЮХ_ШЕ - 4, ТБТЪИЕ - 5.
Таблица 10
Результаты расчетов коэффициентов регрессии по группам для переменных TME_CPU,(IDX_SIZE, TABLESIZE)
Группа Тип запроса B0 B1 R2 AVG_Y MINY MAXY MINX MAXX
1 COUNT 6.9 4.06E-09 0.05 6.92 6.7 7.3 18000 18000000
1 FULL 6.85 2.05E-10 0.07 6.86 6.6 7.1 13000 582000000
2 COUNT 6.92 2.88E-09 0.03 6.93 6.7 7.2 18000 18000000
2 FULL 6.9 2.29E-10 0.09 6.91 6.7 7.1 13000 582000000
3.1 COUNT 6.95 -7.91E-09 0.16 6.9 6.7 7.3 20000 32000000
3.1 FULL 6.92 6.51E-09 0.33 7.05 6.4 8.3 13000 173000000
3.2 COUNT 7.25 6.48E-07 0.99 12.34 7 27.6 85000 34000000
3:2 FULL 6.89 3.91E-08 0.99 11.75 7 29.9 582000 582000000
4.1 COUNT 6.99 -2.69E-09 0.03 6.95 6.4 8.2 58000 88000000
4.1 FULL 7.22 1.83E-08 0.64 8.82 6.4 18 173000 582000000
4.2 COUNT 6.79 1.50E-09 0.01 6.82 6.3 7.3 68000 68000000
4.2 FULL 7.02 1.11E-09 0.01 7.06 6.5 8.5 173000 173000000
4.3 COUNT 6.86 7.88E-10 0 6.86 6.4 7.2 82500 33000000
м FULL 6.51 5.24E-08 0.85 13.02 £7 47.9 582000 582000000
5 COUNT 4.29 3.20E-07 0.97 16.35 6.5 179.6 34000 538000000
5 FULL 7.42 1.25E-07 0.31 18.15 6.2 213.6 24000 582000000
6 COUNT 10.53 3.95E-07 0.34 16.73 6.6 89 34000 128000000
6 FULL 16.98 5.21E-08 0.07 20.01 66 125.3 24000 582000000
7 FULL 63.71 2.97E-06 0.92 238.22 7 1869 13000 582000000
Таблица 11
Результаты расчетов коэффициентов регрессии по группам для переменных HW_TME,(IDX_SIZE, TABLESIZE)
Группа Тип запроса B0 B1 R2 AVG_Y MINY MAXY MINX MAXX
1 COUNT 6.52 7.66E-08 0.03 6.82 2.3 22 18000 18000000
1 FULL 50.42 1.65E-07 0.31 60.09 2.4 168.9 13000 582000000
2 COUNT 4.29 -1.45E-09 0 4.29 2.5 5.8 18000 18000000
2 FULL 209.04 1.09E-06 0.34 272.89 6 1075.3 13000 582000000
31 COUNT 38.9 4.09E-06 0.62 62.48 22 135.7 20000 32000000
3.1 FULL 299.54 9.50E-05 0.87 2255.76 4 17588.1 13000 173000000
3.2 COUNT 4.38 9.26E-05 1 732.43 15 3174.5 85000 34000000
3.2 FULL -166.09 2.43E-05 0.99 2854.54 36 13994.3 582000 582000000
41 COUNT 53.69 4.20E-06 0.59 119.15 38 531.8 58000 88000000
4.1 FULL 1402.16 0.000194 0.94 18246.6 21.1 106756.5 173000 582000000
4.2 COUNT 57.63 2.42E-06 0.7 92.74 5 195.1 68000 68000000
4:2 FULL 86.93 3.53E-05 1 1391.38 19.8 6178.2 173000 173000000
М COUNT 28.03 6.95E-06 0.91 81.08 58 288.9 82500 33000000
М FULL -1585.56 0.000273 0.93 32307.77 37.4 195358.8 582000 582000000
5 COUNT 7497.8 0.000186 0.11 14511.35 5 303937.6 34000 538000000
5 FULL 7642.26 0.000441 0.36 45346.97 5.2 609378.4 24000 582000000
6 COUNT -12678.1 0.002127 0.83 20720.13 £2 322072.1 34000 128000000
6 FULL 32655.7 0.000457 0.21 59275.9 16.5 632492 24000 582000000
7 FULL -2375.58 0.001456 0.92 83055.68 54 1181796 13000 582000000
В качестве формы зависимости можно принять значение константы B0 для тех групп запросов, где R2 незначимо, т. е. зависимость отсутствует. Полученные зависимости верны только для таблиц размером от 13000 до 582000000 байт и не могут быть перенесены на таблицы меньшего размера.
Анализ сложных форм зависимостей для групп 1, 2 запросов типа FULL
Анализ результатов в логарифмической шкале показал более сложную зависимость для запросов группы 1, 2 FULL - чтение данных по первичному индексу, а именно S-образную кривую. Для анализа кривых был использован аппарат моделей логистического роста (Logistic Growth) [6]. Модель логистического роста - это модель экспоненциального роста с обратной связью. По мере приближения к верхнему пределу функции рост замедляется. Модель логистического роста применяется для описания развития сложных биологических систем в закрытом пространстве, в тех ситуациях, когда ресурс для экспоненциального роста ограничен. Кривая логистического роста описывается выражением:
f (t) =- к
1+expl -
ln(81)
At
(t - tm )
где k - теоретический предел функции роста; At - период роста функции от 10 % до 90 % от максимального значения; tm - точка 0,5k середины интервала роста функции. Для полного описания модели роста необходимо определить указанные три параметра - At, tm, k.
Анализ кривых (рис. 2) выполнен с использованием программного продукта LogLet Lab, разработанным в The Rockefeller University, New York, USA.
Для группы 1 FULL At= 2,8, tm=7 группы 2 FULL At= 1,7, t„=l, k=569.
GR1 FULL
k=112,6 ;для
(1) Saturation: 669.0 Midpoint: 7 Growth Time: 1.7
4 5 6 7
loglOIJBLSIZE)
Рис. 2. Логистические кривые для запросов групп 1, 2 типа FULL
Анализ графика позволяет выделить три участка кривой: слабый рост функции в начале; участок интенсивного роста кривой; период слабого роста времени, приближающийся к максимальному значению функции. Первый участок характеризуется полным кэшированием содержимого таблицы на любом из уровней, на втором участке размер таблиц становится сопоставимым с размером кэша СУБД, поэтому данные частично кэши-руются, а следовательно, растет количество операций чтения данных с диска, на третьем участке данные практически полностью читаются с диска, и максимальное значение соответствует тому случаю, когда для получения каждой строки запроса СУБД выполняет операцию чтения данных с жесткого диска.
По результатам анализа логистических кривых необходимо сделать следующие выводы:
- функция времени выполнения простых запросов использующих уникальный индекс или первичный ключ, имеет форму логистической кривой, для которой tm есть десятичный логарифм размера буфера операций чтения СУБД; верхний предел к определяется временем произвольного доступа жесткого диска, период роста At зависит от количества строк в результате запроса;
- минимальное значение указанной функции определяется скоростью доступа к данным, размещенным в оперативной памяти вычислительной системы;
- верхний предел данной функции также зависит от количества строк в результате запроса.
Заключение
В результате исследования разработаны: комплекс программ, реализующих методику тестирования программно аппаратной платформы ИС TPC-C Benchmark, для целей определения параметров закона распределения времени выполнения запросов на узле распределенной ИС; методика и комплекс программных средств, использующих методику с целью выявления формы зависимости времени выполнения запросов от параметров схемы данных. Получены формы и параметры законов распределения времени выполнения запросов узлом ИС, а также параметры зависимости времени выполнения запросов в узле ИС от параметров схемы данных. В качестве СУБД узла распределенной ИС применяется СУБД Oracle9i.
Анализ результатов исследования позволяет сделать следующие выводы:
- основным законом распределения времени выполнения простых запросов является закон Эрланга -гамма-распределение;
- наибольшая нагрузка на вычислительную систему возлагается при выполнении запросов, использующих поиск подстроки в строке;
- загрузка процессора при выполнении простых запросов, использующих уникальный индекс, постоянна и не зависит ни от размера таблицы, ни от количества строк в результатах запроса;
- загрузка аппаратной платформы линейно зависит от объема обрабатываемых данных;
- нижнее значение времени обработки запросов процессором определяется производительностью процессора, верхнее - сложностью запроса;
- форма зависимости времени выполнения запроса от размера таблицы, размера индекса - линейная;
- для запросов, обращающихся к таблицам по уникальным значениям атрибутов, зависимость времени выполнения от размера таблицы носит характер сложной логистической кривой;
- время загрузки процессора для доступа к данным при использовании уникального индекса определяется структурой индекса. Для уникального индекса время обработки запроса является постоянной величиной, зависящей от производительности процессора. Для не уникального индекса время загрузки процессора зависит от селективности индекса;
- на производительность системы влияет организация системы буферного хранения наиболее часто используемых данных;
- линейный рост времени использования процессора обеспечивается двумя параметрами: сложностью условия запроса и размером возвращаемых данных;
- на рост времени работы процессора в большей степени влияет сложность условия запроса по сравнению с ростом числа обрабатываемых данных;
- для прогнозирования загрузки процессора и аппаратной платформы на формирование результатов запроса может быть использована зависимость, установленная для группы запросов l.
Полученные в результате исследования данные будут использованы для создания модели узла распределенной ИС.
Литература
1. Таненбаум Э., Стивен М. Распределенные системы: Принципы и парадигмы. СПб., 2003.
2. Ведмеденко А.И. Программный комплекс тестирования производительности информационных систем по методике TPC-C Benchmark // Сб. науч. тр. Моск. гос. соци-альн. ун-т. Филиал, г.Анапа. Анапа, 2003.
3. Ведмеденко А.И. Применение методики тестирования
СУБД TPC-C для оценки параметров, используемых в моделях функционирования распределенных информационных систем // Межвуз. сб. науч. тр./ ЮРГТУ; Ин-т открытого образования. Новочеркасск, 2003.
4. Ведмеденко А.И., Черноморов Г.А. Экспериментальная
оценка времени выполнения запросов в среде СУБД Oracle 9i // Материалы междунар. науч.-практ. конф., г. Новочеркасск / Юж.-Рос. гос. техн. ун-т (НПИ). Новочеркасск, 2OO3.
5. TPC Benchmark™ C, Standard Specification, Revision 5.1: www.tpc.org.
6. Perrin S., Meyer, Jason W. Yung, Jesse H. Ausubel. A Primer
on Logistic Growth and Substitution: The Mathematics of the Loglet Lab Software // Technological Forecasting and Social Change l999Vol б1(3). Р. 24l-2ll.
19 апреля 2004 г.
Южно-Российский государственный технический университет (НПИ)