API Spring Boot требует> 12 секунд для ответаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 API Spring Boot требует> 12 секунд для ответа

Сообщение Anonymous »

Я использую загрузку Java Spring во внутренней службе, а база данных — MSSql.
Я работаю над API, который выполняет агрегацию данных и возвращает результат. После возврата результата я использую Java-код для окончательной настройки данных перед отправкой их в качестве ответа.
Весь этот процесс занимает около 12 секунд strong>, если я получу данные за один месяц. Если я выберу данные за 6 месяцев, это займет навсегда и никогда не ответит мне.
Изначально я использовал JPA, но затем я переключился на собственный подход к запросам, который немного сократил время, но 12 секунд на 30 дней обработки данных по-прежнему слишком много. Я хочу сократить время, которое это занимает.
Я придумал две вещи
  • Кэширование >
  • Индексирование базы данных
У меня связаны руки с базой данных, так как я не могу переключиться с MSSql на любую другую базу данных, например NoSql или что-нибудь еще.
Мне нужно некоторое руководство по стратегии кэширования и по сокращению времени ответа API.
Ниже моего SQL-запроса:

Код: Выделить всё

WITH DateRange AS (
SELECT DATEADD(DAY, n, :fromDate) AS date
FROM (
SELECT TOP (DATEDIFF(DAY, :fromDate, :toDate) + 1)
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1 AS n
FROM sys.columns
) AS Numbers
)
SELECT
FORMAT(d.date, 'MM/dd/yyyy') AS label,
ISNULL(SUM(abc.data1), 0) AS data1,
ISNULL(SUM(abc.data2), 0) AS data2,
ISNULL(SUM(abc.data3), 0) AS data3
FROM
DateRange d
LEFT JOIN ABC abc ON
CAST(abc.date AS DATE) = d.date
WHERE filtering1
AND filtering2
AND d.date >= :fromDate
AND d.date  {
dateLabels.add((String) result[0]);
data1.add(((Number) result[1]).intValue());
data2.add(((Number) result[2]).intValue());
data3.add(((Number) result[3]).intValue());
});
  • Почему я использую этот тип запроса?

    Я хочу чтобы отобразить данные как 0, если для этой конкретной даты данные отсутствуют.
[*]Размер данных мы говорим о миллионах (может достигать миллиардов).

[/list]

[*]Как можно Я улучшаю этот запрос.
[*]Как сделать API быстрее.
[*]Как правильно обрабатывать проецирование данных.

Мне нужны данные в порядке возрастания метки даты.
Буду признателен за любую помощь в этом.

Подробнее здесь: https://stackoverflow.com/questions/791 ... to-respond
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»