У меня есть две структурно идентичные базы данных postgres на разных серверах Windows.Один для разработки, а другой в режиме реального времени.
Записи вставляются с помощью сценария powershell, сценарий использует объекты секундомера для записи продолжительности каждой вставки.
В первые дни записи проекта вбаза данных разработки будет обрабатываться со скоростью примерно 1 каждые 0,6 миллисекунды, а в оперативной версии - со скоростью 1 каждые 1,4 миллисекунды.Разница во времени сводится к аппаратному обеспечению - живому серверу несколько лет, а разработке - намного новее.
Через 12 месяцев я заметил, что скорость INSERT на сервере разработки остается.то же самое на живом сервере теперь работает в 10 раз медленнее.(18 мс на запись).
Единственная разница между двумя базами данных - это размер.База данных разработки удаляет все данные через месяц, а живая версия хранит данные вечно.Все данные разделены по месяцам (обе базы данных), в начале каждого месяца создается новый раздел для данных новых месяцев, на сервере разработки раздел прошлых месяцев будет удален, а в реальном времени не будет.
Данные обрабатываются (вставляются, обновляются или удаляются) только в течение первых 24 часов.После этого он используется только для отчетов.
Означает ли тот факт, что живая база данных велика, означает, что она должна быть медленной?90% живой базы данных находятся в таблицах, которые в основном просто сидят и ничего не делают - поэтому я всегда предполагал, что они не повлияют на производительность.
Если это так, то что еще может бытьвлияет на производительность?
Может иметь значение следующее (или нет?)
- Серверы физически отделены и даже не находятся в одной сети.
- Оба сервера (должно быть) 100% идентичны в плане схемы, разделов, табличных пространств, индексов и т. д. ...
- На обоих серверах работает postgres v10, и в одной и той же версии windows.
- оба сервера имеютодин и тот же антивирусный сканер и брандмауэр
- Описанная производительность заключается в том, что оба сервера имеют только одно соединение (сценарий powershell выполняет вставку)
- Оба сервера по-прежнему работают правильно, никаких признаков ошибок нет,данные, кажется, все правильно, и нет никаких признаков каких-либо проблем с блокировками (я пробовал перечисленные запросы здесь )
- У меня нет (knowingly) внесла какие-либо изменения в одну базу данных, которые не были отражены в другой.
- Данные накапливаются со скоростью около 10-20 миллионов записей в день, объем активной базы данных теперь составляет несколько терабайт.
- На обоих серверах достаточно свободного дискового пространства.
Я только недавно заметил изменение производительности, поэтому я не уверен, что оно медленно ухудшается по мере увеличения базы данныхрастет, или если это произошло внезапно в последнее время.
Это нормальное снижение производительности по мере роста базы данных - или я должен искать какую-то другую причину?(если так, что)
Спасибо