Comments 4
Тут вопрос в том, почему TPS падают. Это только раздувание таблиц и индексов, или что-то ещё?
Надо подумать. Так как вначале TPS резко падают, думаю поначалу основной вклад вносит невозможноcть быстрой очистки блоков. update без удержания горизонта скорее всего работают в пределах блока сразу освобождая место. Раздувание вряд ли - после снятия удержания TPS возвращаются к исходным. Но уменьшение tps нелинейно во времени, поэтому кроме HOT и другие механизмы оказывают влияние. Например, сильные колебания TPS, которые очень заметны на TPC-C оказывает автоанализ. Про влияние автоанализа на tpc-c хочу отдельно написать. Для приближения тестов (когда нужно сравнить что-то) к реальности я бы ненадолго удерживал горизонт, это ближе к реальной нагрузке - недолгие запросы в OLTP всегда есть. Ещё момент: в тесте есть insert, а delete нет, поэтому при повторных тестах надо пересоздавать таблицы - tps постепенно снижаются, но это заметно только через часы работы теста.
Так как вначале TPS резко падают, думаю поначалу основной вклад вносит невозможноcть быстрой очистки блоков. update без удержания горизонта скорее всего работают в пределах блока сразу освобождая место.
Да, вероятно.
Раздувание вряд ли - после снятия удержания TPS возвращаются к исходным.
Я бы как раз на него грешил. Много версий строк, надо все прочитать, чтобы выбрать нужную. А обратно может быстро возвращаться благодаря внутристраничной очистке.
Но вообще интересно было бы проанализировать.
Раздувание таблиц , влияет на производительность. На Хабре была статья .
Можно будет, как время появится провести тесты и сравнить статистику нагрузочного тестирования по обычному сценарию и с отключенным вакуумом. По крайней мере исключить или подтвердить корреляцию скорости и ожиданий.
Влияние удержания горизонта базы данных PostgreSQL на производительность по тесту pgbench