Посмотрел доклад Андреса Фройнда о поддержке NUMA в PostgreSQL. На скрине - бенчмарк из доклада. Видно, что производительность деградирует с увеличением числа NUMA узлов, и пиковая в ~3 раза ниже чем могла бы быть.

Предложения фокусируются на observability, повышении cache locality и равномерном распределении памяти между различными узлами.

Что ещё 10 лет назад делал MySQL:

  • шардирование основных локов, переход на RCU паттерн для них
  • использование lock-free структур данных для наиболее горячих точек, например metadata locking, mdl
  • шардирование буффер пула
  • разделение буффер пула на горячую/среднюю/холодную зону.

Для PostgreSQL, кажется, стоит ещё каким-то образом равномерно распределять backend’s между ядрами, прибивая их к ядрам по мере создания, да и балансировщик запросов, типа Odyssey/PgBouncer для этого имело бы смысл сделать встроенным.

Есть шансы что OrioleDB сможет работать на NUMA значительно лучше, ну или как минимум добавить поддержку будет легче.