, что я нашел, что то, что происходит внутри динамического предварительного. Я испытал такое поведение во многих случаях на протяжении всего приложения и смог воспроизвести его в следующей упрощенной настройке: < /p>
@Controller
@RequiredArgsConstructor
public class TransactionPerformanceInvestigatingController {
private final TransactionalTestingService transactionalTestingService;
@GetMapping("/transaction-performance-investigating")
@ResponseBody
public Object investigate() {
// Measure A start
transactionalTestingService.doSomething();
// Measure A stop
return "done";
}
}
/////////////////////////////////////////////////////////////////////
@Component
@RequiredArgsConstructor
class TransactionalTestingService {
private final ShopTenantProvider provider;
@Transactional(readOnly = true)
public Object doSomething() {
// Measure B start
final List result = provider.getAll();
// Measure B stop
return result;
}
}
< /code>
с точки зрения продолжительности, я мог бы увидеть, что, как правило, будет в 2-4 раза измерения b. < /p>
образно Поскольку мы боремся с задержкой (особенно в более высоких процентах), я смог исключить: < /p>
- Размер пула соединений не является проблемой. Это поведение одинаково в нашей тестовой системе с одним запросом, как и с 30 запросами параллелла. существует < /li>
< /ul>
У меня есть вопросы: < /p>
Что именно здесь происходит? (Мы используем NewRelic для отслеживания производительности, и все, что происходит внутри прокси, невидимо) < /li>
Это накладное расходы? (Может быть, это так, но я довольно скептически) com.mysql.cj.jdbc.driver - Пул соединений: Hikari, завернутый в DataSource-Proxy.
Подробнее здесь: https://stackoverflow.com/questions/797 ... al-methods