Запрос по умолчанию о заданном часовом поясе и client_min_messages - PullRequest
1 голос
/ 22 января 2020

У меня есть вопрос по поводу запроса:

SET client_min_messages TO warning;SET TIME ZONE INTERVAL '+00:00' HOUR TO MINUTE;

Когда я выполняю запрос в postgres: select query from pg_stat_activity, я часто вижу этот запрос перед выполнением моих определенных запросов. Я хотел бы отключить запрос. Мои столбцы имеют временную метку с часовым поясом, но мой часовой пояс по умолчанию - UT C. Что я могу сделать, чтобы удалить его? Влияет ли это на производительность?

1 Ответ

1 голос
/ 28 января 2020

SET для установки параметров времени выполнения, а не для запроса к базе данных. Я не мог даже запустить EXPLAIN ANALYZE с SET; исходя из сложности программы c, можно ожидать, что времена будут напоминать самые короткие запросы. Я сомневаюсь, что это влияет на производительность значимо , но, конечно, несколько байтов передаются и анализируются.

Эти команды получены от менеджера соединений Sequelize. js. Они генерируются при инициализации соединения с помощью

if (this.sequelize.options.clientMinMessages !== false) {
  query += `SET client_min_messages TO ${this.sequelize.options.clientMinMessages};`;
}

if (!this.sequelize.config.keepDefaultTimezone) {
  const isZone = !!moment.tz.zone(this.sequelize.options.timezone);
  if (isZone) {
    query += `SET TIME ZONE '${this.sequelize.options.timezone}';`;
  } else {
    query += `SET TIME ZONE INTERVAL '${this.sequelize.options.timezone}' HOUR TO MINUTE;`;
  }
}

Таким образом, вы можете вызвать new Sequelize() с clientMinMessages: false, keepDefaultTimezone: true в объекте параметров ( clientMinMessages здесь ; keepDefaultTimezone менее документировано).

Я не профилировал их. С установленным часовым поясом UT C keepDefaultTimezone кажется безопасным. Обратите внимание, что если Sequelize не устанавливает postgres client_min_messages в WARNING, postgres может по умолчанию установить чуть более низкий порог уведомления NOTICE и отправить некоторые дополнительные сообщения обратно в Sequelize. Стоит ли использовать какие-либо из этих настроек, зависит от вашей системы.

...