Глава 4 - МАСШТАБИРУЕМОСТЬ и ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ   

   

Содержание:

4.1 Основные правила градуировки

4.2 Требования к градуировке

4.3. Наполнение базы данных



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 Требования к градуировке

4.2.1 Таблица СКЛАД используется в качестве основной единицы масштабирования. Количество элементов всех других таблиц (не считая таблицы "ПОЗИЦИЯ В ЗАКАЗЕ") зависит от числа сконфигурированных складов (т.е. количества элементов таблицы "СКЛАД"). Это число, в свою очередь, определяет используемую нагрузку тестируемой системы, которая, в результате, обеспечивает заявленную производительность (см. пункт 5.4).

Комментарий 1: Количество элементов в таблицах "ИСТОРИЯ", "НОВЫЙ ЗАКАЗ", "ЗАКАЗ" и "ПОЗИЦИЯ В Заказе" будет варьироваться вследствие повторного выполнения тестов. Исходное наполнение базы данных и профили транзакций созданы с целью минимизировать воздействие этих изменений на производительность и поддерживать воспроизводимость результатов последующих тестов.

Комментарий 2: Количество элементов таблицы "Позиция" остается неизменным независимо от числа сконфигурированных складов, поскольку на всех складах поддерживаются запасы позиций одного и того же каталога.

4.2.2 Конфигурация

Нижеследующие требования к градуировке представляют исходную конфигурацию для теста, описанного в Главе 5:

  1. Для каждого действующего склада в базе данных, ТС должна принимать запросы транзакций от 10 терминалов.

  2. Для каждой таблицы, составляющей базу данных, количество элементов первичного заполнения на склад определяется следующим:                                                                                                                                                                                                   Название таблицы Кол-во элементов Длина стойки3 Размер таблицы 3

  3. Объем носителя информации должен иметь достаточно места для накопления и хранения данных, генерируемых в течение 60 дней работы в среднем по 8 часов в день с заявленной производительностью, называемый «60-дневный период».

    Этот объем должен быть вычислен в соответствии с пунктом 4.2.3 и должен использоваться для накопления и хранения рядов, которые могут быть добавлены в таблицы "История заказов", "Заказ" и "Позиция в заказе" в течение 60-дневного периода.

  4. Инкрементом (шагом) для масштабирования базы данных и количества терминалов является склад, состоящий из одного ряда "Склад", 10 рядов "Точка продаж", связанных с ними рядов "Клиент", "История заказов", "Заказ", "Новый заказ" и "Позиция в заказе", 100 000 рядов "Товар на складе", 10 терминалов и оцененный объем памяти для 60 - дневного периода.

Комментарий:в сравнении с тем, что действительно достигается в ходе тестирования (Wa), Переградуировка базы данных, т.е. конфигурация большого числа складов и соответствующих таблиц (Wc) допустимо при выполнении следующих условий:

Пусть, Wc - число складов, сконфигурированных при создании базы данных,

Wa – число складов, к которым были обращения в ходе тестирования (активные склады)

Wi – число складов, к которым не было обращений в ходе тестирования (неактивные склады)

Можно продемонстрировать, что к неактивным складам в ходе тестирования нет обращений. Этот факт должен быть продемонстрирован одним из следующих способов:

  1. ряды в таблице "Склад", которые относятся к неактивным складам (Wi), должны быть исключены до начала тестирования.

  2. показать, что сумма D_NEXT_O_ID, а также W_YTD для любого из неактивных складов в ходе тестирования не изменяется.

  • заявленная производительность не может быть меньше 9 tpmC на каждый сконфигурированный склад (Wc - см. Пункт 4.1.3),

  • Вычисления свободного объема на 60 дней должны быть проведены, основываясь на Wc - количестве складов, сконфигурированных при создании базы данных.

4.2.3 Расчет свободного объема на 60 дней

