Ваш процесс генерирует 1800 новых документов каждый день, и вы сказали, что также регулярно архивируете документы, поэтому я предполагаю, что это означает, что вы удаляете их после того, как архивируете. Проблемы с производительностью могут со временем накапливаться в подобных приложениях. У вас, вероятно, есть большое количество заглушек удаления в базе данных, а файл NSF, вероятно, сильно фрагментирован (внутри и/или снаружи).
Вам следует использовать бесплатную утилиту NotesPeek для проверки базы данных и просмотра сколько заглушек удаления он содержит. Затем следует проверить параметр интервала очистки и уменьшить его до наименьшее значение, которое вам удобно. (То есть, достаточно большой, чтобы вы знали, что все серверы и пользователи будут реплицированы в течение этого времени, но достаточно маленький, чтобы избежать большого накопления заглушек удаления.) Если вы измените интервал очистки, вы можете подождать 24 часа, пока заглушки не будут удалены. очищено, или вы можете вручную запустить updall для базы данных на консоли сервера, чтобы принудительно выполнить ее.
Затем вы должны выполнить команду compact -c для файла NSF, а также выполнить дефрагментацию тома диска сервера, на котором находится NSF.
Если эти шаги действительно улучшают вашу производительность, вы можете предпринять шаги в своем коде, чтобы предотвратить повторение проблемы, используя методы кодирования, которые минимизируют удаление заглушек, рост базы данных и фрагментацию.
То есть зайдите в свой код для архивирования и измените его, чтобы он не удалял их после архивирования. Вместо этого пусть код помечает их полем, например FreeDocList := "1"
. Затем добавьте скрытое представление под названием (FreeDocList)
с формулой выбора FreeDocList = "1"
. Также зайдите в любое другое представление в базе данных и добавьте & (!(FreeDocList = "1"))
к формулам выбора. Затем измените код, чтобы добавить новые пустые документы, так что вместо создания новых документов он просто переходит к представлению FreeDocList
, находит первый документ, устанавливает FreeDocList = "0"
и очищает все предыдущие значения полей. Конечно, если в представлении FreeDocList недостаточно документов, ваш код вернется к старому поведению и создаст новый документ.
С указанными выше изменениями вы будете повторно использовать существующие документы, когда это возможно, вместо того, чтобы удалять и создавать новые. Я запускал тесты для кода, подобного этому, и обнаружил, что это может помочь; но я не могу гарантировать это во всех случаях. Многое будет зависеть от того, что еще происходит в приложении.
person
Richard Schwartz
schedule
08.04.2013