IBM опубликовал некоторую информацию (PDF) о производительности многострочного извлечения, когда эта функция впервые стала доступна в DB2 8 в 2005 году. В их данных ничего не говорится о количестве курсоров в данной программе, только количество выбранных строк.
Из этого я делаю вывод, что количество многорядных курсоров выборки само по себе не имеет значения с точки зрения производительности - в пределах разумного. Если кто-то расширит границы разума с 10 000 таких курсоров, я не буду нести ответственность за их страдания.
IBM Redbook, на которую ссылается ранее, указывает на то, что процессорное улучшение на 40% получает 10 строк за выборку, а процессорное увеличение на 50% получает более 100 строк на выборку. Предостережения:
Улучшение производительности при использовании многострочной выборки в целом зависит
на:
- Количество строк, выбранных за одну выборку
- Количество выбранных столбцов
(больше улучшений с меньшим количеством столбцов), тип данных и размер
столбцы
- Сложность получения. Фиксированные накладные расходы сохранены для не
необходимость идти между ядром базы данных и прикладной программой
имеет более низкий процент влияния для сложного SQL, который имеет более длинный путь
длины.
Если многострочная выборка читает больше строк на оператор, это приводит к
Улучшение времени процессора, но после 10-100 строк на выборку из нескольких строк,
выгода уменьшается. Выгода уменьшается, потому что, если стоимость
из одного API-издержек на строку составляет 100% в одной строке, он получает
делится на количество строк, обработанных в одном операторе SQL. Так что
становится 10% с 10 строками, 1% с 100 строками, 0,1% для 1000 рядов и
тогда выгода становится незначительной.
В Красной книге также обсуждается, как они провели тестирование, чтобы получить свои показатели производительности. Короче говоря, они меняли количество извлекаемых строк и перезапускали свою программу несколько раз, в значительной степени, как и следовало ожидать.