Объем свободного места, необходимого на 60-ти дневный период, должен быть вычислен следующим образом:

  1. Тестовая база данных должна быть построена с учетом изначального наполнения базы данных и всех индексов в ходе теста:

  2. Тестовая база данных должна быть построена таким образом, чтобы выдержать заявленную производительность в течение восьмичасового периода. Это исключает выполнение каких-либо операций, которые не встречались в течение интервала измерений (см. пункт 5.5)
  3. Полный объем свободного места, отведенный для тестовой базы данных, должен быть разбит следующим образом:                                                                                                                                                                                                                      • Свободное пространство: какое-либо пространство, отведенное базе данных, которое можно использовать в дальнейшем. Оно включает в себя полный объем свободного пространства базы данных, не использованный для хранения самой базы данных (например, ряд, индекс, метаданные) или для форматирования.
    Динамическое пространство: любое пространство, используемое для хранения существующих рядов динамических таблиц (т.е. таблиц "История", "Заказ" и "Позиция в заказе"). Оно включает в себя полный объем свободного пространства базы данных, используемый для хранения рядов и дополнительной информации динамических таблиц, а также любые данные, которые были добавлены в базу данных в результате ввода новых рядов, независимо от любых индексов. Оно не включает индексные данные или другую дополнительную информацию, как например, заголовки индекса, вкладки, блоки и таблицы.
    Статическое пространство: любое пространство, используемое для хранения статической информации и индексов. Оно включает в себя все пространство, отведенное тестируемой базе данных, но не определенное как свободное или динамическое пространство.
  4. Исходя из того, что система должна быть сконфигурирована для поддержания заявленной производительности в течение 8-ми часового периода, динамические таблицы должны иметь возможность увеличиваться, по крайней мере 8 часов без заметного влияния на производительность базы данных. Свободное пространство, используемое для предполагаемого увеличения динамических таблиц в течение восьмичасового периода работы с заявленной производительностью, называется суточный рост. При условии, что W - количество сконфигурированных складов в тестируемой системе, суточное расширение должно вычисляться по формуле: Daily-Growth = (dynamic-Space / (W * 62.5)) * tpmC

    Суточный рост = (динамическое пространство/(W * 62,5))* tpmC

    Примечание: В вышеприведенной формуле – число 62,5 используется в качестве коэффициента нормализации, поскольку первичное наполнение базы данных для каждого склада содержит динамическое пространство, необходимое для работы в течение 8 часов при активности в 62,5 tpmC.

  5. Любое свободное пространство сверх 150% суточного роста называется суточное расширение и должно быть добавлено к динамическому пространству при вычислении потребности в объеме на 60-ти дневный период. Суточное расширение должно вычисляться по формуле:

    Daily-Spread = Free-Space - 1.5 * Daily-Growth

    Суточное расширение = свободное пространство – 1,5*суточный рост

    Если получен отрицательный результат, то для суточного расширения должно использоваться нулевое значение.

  6. Пространство для 60-ти дневного периода должно вычисляться по формуле:

    60-Day-Space = Static-Space + 60 * (Daily-Growth + Daily-Spread)

    Пространство для 60-ти дневного периода = Статическое пространство + 60*(суточный рост + суточное расширение)

  7. Динамическое пространство тестируемой базе данных, считается частью 60-ти дневного пространства.

4.3. Наполнение базы данных

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
BAR OUGHT ABLE PRI PRES ESE ANTI CALLY ATION EING

Для любого числа от 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) должны генерироваться путем соединения

  1. случайной n-строки из 4 чисел, и

  2. константы '11111'.

Если дана случайная n-строка от 0 до 9999, то индекс определяется путем соединения n-строки и константы '11111'. Таким образом, создается 10000 уникальных индексов. Например, n-строка 0503, соединенная с константой 11111, образует индекс 050311111.

Комментарий: Если взять 30000 клиентов на каждый склад и 10000 индексов, в среднем получается, что 3 клиента на каждый склад имеют одинаковый индекс.

4.3.3. Требования к наполнению таблицы

4.3.3.1 Первичное заполнение базы данных должно состоять из:

  • 100000 рядов в таблице "ТОВАРЫ" с:
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

Для каждого ряда в таблице "Склад":

  • 100,000 рядов в таблице "Товары на вкладе" с:
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


  • 10 рядов таблицы "Точка продаж" с:
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


Для каждого ряда таблицы "Точка продаж":
  • 3,000 рядов таблицы "Клиент" с:
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]

Для каждого ряда таблицы "Клиент":

  • 1 ряд в таблице "История заказа" с:
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]


  • 3,000 рядов в таблице "Заказ" с:
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 букв

  • 900 рядов в таблице "Новый заказ" соответствуют последним 900 рядам таблицы "Заказ" для данной точки продаж (т.е. с NO_O_ID между 2,101 и 3,000), при:
NO_O_ID = O_ID
NO_D_ID = D_ID
NO_W_ID = W_ID


Комментарий: 5-ти процентный разброс значений конечного количества элементов S_DATA с ORGINAL”, I_DATA с “ORIGINAL”, и C_CREDIT с “BC” предусмотрен для учета случайных изменений, встречающихся в ходе загрузки исходной информации базой данных.

4.3.3.2 Некоторые поля изначально заполняются константами. Например, нельзя экономить память, сохранив значение C_CREDIT_LIM.

Статья: Глава 4 - МАСШТАБИРУЕМОСТЬ и ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ

Перейти на главную страницу компании "Софтпоинт"