Как ускорить работу неверсионной базы данных временных рядов?

Неверсионной называется база данных временных рядов, которая хранит только актуальные данные и метаданные временных рядов. В такой базе данных временных рядов отсутствует информация об изменениях в данных и метаданных рядов, которые были сделаны когда-либо в прошлом.

Совет. Как узнать, является ли база данных временных рядов версионной?
База данных временных рядов является версионной, если в её свойствах на странице «Атрибуты» установлен флажок «Вести историю изменений». По умолчанию флажок установлен, изменение значения флажка доступно только при создании базы данных временных рядов.

Если база данных временных рядов была создана в Prognoz Platform 8.1 или ранее, то её работу можно ускорить за счет оптимизации системных индексов. Для выполнения оптимизации необходимо использовать метод IRubricator.AlterAndSave.

Примечание. Если неверсионная база данных временных рядов создана в Prognoz Platform 8.2 или более поздних версиях, то её системные индексы уже оптимизированы для максимального быстродействия.

Пример Fore

Для выполнения примера в репозитории предполагается наличие неверсионной базы данных временных рядов с идентификатором «TSDB», созданной в Prognoz Platform 8.1 или ранее.

Добавьте ссылки на системные сборки: Cubes, Metabase.

Sub UserProc;
Var
    mb: IMetabase;
    TSDB: IRubricator;
Begin
    // Получаем базу данных временных рядов
    mb := MetabaseClass.Active;
    TSDB := mb.ItemById("TSDB").Edit As IRubricator;
    // Проверяем, является ли она неверсионной
    If Not TSDB.KeepHistory Then
        // Если база данных временных рядов
        // неверсионная, то выполняем оптимизацию
        TSDB.AlterAndSave;
    End If;
End Sub UserProc;

В результате выполнения примера будут оптимизированы системные индексы базы данных временных рядов.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Cubes;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    TSDB: IRubricator;
Begin
    // Получаем базу данных временных рядов
    mb := Params.Metabase;
    TSDB := mb.ItemById["TSDB"].Edit() As IRubricator;
    // Проверяем, является ли она неверсионной
    If Not TSDB.KeepHistory Then
        // Если база данных временных рядов
        // неверсионная, то выполняем оптимизацию
        TSDB.AlterAndSave();
    End If;
End Sub

См. также:

Вопросы и ответы