JMeter: Как тестировать удаление данных из таблицы базы данных партиями?

Я пытаюсь сравнить разницу в производительности между размерами пакетов DELETE с помощью JMeter.

У меня есть таблица, которую я заполняю большим количеством тестовых данных. Затем у меня есть запрос JDBC, который выполняет следующий оператор:

delete from tbl where (entry_dt < '2019-02-01') and (rownum <= 10000);

Я хочу продолжать выполнять это до тех пор, пока таблица не станет пустой, и записывать время, затраченное на очистку таблицы.

Я буду запускать этот поток несколько раз, чтобы получить среднее время выполнения, и повторю этот процесс для разных размеров пакетов.

  1. Как мне определить свой контроллер while для этого?

  2. Я читал с других сайтов, что могу использовать контроллер транзакций для измерения времени своего процесса, но я не знаком с этой функцией. Как мне определить свой Контроллер транзакций для этого?


person user10931326    schedule 18.02.2019    source источник


Ответы (2)


  1. Добавьте контроллер транзакций в качестве тестового элемента верхнего уровня под Группа потоков
  2. Добавьте While Controller в качестве дочернего элемента контроллера транзакций и используйте следующее выражение условия :

    ${__jexl3(${count_1} > 0,)}
    
  3. Поместите свой сэмплер запроса JDBC как дочерний элемент контроллера While
  4. Добавьте JDBC PostProcessor в качестве дочернего элемента сэмплера запросов JDBC и настройте его следующим образом:

    введите описание изображения здесь

  5. Вот и все, в то время как контроллер будет выполнять итерацию до тех пор, пока в таблице tbl не появятся записи, а контроллер транзакций будет записывать совокупное время всех выполненных сэмплеров запросов JDBC.

person Dmitri T    schedule 18.02.2019

Я бы сделал это так:

  1. Используйте сэмплер «JDBC Request - Get Count», чтобы получить данные из базы данных, которую необходимо удалить Получить счет
  2. Используйте утверждение BeanShell, чтобы проверить, есть ли еще данные, которые можно удалить. В противном случае остановите поток  Утверждение BeanShell
  3. Выполните запрос на удаление данных  Удалить данные
  4. Группа потоков должна остановить проверку при ошибке  Остановить тест при ошибке
person Johann    schedule 18.02.2019