Сколько (Максимум) DB2 многорядного курсора выборки может поддерживаться в программе PLI / COBOL? - PullRequest
0 голосов
/ 09 мая 2018

Сколько (Максимум) курсора выборки из нескольких строк DB2 можно сохранить в программе PLI / COBOL для повышения производительности?

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

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

1 Ответ

0 голосов
/ 09 мая 2018

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 рядов и тогда выгода становится незначительной.

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

...