Я изучаю приложение, поддерживаемое PostgreSQL.
Использование ЦП постоянно превышает 50% на современном Xeon с 4 ГБ ОЗУ. Из этих 50% использования ЦП 67% приходится на «пользователя» и 33% — на «систему» (это машина с Linux). Система вообще не ожидает операций ввода-вывода.
Мне интересно, как я могу увидеть, как это процессорное время ломается.
Насколько я вижу, запросы в основном представляют собой специальный SQL (без подготовленных операторов).
Как вы думаете, можно ли значительно сократить это процессорное время пользователя, перейдя на подготовленные операторы? т. е. может ли время анализа SQL, время планирования запросов и т. д. занимать столько ЦП? Некоторые запросы довольно объемные (более 500-1000 символов).
Может ли кто-нибудь подтвердить, автоматически ли PostgreSQL нормализует специальные запросы и кэширует планы запросов для них, фактически делая их такими же эффективными, как подготовленный оператор (плюс время анализа SQL)?
Я, вероятно, реализую кэширование более высокого уровня, чтобы решить эту проблему, но мне любопытно узнать, считает ли кто-нибудь, что стоит переместить это приложение в подготовленные операторы.