Настройка производительности PostgreSQL

Вы неправильно понимаете концепцию origin. Происхождение поможет преобразовать числа в даты. Эти числа представляют секунды, поэтому вам нужно origin, чтобы добавить эти секунды в начало координат и получить объект datetime. Например,

as.POSIXct(60, tz = "GMT", origin = '2015-03-05')
#[1] "2015-03-05 00:01:00 GMT"
as.POSIXct(3600, tz = "GMT", origin = '2015-07-05')
#[1] "2015-07-05 01:00:00 GMT"

То, что вы пытаетесь сделать, может быть легко достигнуто путем вставки желаемой даты в ваше время и преобразования в datetime, т.е.

as.POSIXct(paste0('2000-01-01 ', '11:03:15'), format = "%Y-%m-%d %H:%M:%S", origin = "", tz = "CET")
#[1] "2000-01-01 11:03:15 CET"
13
задан mainstringargs 5 June 2009 в 14:22
поделиться

6 ответов

В вашем другом вопросе вы упомянули, что ваша встроенная система openwrt . Поскольку эта прошивка маршрутизатора уже поставляется со встроенным веб-сервером (для административного интерфейса), почему бы вам не использовать это и для своего приложения?

и как это влияет на ваши запросы (в основном полезно для больших запросов)
  • Убедитесь, что ваша база данных должным образом нормализована
  • VACUUM для очистки старых данных
  • ANALYZE для обновления статистики (цель статистики для количества статистики)
  • Постоянные соединения (вы можете использовать менеджер соединений, такой как pgpool или pgbouncer)
  • Понимать, как создаются запросы (соединения, подвыборы, курсоры)
  • Кэширование данных (т.е. memcached) является опцией
  • И когда вы исчерпали эти опции: добавьте больше памяти, ускорите дисковую подсистему и т. Д. Аппаратные вопросы, особенно для больших наборов данных.

    И, конечно, прочитайте все остальные темы в postgres / database. :)

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

    И, конечно, прочитайте все остальные темы в postgres / database. :)

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

    И, конечно, прочитайте все остальные темы в postgres / database. :)

    14
    ответ дан 1 December 2019 в 22:08
    поделиться

    First and foremost, read the official manual's Performance Tips.

    Running EXPLAIN on all your queries and understanding its output will let you know if your queries are as fast as they could be, and if you should be adding indexes.

    Once you've done that, I'd suggest reading over the Server Configuration part of the manual. There are many options which can be fine-tuned to further enhance performance. Make sure to understand the options you're setting though, since they could just as easily hinder performance if they're set incorrectly.

    Remember that every time you change a query or an option, test and benchmark so that you know the effects of each change.

    5
    ответ дан 1 December 2019 в 22:08
    поделиться

    На самом деле есть несколько простых правил, которые в большинстве случаев обеспечат вам достаточную производительность:

    1. Индексы - это первая часть. Первичные ключи автоматически индексируются. Рекомендую ставить индексы на все внешние ключи. Кроме того, поместите индексы во все часто запрашиваемые столбцы, если к таблице, в которой запрашивается более одного столбца, используются часто используемые запросы, поместите индекс для этих столбцов вместе.

    2. Настройки памяти в вашей установке postgresql. Установите следующие параметры выше:

    .

    shared_buffers, work_mem, maintenance_work_mem, temp_buffers
    

    Если это выделенный компьютер базы данных, вы можете легко установить первые 3 из них на половину оперативной памяти (просто будьте осторожны в Linux с общими буферами, возможно, вам придется настроить параметр shmmax ), в любых других случаях это зависит от того, сколько оперативной памяти вы хотели бы дать postgresql.

    http://www.postgresql.org/docs/8. 3 / interactive / runtime-config-resource.html

    3
    ответ дан 1 December 2019 в 22:08
    поделиться

    Абсолютный минимум, который я рекомендую, - это команда EXPLAIN ANALYZE . Он покажет разбивку подзапросов, соединений и т. Д., Все время показывая фактическое количество времени, затраченное на операцию. Он также предупредит вас о последовательном сканировании и других неприятных проблемах.

    Это лучший способ начать.

    1
    ответ дан 1 December 2019 в 22:08
    поделиться

    Поместите fsync = off в ваш posgresql.conf, если вы доверяете своей файловой системе, в противном случае каждая операция postgresql будет немедленно записана на диск (с помощью системного вызова fsync). У нас эта опция отключена на многих производственных серверах уже 10 лет, и у нас никогда не было повреждений данных.

    -2
    ответ дан 1 December 2019 в 22:08
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: