![]() |
|||
![]() |
![]() |
![]() |
|
![]() |
|
Таблица fragment_storageНазначение таблицы:Данная таблица используется сервером для сборки фрагментированных пакетов от
клиента. Фрагмент по получению записывается в large object (LO), и в таблицу
заносится запись, содержащая общее число пакетов, номер последовательности,
и идентификатор объекта LO. Таблица постоянно проверяется на наличие полного
комплекта всех фрагментов специальным процессом - defragmenter-ом, собранные
пакеты вставляются в межпроцессный канал и затем обрабатываются как обычно.
Создание таблицы: Таблица создается сервером или утилитой при помощи запроса SQL. Прототип
запроса находится в модуле database\init_db.h CREATE TABLE Fragment_storage (uin float8, seq int4, prt_num int2, prt_cnt int2, len int2, frg int4, frgtime int8); Таблица содержит три индекса на поля uin, prt_num, seq для ускорения работы
запросов. Индексы создаются следующим образом:
CREATE INDEX frg_uin ON Fragment_storage (uin); CREATE INDEX frg_prt ON Fragment_storage (prt_num); CREATE INDEX frg_seq ON Fragment_storage (seq); Примечание: Перед удалением записи из таблицы сначала удаляется ассоциированный с ней
LO с фрагментом. Таблица периодически очищается для освобождения дискового
пространства. При очистке удаляются поля, разность между значением которых
и текущим временем больше 120 секунд (максимальный таймаут протоколов)
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
Webmaster А.В.Шутко |
![]() |
![]() |