Удалить сеанс из базы данных после его истечения? - PullRequest
2 голосов
/ 04 января 2012

Это может быть глупый вопрос, но мне было интересно, будет ли хорошей идеей удалять все «истекшие» сеансы из моей базы данных каждые 15 минут?

Или просто оставить там? Сессия истекает через X минут, она больше не нужна, кажется, она просто занимает место?

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Когда моя команда развертывает состояние сеанса SQL Server в приложении .NET, мы просто создаем задание с агентом SQL Server, чтобы очистить сеансы с истекшим сроком ночи (или через определенный интервал).

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

1 голос
/ 04 января 2012

Если вы используете стандартное состояние сеанса SQL Server, старые сеансы автоматически удаляются для вас. До тех пор, пока старые записи не будут удалены, срок действия сессий не истекает, поскольку поставщик не отслеживает активно столбец Expires в таблице сессий.

Утилита установки / настройки создает задание агента SQL, которое вызывает хранимую процедуру DeleteExpiredSessions каждые 60 секунд. Это означает, что агент SQL должен быть запущен для истечения срока действия сеанса и для очистки таблицы.

0 голосов
/ 04 января 2012

Если ваш стол выглядит так

SessionId datatype,
SessionLastTouch datetime

затем при регистрации нового сеанса выполните некоторую очистку после записи (проблема сеанса или касание) в таблицу, например:

delete from YourSessionsRegister WHERE SessionLastTouch < DATEADD(min, -15, GETDATE())

НО

Возможно, лучшим способом будет очистка регистра сеанса на основе некоторого расписания - чтобы уменьшить нагрузку на БД в часы пик - просто создайте задание, которое очищает регистр каждую ночь или что-то в этом роде. как это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...