Внимание! Неправильная работа с базой данных несёт в себе риск потери собранной информации. Если самостоятельно выполнить очистку сложно, пожалуйста, свяжитесь с техподдержкой help@kickidler.com

Чтобы удалить видео из базы данных, выполните следующие действия

1. Остановите службу сервера nns (Путь: Панель Управления\Администрирование\Службы),
2. Откройте командную строку от имени администратора,
3. Если ваш сервер установлен в директорию по умолчанию, запустите PostgreSQL с помощью команды

"C:\Program Files\KickidlerNode\pgsql\bin\pg_ctl.exe"  start -D "C:/Program Files/KickidlerNode/pgsql/data" -w -o "--logging-collector=on --log-destination=stderr --log-directory=pg_log --log-filename=ipg-%a.log --log-truncate-on-rotation=on --log-rotation-age=1d --log-line-prefix=\"%m \" --log-timezone=\"Europe/Moscow\" --log-statement=ddl --log-connections=on --log-disconnections=on --listen-addresses=127.0.0.1 --port=5439 --max-connections=100 --shared-buffers=262144kB --wal-buffers=5242kB --effective-cache-size=734317kB --work-mem=7811kB --maintenance-work-mem=39059kB --checkpoint-segments=64 --checkpoint-completion-target=0.9"

4. Подключитесь к PostgreSQL с помощью команды:

"C:\Program Files\KickidlerNode\pgsql\bin\psql.exe" -h 127.0.0.1 -p 5439 -U kickidler_node

5. Проверьте объемы видео по датам с помощью запроса:

 select pos::date, pg_size_pretty(sum(octet_length(data))) from video_frame group by pos::date;

6. Удалите видео одним из следующих методов:

a) Удаление всего видео

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

truncate video_frame;
truncate video_sequence;

Eсли после выполнения команды появились ошибки, повторите запрос со словом cascade в конце.

b) Удаление всего видео за определенный период

Для удаления данных за какой-то конкретный день выполните следующие команды:

Вывод дат, за которые есть видео в базе данных:

select pos::date from video_frame group by pos::date;

Удаление видео за определенный день:

delete from video_frame
WHERE pos::date = '20160523';

delete from video_sequence 
WHERE first_frame_pos::date = '20160523';

Удаление видео за несколько разных дней:

delete from video_frame 
WHERE pos::date = '20160523' OR pos::date = '20160524' OR pos::date = '20160525';

delete from video_sequence 
WHERE first_frame_pos::date = '20160523' OR first_frame_pos::date = '20160524' OR first_frame_pos::date = '20160525';

Удаление видео за период:

delete from video_frame
WHERE pos::date >= '20160523' AND pos::date <= '20160525';

delete from video_sequence
WHERE first_frame_pos::date >= '20160523' AND first_frame_pos::date <= '20160525';

где 20160523 - дата дня, за который вы хотите удалить видео, в формате YYYYMMDD

c) Удаление всего видео по определенному пользователю

Для удаления данных по определенному пользователю выполните следующие команды:

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

SELECT online_session.user_name, online_session.user_domain, online_session.computer_name, pg_size_pretty(sum(octet_length(data))) 
FROM video_frame 
JOIN video_sequence ON (video_sequence.id=video_frame.sequence_id) 
JOIN online_session ON (video_sequence.online_session_id=online_session.id) 
GROUP BY online_session.user_name, online_session.user_domain, online_session.computer_name
ORDER BY sum(octet_length(data)) DESC;

Удаление видео по пользователю

DELETE FROM video_sequence WHERE id IN(
    SELECT vs.id FROM video_sequence AS vs
    JOIN online_session AS s ON(vs.online_session_id=s.id)
    WHERE
        s.user_name='Эдуард' AND
        s.computer_name='win10x64' AND
        s.user_domain='workgroup'
    LIMIT 100
);

Здесь s.user_name - имя пользователя, s.computer_name – имя компьютера,   s.user_domain – имя домена, по которым необходимо удалить видео. Если некоторых из параметров нет, то их в запросе оставить пустыми. Также выведено ограничение операций (Limit=100), который можно менять при необходимости.

Внимание! Эти команды высвобождает пространство в базе данных и делают его доступным для повторного использования базой данных. Если необходимо освобождённое место вернуть операционной системе выполните шаг 7.

7. После команд удаления выполните команду оперативного освобождения места

Внимание! Этот режим очистки требует дополнительное место на диске, так как он записывает новую копию таблицы и не удаляет старую копию до завершения операции.
vacuum full;