Как повысить производительность API поиска с помощью Oracle тысячи строк за один вызов - PullRequest
1 голос
/ 20 июня 2020

У меня сложная проблема с Java8 и Oracle. Наш API с Java8 отвечает за предоставление 1000 записей на вызов из Oracle БД. Мы используем JDB C Spring. В дизайне БД у нас есть 2 таблицы.

  1. Торговец: Id | имя | и другие столбцы. Общее количество столбцов в этой таблице: 11
  2. Контакт с продавцом: Это таблица с контактной информацией продавца для 3 различных типов контактов. Итак, у нас есть 3 строки на каждого продавца в этой таблице
  3. Связь с продавцом : В этой таблице хранится информация об идентификаторе продавца и родительском идентификаторе продавца

Наш API должен предоставить всю информацию о продавце, принадлежащую запрошенному родительскому идентификатору продавца.

У нас есть соединения с Oracle Stored Pro c и у нас тоже есть индексы. Когда мы уменьшаем количество столбцов, возвращаемых из БД, этот API работает хорошо. По мере увеличения количества столбцов производительность API снижается. Чтобы получить 1000 записей, этому API требуется в среднем около 2,5 секунд. Независимо от того, занимает ли меньший набор информации из БД с 1000 записями около 500 миллисекунд [хорошая производительность]

У нас также есть размер выборки, определенный во время операции чтения данных из JDB C до Oracle. Oracle версия 12.x, а API - Java Vertx

Пожалуйста, предложите.

1 Ответ

1 голос
/ 20 июня 2020

Как мы используем поисковую систему?

Сколько страниц результатов вы действительно просматриваете? 1, 2, ... 10, ... 50, еще?

Большинство пользователей просматривают только первую страницу, примерно 2 или 3, а затем пытаются уточнить поиск, чтобы получить более точные результаты.

Действительно ли вашим пользователям нужно 1000 записей? Они действительно смотрят на 1000 записей?

См. https://blogs.oracle.com/oraclemagazine/on-top-n-and-pagination-queries

...