Как оценить правильный размер пакета при обработке записей БД - PullRequest
1 голос
/ 27 января 2011

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

Очевидно, что это будет зависеть от множества факторов: объем данных в записях, какие-либо BLOBS ?, количество столбцов, тип базы данных, драйверы, инфраструктуры, сколько памяти доступно на коробке, есть ли другиепроцесс, потребляющий память, работающий в той же среде и т. д.

Тесты форм Я вижу, что он способен обрабатывать 10000 записей одновременно, но не может (с OOM) запросить 100000.

Я думаю,Я ищу хорошую стратегию, чтобы определить правильный размер партии.

Или я должен просто пойти с очень консервативным и небольшим числом пакета, таким как 100. И не беспокойтесь о каких-либо затратах на запрос.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 января 2011

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

1 : 10 ms
10 : 5 ms each
100 : 3.5 ms each
1K : 3 ms each.
10K : 3.2 ms each.

В этом случае я бы выбрал 1K или 100, чтобы быть на нижней стороне.

0 голосов
/ 27 января 2011

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

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

...