У нас есть искрозащитный запрос потоковой передачи, который считывает данные из eventhub, выполняет некоторую обработку и записывает данные обратно в eventhub. У нас включена контрольная точка - мы храним данные контрольной точки в Azure Datalake Gen2.
Когда мы запускаем запрос, мы видим что-то странное - со временем наша производительность (задержка) запроса медленно снижается. Когда мы запускаем запрос в первый раз, время пакетной обработки составляет ~ 3 секунды. После дня запуска время пакетной обработки составляет 20 секунд, а через 2 дня мы получаем более 40 секунд. Интересно, что когда мы удаляем папку с контрольной точкой (или иным образом сбрасываем контрольную точку), задержка возвращается к норме (2 сек).
Если посмотреть на производительность запросов через 2 дня работы в том же каталоге контрольных точек, становится ясно, что это запись-лог / walCommit, которая растет и через некоторое время составляет большую часть время обработки.
У меня следующие вопросы: что движет этим поведением - естественно, что walCommit занимает все больше и больше времени? Может ли это быть специфическим для Azure Datalake Gen2? Нужны ли нам вообще журналы упреждающей записи для хаба событий? Каковы общие способы улучшить это (не предполагая отключения WAL) ..