Buffer Pool и Clock-sweep: как мы боремся с cache pollution и p99 latency

Один аналитический запрос способен испортить p99 latency всего OLTP-трафика — на время, пока горячий рабочий набор не прогреется заново с диска. Это cache pollution, и с ним рано или поздно сталкивается любая СУБД с честным LRU. Разбираем, как мы решили эту проблему в нашем OLTP-движке: почему выбрали Clock-sweep вместо LRU, как BufferRing изолирует полные сканы от горячих данных, и почему no-steal — это не стилистический выбор, а требование корректности recovery. С кодом, инвариантами и честными оговорками про то, что ещё не сделано.

https://habr.com/ru/articles/1030822/

#buffer_pool #clock_sweep #cache_pollution #lru #eviction_algorithm #oltp #p99_latency #nosteal #wal #backpressure

Buffer Pool и Clock-sweep: как мы боремся с cache pollution и p99 latency

Один аналитик с одним SELECT count(*) FROM orders способен серьёзно ухудшить p99 latency всего OLTP-трафика. Пока скан читает таблицу страница за страницей, Buffer Pool заполняется «холодными»...

Хабр