MV CC предел снимка для одновременных запросов - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь изучить архитектуру PostgreSQL MV CC. В нем говорится, что MV CC создает отдельный снимок для каждого одновременного запроса. Разве этот подход не является неэффективным?

Например, если есть 1000 одновременных запросов и размер таблицы огромен. Это создаст несколько экземпляров таблицы.

Правильно ли мое понимание?

1 Ответ

2 голосов
/ 23 февраля 2020

Это говорит о том, что MV CC создает отдельный снимок для каждого одновременного запроса. Разве этот подход не является неэффективным с точки зрения памяти?

Можно утверждать, что это неэффективно с точки зрения памяти. На практике это обычно не большая проблема.

Например, если есть 1000 одновременных запросов и размер таблицы огромен.

Зачем вам нужно / нужно 1000 одновременных запросов? У вас есть 1000 процессоров? Если есть риск, что вы попытаетесь установить sh 1000 одновременных запросов, вам следует развернуть некоторый механизм контроля входа (например, пул соединений), который предотвращает это, с откатом до max_connections.

Это создаст несколько экземпляров таблицы.

Снимок не является копией таблицы. Это просто набор информации , который динамически применяется к строкам базовой таблицы, чтобы решить, какие строки видны в этом снимке. Размер моментального снимка пропорционален количеству одновременных транзакций (одна причина не имеет их 1000), а не размеру таблицы.

...