Вопросы по хранению данных в БД

В продолжение. Просьба на моем примере “разжевать”.
Есть система: 189 точек учета (из них 183 теплоснабжение, остальные ХВС и ГВС), запрос данных ведется 8 раз в сутки, запрашиваются все данные, в том числе текущие. Приборы в основном ВКТ-7. Все журналы хранятся 100 суток. При этом текущие хранятся 3 года. Настроено хранение отладочной информации при запросе. Журнал о состоянии системы (ежедневно) и отчеты о теплоснабжении (ежемесячно) формируемые автоматически также сохраняются в базу. Система работает уже 4-ый год.

Произошло переполнение.

Уменьшил хранение журналов до 10 дней. Хранение текущих до 5 суток. Убрал хранение отладочной информации. в 24:00 произошла очистка. Сжал базу. Появилось всего 75 мб. Явно мало.

В MS SQL Server Management Studio увидел, что основной размер занимает PollSessionLog.

Вопросы:

  1. Интуитивно, понимаю что параметры системы, при правильной настройке должны позволять работать безпроблемно и переходить с Express нет необходимости. Так ли это?
  2. Можно ли увидеть от Вас оценочный алгоритм расчета предполагаемого размера базы?
  3. Что именно хранится в PollSessionLog? можно ли ее просто удалить?
  4. Как оптимизировать размер PollSessionLog, или такой ее размер нормальный?
  5. В какой таблице хранятся автоматически формируемые отчеты?

В PollSessionLog хранятся журналы опроса. Если вы задали их очистку, они должны были быть удалены. Судя по всему, с удалением есть какая-то проблема, из-за которой данные остались в системе. Иначе таблица PollSessionLog уменьшилась бы в размере.

Мы проверим правильно ли работает очистка журналов.

  1. Для вашей системы EXPRESS версии должно быть достаточно. Так как самая большая таблица хранит журналы опроса, нужно уменьшить время их хранения и отключить протоколирование отладочных сообщений, так как это увеличивает журнал опроса в несколько раз.
  2. Такого алгоритма у нас пока нет.
  3. В ней хранятся журналы опроса.
  4. Отключить протоколирование отладочных сообщений, уменьшить срок хранения.
  5. Таблица PreparedReport. Обратите внимание, что мы не оказываем поддержку и не обеспечиваем совместимость БД, поэтому работа с БД напрямую не рекомендуется.

Ну я же не прошу точный алгоритм. Нужно для оценки. Когда я по телефону задаю вопросы Вашим специалистам, то получаю промежуточные оценочные цифры. Поэтому и прошу сформулировать хоть примерные мысли на эту тему.

Ну а дальше я уж с божьей помощью и бубна разберусь :hi_hi_hi:

Оценку можно получить из размера таблицы и количества записей в ней.
Например, в нашей рабочей базе каждая архивная запись с данными по воде занимает примерно 240 байт данных (120 байт на хранение потребления, 120 - на хранение интеграторов). Запись с текущими интерграторами занимает примерно 125 байт.
За сутки получается 240 * (24 + 1) = 6000 байт архивных данных. К этому прибавляем 125 * 8 = 1000 байт текущих данных. Итого: 7000 байт данных на точку учета воды при опросе 8 раз в сутки.

189 точек учета за сутки сгенерируют 189 * 7000 = 1323000 байт данных (1.262 МБ). Умножим на 365 получим 461 МБ данных в год. Дополнительный объем дадут архивы событий и ошибок + журналы, которые ведет система.

Давайте все таки посмотрим, на что расходует место описанная вами система. Сформируйте и приложите отчет об использовании места на диске таблицами базы данных. Для этого выполните следующие действия:
1.Запустите SQL Server Management Studio
2. Выберите базу данных LERS
3. Щелкните на ней правой кнопкой и выберите в контекстном меню пункт Reports (Отчеты) → Standard Reports (Стандартные отчеты) → Disk Usage by Table (Использование дисковой памяти таблицей).
4. Сохраните отчет в PDF-файл (путем печати через PDF-принтер)
5. Приложите файл к данной теме.

Вот нужный отчет.
Использование дисковой памяти таблицей - 07.12.2015 17_57.pdf (70.1 KB)

Давайте посмотрим еще и отчет о состоянии системы (меня интересует первая страница).

Вот этот отчет.
Состояние системы.pdf (370 KB)

Я не вижу отражения проблемы в приложенный отчетах. Согласно обоим отчетам, база данных занимает ~2.7ГБ. В основном место расходуется на журналы опроса (1.7ГБ), нешатаные ситуации (650МБ) и данные из часовых архивов (250МБ). Отчеты, сохраняемые в базу данных пока занимают всего ~30 МБ.

Все в пределах нормы. Можно уменьшить детализацию журналов опроса, хранящихся в базе данных (в файлах журналов по-прежнему будут протоколироваться все сообщения).