Postgres - большая база данных всегда будет медленнее? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть две структурно идентичные базы данных postgres на разных серверах Windows.Один для разработки, а другой в режиме реального времени.

Записи вставляются с помощью сценария powershell, сценарий использует объекты секундомера для записи продолжительности каждой вставки.

В первые дни записи проекта вбаза данных разработки будет обрабатываться со скоростью примерно 1 каждые 0,6 миллисекунды, а в оперативной версии - со скоростью 1 каждые 1,4 миллисекунды.Разница во времени сводится к аппаратному обеспечению - живому серверу несколько лет, а разработке - намного новее.

Через 12 месяцев я заметил, что скорость INSERT на сервере разработки остается.то же самое на живом сервере теперь работает в 10 раз медленнее.(18 мс на запись).

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

Данные обрабатываются (вставляются, обновляются или удаляются) только в течение первых 24 часов.После этого он используется только для отчетов.

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

Если это так, то что еще может бытьвлияет на производительность?

Может иметь значение следующее (или нет?)

  • Серверы физически отделены и даже не находятся в одной сети.
  • Оба сервера (должно быть) 100% идентичны в плане схемы, разделов, табличных пространств, индексов и т. д. ...
  • На обоих серверах работает postgres v10, и в одной и той же версии windows.
  • оба сервера имеютодин и тот же антивирусный сканер и брандмауэр
  • Описанная производительность заключается в том, что оба сервера имеют только одно соединение (сценарий powershell выполняет вставку)
  • Оба сервера по-прежнему работают правильно, никаких признаков ошибок нет,данные, кажется, все правильно, и нет никаких признаков каких-либо проблем с блокировками (я пробовал перечисленные запросы здесь )
  • У меня нет (knowingly) внесла какие-либо изменения в одну базу данных, которые не были отражены в другой.
  • Данные накапливаются со скоростью около 10-20 миллионов записей в день, объем активной базы данных теперь составляет несколько терабайт.
  • На обоих серверах достаточно свободного дискового пространства.

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

Это нормальное снижение производительности по мере роста базы данных - или я должен искать какую-то другую причину?(если так, что)

Спасибо

1 Ответ

0 голосов
/ 16 сентября 2018

хорошо - решил.

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

...