Перейти к содержанию

Обслуживание системы

Замена лицензии

Параметры текущей используемой лицензии вы можете посмотреть в приложении Tessa Admin на вкладке Информация.

Лицензия - это файл с расширением *.tlic, который хранится на сервере приложений Tessa.

Для замены лицензии на новую необходимо:

  1. На сервере приложений Tessa в файле app.json в папке веб-сервиса web найти строку вида "LicenseFile": "@Syntellect.tlic",

    Note

    Указанный путь к файлу app.json актуален при типовой установке платформы.

    В строке указывается путь к файлу лицензии (@ перед именем файла означает, что файл лицензии лежит в той же папке, что и текущий конфигурационный файл).

  2. Скопируйте новый файл лицензии на сервер и укажите путь к новому файлу лицензии, или замените старый.

    Note

    Для редактирования файла app.json требуются права администратора.

    Данный конфигурационный файл относится также и к легкому клиенту, поэтому отдельно для легкого клиента заменять файл лицензии не требуется.

  3. Для сервиса Chronos также необходимо заменить файл лицензии или указать путь к новой лицензии в конфигурационном файле app.json.

  4. Поле этого перезапустите пул приложений tessa.

Перестроение индексов

После длительной работы системы или массового создания карточек (десятки тысяч карточек) основные индексы в таблицах фрагментируются. В т.ч. фрагментируются кластерные индексы по ID карточки, производительность которых напрямую определяет время открытия карточек. В связи с этим рекомендуется вызывать перестроение индексов.

Ниже приводится скрипт по перестроению всех индексов во всех таблицах базы данных, который рекомендуется к периодическому выполнению для базы данных Tessa. Рекомендуется запускать скрипт раз в месяц или после массового создания более чем 50000 карточек.

Warning

Скрипт выполняется длительное время и “парализует” работу системы. Поэтому его следует вызывать ночью или на выходных, когда пользователи не работают в системе и все вычислительные мощности сервера СУБД SQL Server могут быть выделены для перестроения индексов.

DECLARE @TableName varchar(255) DECLARE TableCursor CURSOR FOR

SELECT table_name FROM information_schema.tables WHERE table_type = 'base table'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName

WHILE @@FETCH_STATUS = 0 BEGIN

DBCC DBREINDEX(@TableName,' ',90)

FETCH NEXT FROM TableCursor INTO @TableName

END

CLOSE TableCursor

DEALLOCATE TableCursor

Статистика по таблицам

Администратор системы может выполнить запрос SQL, чтобы получить подробный отчёт по таблицам и материализованным представлениям по таким показателям, как распределение свободного и занятого места для индексов и всей таблицы (здесь и далее под “таблицей” подразумевается, как собственно таблица, так и материализованное представление).

Отчёт содержит следующие колонки:

  • object_id – идентификатор таблицы в метаинформации SQL, который можно использовать для получения дополнительной информации из системных таблиц sys.***.

  • name – имя таблицы.

  • type – тип объекта (U – таблица, V – представление).

  • total_rows – общее количество строк в таблице.

  • total_space – общий размер таблиц в КиБ (1 КиБ = 1024 байт), включая незадействованное на страницах место. Складывается из общего используемого места used_space и общего неиспользуемого места unused_space.

  • used_space – общее используемое место в КиБ.

  • unused_space – общее неиспользуемое место в КиБ.

  • index_space – общее место в КиБ, занимаемое страницами с индексами.

  • data_space – общее место в КиБ, занимаемое страницами с данными.

  • is_heap – признак того, что таблица является heap’ом, т.е. не содержит кластерного индекса. Значение “0” определяет наличие кластерного индекса, а значение “1” - его отсутствие.

  • partitions – количество партиций (разделов), которые используются таблицей. Значение будет больше “1” только для тех таблиц, для которых явно задана схема партиционирования в SQL. Платформа Tessa не поддерживает создание и редактирование партиций штатными средствами, но платформа совместима со схемами партиционирования, заданными в SQL.

  • indexes – общее количество страниц, занимаемых индексами.

Результат запроса:

Текст запроса SQL:

SELECT o.[object_id] , name = s.name + '.' + o.name , o.[type] , i.total_rows , total_space = CAST(i.total_pages * 8. / 1024 AS DECIMAL(18,2)) , used_space = CAST(i.used_pages * 8. / 1024 AS DECIMAL(18,2)) , unused_space = CAST((i.total_pages - i.used_pages) * 8. / 1024 AS DECIMAL(18,2)) , index_space = CAST(i.inx_pages * 8. / 1024 AS DECIMAL(18,2)) , data_space = CAST(data_pages * 8. / 1024 AS DECIMAL(18,2)) , is_heap , i.[partitions] , i.[indexes] FROM sys.objects o JOIN sys.schemas s ON o.[schema_id] = s.[schema_id] JOIN ( SELECT i.[object_id] , is_heap = MAX(CASE WHEN i.index_id = 0 THEN 1 ELSE 0 END) , total_pages = SUM(a.total_pages) , used_pages = SUM(a.used_pages) , inx_pages = SUM(a.used_pages - CASE WHEN a.[type] !=1 THEN a.used_pages WHEN p.index_id IN(0,1) THEN a.data_pages ELSE 0 END) , data_pages = SUM(CASE WHEN a.[type] != 1 THEN a.used_pages WHEN p.index_id IN (0,1) THEN a.data_pages END) , total_rows = SUM(CASE WHEN i.index_id IN (0, 1) AND a.[type] = 1 THEN p.[rows] END) , [partitions] = COUNT(DISTINCT p.partition_number) , [indexes] = COUNT(DISTINCT p.index_id) FROM sys.indexes i JOIN sys.partitions p ON i.[object_id] = p.[object_id] AND i.index_id = p.index_id JOIN sys.allocation_units a ON p.[partition_id] = a.container_id WHERE i.is_disabled = 0 AND i.is_hypothetical = 0 GROUP BY i.[object_id] ) i ON o.[object_id] = i.[object_id] WHERE o.[type] IN ('V', 'U') AND o.is_ms_shipped = 0 ORDER BY i.total_pages DESC

Back to top