Глава 4 - МАСШТАБИРУЕМОСТЬ и ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ |
Содержание: 4.1 Основные правила градуировки 4.1 Основные правила градуировки Производительность ТРС-С тестирования зависит от активности терминалов, относящихся к каждому складу. Для увеличения производительности нужно конфигурировать большее количество складов и относящихся к ним терминалов. Для каждого склада необходимо заполнить определенное количество строк в базе данных, оставив некоторый объем на диске свободным для обеспечения записи данных, полученных за так называемый «60-дневный период активности». Эти требования определяют, как объем памяти и заполнение базы данных изменяются в зависимости от производительности. 4.1.1. Смысл требований градуировки заключается в сохранении пропорции между транзакционной нагрузкой, представленной в тестируемой системе количеством элементов таблицы, к которым происходит обращение в транзакциях, требуемым объемом для хранения информации и количеством терминалов, создающих загрузку. 4.1.2. Если превышено какое-либо значение, описанное в пункте 4.2, то для сохранения описанного в пункте 4.2 соотношения, остальные данные должны также пропорционально увеличиться. 4.1.3. Заявленная производительность может не превышать предельно допустимые условия, приведенные в пункте 4.2, и определяющие условия пункта 5.2. Несмотря на то, что заявленная производительность может не достигать предельно допустимого в сконфигурированной системе значения, расчет соотношения цена/производительность (см. пункт 7.1.) должен содержать цену фактически сконфигурированной системы. Для предотвращения «переградуировки», заявленная производительность должна соответствовать 9 tpmC на каждый сконфигурированный склад. Комментарий: Максимальная производительность достигается в результате быстрых транзакций с нулевым временем отклика и минимально необходимым временем ожидания. Цель этого пункта – предотвратить предоставление отчета о производительности, которая превышает этот максимум, составляющий 12,86 tpmC на каждый склад. Вышеупомянутые 9 tpmC составляют 70 % от подсчитанного максимума производительности. 4.2.1 Таблица СКЛАД используется в качестве основной единицы масштабирования. Количество элементов всех других таблиц (не считая таблицы "ПОЗИЦИЯ В ЗАКАЗЕ") зависит от числа сконфигурированных складов (т.е. количества элементов таблицы "СКЛАД"). Это число, в свою очередь, определяет используемую нагрузку тестируемой системы, которая, в результате, обеспечивает заявленную производительность (см. пункт 5.4). Комментарий 1: Количество элементов в таблицах "ИСТОРИЯ", "НОВЫЙ ЗАКАЗ", "ЗАКАЗ" и "ПОЗИЦИЯ В Заказе" будет варьироваться вследствие повторного выполнения тестов. Исходное наполнение базы данных и профили транзакций созданы с целью минимизировать воздействие этих изменений на производительность и поддерживать воспроизводимость результатов последующих тестов. Комментарий 2: Количество элементов таблицы "Позиция" остается неизменным независимо от числа сконфигурированных складов, поскольку на всех складах поддерживаются запасы позиций одного и того же каталога. 4.2.2 Конфигурация Нижеследующие требования к градуировке представляют исходную конфигурацию для теста, описанного в Главе 5:
Комментарий:в сравнении с тем, что действительно достигается в ходе тестирования (Wa), Переградуировка базы данных, т.е. конфигурация большого числа складов и соответствующих таблиц (Wc) допустимо при выполнении следующих условий: Пусть, Wc - число складов, сконфигурированных при создании базы данных, Wa – число складов, к которым были обращения в ходе тестирования (активные склады) Wi – число складов, к которым не было обращений в ходе тестирования (неактивные склады) Можно продемонстрировать, что к неактивным складам в ходе тестирования нет обращений. Этот факт должен быть продемонстрирован одним из следующих способов:
4.2.3 Расчет свободного объема на 60 дней Объем свободного места, необходимого на 60-ти дневный период, должен быть вычислен следующим образом:
4.3.1. Тест, описанный в Главе 5, требует, чтобы правильно масштабируемое наполнение входило в тестируемую базу данных. Каждая таблица должна содержать в себе количество рядов, определенных в пункте 4.2.2 перед началом выполнения теста (например, таблица "Новый заказ" должна содержать 2000 рядов на каждый отдельный склад). 4.3.2. Определение терминов 4.3.2.1 Термин "случайно выбранный" означает - независимо выделенный и равномерно распределенный в заданном диапазоне значений. Комментарий: С целью первоначальной загрузки данных, случайное число может быть получено в результате последовательного выбора из набора, по крайней мере 10,000 предварительно сгенерированных случайных чисел. Этот алгоритм не может быть использован для поля O_OL_CNT. 4.3.2.2 Запись "случайное значение а-строки в пределах [x .. y]" (соответственно, n-строки в пределах [x .. y]) означает строку случайных буквенно-цифровых (соответственно, числовых) знаков произвольной длины минимально х, максимально у, и средней (y+x)/2. Комментарий: Набор используемых символов должен состоять как минимум из 128 различных знаков. Он должен включать по крайней мере 26 букв нижнего регистра, 26 знаков верхнего регистра и числа от 0 до 9. 4.3.2.3 Фамилия заказчика (C_LAST) должна быть сгенерирована путем соединения трех переменной длины частей, выбранных из следующего перечня: 0 1 2 3 4 5 6 7 8 9 Для любого числа от 0 и до 999, любая из 3-х частей фамилии определяется соответствующей цифрой в 3-х разрядном числе. Например, число 371 генерирует имя PRICALLYOUGHT, а число 40 – имя BARPRESBAR. 4.3.2.4 Запись "уникальное значение в пределах [x]" означает любое значение в пределах набора из «х» последовательных значений, уникальных, в пределах группы наполняемых рядов. Если отдельные группы рядов заполнены однотипно (например, существует группа рядов с типом "заказчик" для каждого ряда типа "точка продаж"), то каждая группа должна использовать один и тот же набор из «х» последовательных значений. При однотипном заполнении отдельных групп рядов (например, существует группа рядов с типом "заказчик" для каждого ряда типа "точка продаж"), каждая группа должна использовать один и тот же набор из «х» последовательных значений. 4.3.2.5 Запись "случайное значение в пределах [x .. y]" означает случайное значение, самостоятельно выбранное и равномерно распределенное в диапазоне х … у, со средним значением (х+у)/2 и одинаковой разрядностью. Например, в диапазоне [0,01 .. 100,00] есть 10000 уникальных значений, а в диапазоне [1 ..100] - только 100 уникальных значений. 4.3.2.6 Запись "случайная перестановка значения в пределах [x .. y]" означает последовательность чисел от х до у, расположенных в произвольном порядке. Это известно как перестановка (или выбор) без замены. 4.3.2.7 Индекс склада (W_ZIP), индекс точки продажи (D_ZIP) и индекс клиента (C_ZIP) должны генерироваться путем соединения
Если дана случайная n-строка от 0 до 9999, то индекс определяется путем соединения n-строки и константы '11111'. Таким образом, создается 10000 уникальных индексов. Например, n-строка 0503, соединенная с константой 11111, образует индекс 050311111. Комментарий: Если взять 30000 клиентов на каждый склад и 10000 индексов, в среднем получается, что 3 клиента на каждый склад имеют одинаковый индекс. 4.3.3. Требования к наполнению таблицы 4.3.3.1 Первичное заполнение базы данных должно состоять из:
I_ID – уникальное значение в пределах [100,000]
I_IM_ID – случайное значение в пределах [1 .. 10,000] I_NAME – случайное значение а-строки в пределах [14 .. 24] I_PRICE - случайное значение в пределах [1.00 .. 100.00] I_DATA - случайное значение а-строки в пределах [26 .. 50]. Для 10% всех рядов, выбранных случайным образом, строка "ORIGINAL" должна содержаться в 8 последовательных символах, начиная со случайной позиции в I_DATA
W_ID - уникальное значение в пределах [число_сконфигурированных_складов]
W_NAME - случайное значение а-строки в пределах [6 .. 10] W_STREET_1 - случайное значение а-строки в пределах [10 .. 20] W_STREET_2 - случайное значение а-строки в пределах [10 .. 20] W_CITY - случайное значение а-строки в пределах [10 .. 20] W_STATE - случайное значение а-строки из 2 букв W_ZIP – сгенерированный согласно пункту 4.3.2.7 W_TAX - случайное значение в пределах [0.0000 .. 0.2000] W_YTD = 300,000.00 Для каждого ряда в таблице "Склад":
S_I_ID - уникальное значение в пределах [100,000]
S_W_ID = W_ID S_QUANTITY - случайное значение в пределах [10 .. 100] S_DIST_01 - - случайное значение а-строки из 24 букв S_DIST_02 - случайное значение а-строки из 24 букв S_DIST_03 - случайное значение а-строки из 24 букв S_DIST_04 - случайное значение а-строки из 24 букв S_DIST_05 - случайное значение а-строки из 24 букв S_DIST_06 - случайное значение а-строки из 24 букв S_DIST_07 - случайное значение а-строки из 24 букв S_DIST_08 - случайное значение а-строки из 24 букв S_DIST_09 - случайное значение а-строки из 24 букв S_DIST_10 - случайное значение а-строки из 24 букв S_YTD = 0 S_ORDER_CNT = 0 S_REMOTE_CNT = 0 S_DATA - случайное значение а-строки в пределах [26 .. 50]. Для 10% всех рядов, выбранных случайным образом, строка "ORIGINAL" должна содержаться в 8 последовательных символах, начиная со случайной позиции в S_DATA
D_ID - уникальное значение в пределах [10]
D_W_ID = W_ID D_NAME - случайное значение а-строки в пределах [6 .. 10] D_STREET_1 - случайное значение а-строки в пределах [10 .. 20] D_STREET_2 - случайное значение а-строки в пределах [10 .. 20] D_CITY - случайное значение а-строки в пределах [10 .. 20] D_STATE - случайное значение а-строки из 2 букв D_ZIP – сгенерированный согласно пункту 4.3.2.7 D_TAX - случайное значение в пределах [0.0000 .. 0.2000] D_YTD = 30,000.00 D_NEXT_O_ID = 3,001 Для каждого ряда таблицы "Точка продаж":
C_ID – уникальное значение в пределах [3,000]
C_D_ID = D_ID C_W_ID = D_W_ID C_LAST, сгенерированный согласно пункту 4.3.2.3, интегрирующий множество значений для первой тысячи клиентов и генерирующий неравномерное распределение случайных чисел при помощи функции NURand (255,0,999) для каждого из 2000 оставшихся клиентов. Текущая константа С (см. пункт 2.1.6), используемая для наполнения базы данных, должна быть выбрана случайно исключительно из тестового запуска(ов). C_MIDDLE = "OE" C_FIRST - случайное значение а-строки в пределах [8 .. 16] C_STREET_1 - случайное значение а-строки в пределах [10 .. 20] C_STREET_2 - случайное значение а-строки в пределах [10 .. 20] C_CITY - случайное значение а-строки в пределах [10 .. 20] C_STATE - случайное значение а-строки из 2 букв C_ZIP – сгенерированный согласно пункту 4.3.2.7 C_PHONE - случайное значение n-строки из 16 цифр C_SINCE дата/время, заданные операционной системой, когда заполнялась таблица "Клиент". C_CREDIT = "GC" Для 10% рядов, выбранных случайным образом, C_CREDIT = "BC" C_CREDIT_LIM = 50,000.00 C_DISCOUNT - случайное значение в пределах [0.0000 .. 0.5000] C_BALANCE = -10.00 C_YTD_PAYMENT = 10.00 C_PAYMENT_CNT = 1 C_DELIVERY_CNT = 0 C_DATA - случайное значение а-строки в пределах [300 .. 500] Для каждого ряда таблицы "Клиент":
H_C_ID = C_ID
H_C_D_ID = H_D_ID = D_ID H_C_W_ID = H_W_ID = W_ID H_DATE – текущая дата и время H_AMOUNT = 10.00 H_DATA случайное значение а-строки в пределах [12 .. 24]
O_ID - уникальное значение в пределах [3,000]
O_C_ID – последовательно выбранные методом случайной перестановки в пределах [1 .. 3,000] O_D_ID = D_ID O_W_ID = W_ID O_ENTRY_D – текущие дата и время операционной системы O_CARRIER_ID – случайное значение в пределах [1 .. 10] при O_ID < 2,101, в других случаях ноль. O_OL_CNT – случайное значение в пределах [5 .. 15] O_ALL_LOCAL = 1 Для каждого ряда таблицы "Заказ": -- Число рядов в таблице "Позиция в заказе" равняется O_OL_CNT, сгенерированное согласно правилам обработки исходных данных транзакции "Новый заказ" с: OL_O_ID = O_ID OL_D_ID = D_ID OL_W_ID = W_ID OL_NUMBER – уникальное значение в пределах [O_OL_CNT] OL_I_ID – случайное значение в пределах [1 .. 100,000] OL_SUPPLY_W_ID = W_ID OL_DELIVERY_D = O_ENTRY_D, если OL_O_ID < 2,101, в других случаях нуль. OL_QUANTITY = 5 OL_AMOUNT = 0.00, если OL_O_ID < 2,101, в других случаях случайное значение в пределах [0.01 .. 9,999.99] OL_DIST_INFO - случайное значение а-строки из 24 букв
NO_O_ID = O_ID
NO_D_ID = D_ID NO_W_ID = W_ID 4.3.3.2 Некоторые поля изначально заполняются константами. Например, нельзя экономить память, сохранив значение C_CREDIT_LIM. |