在会话过期后从数据库中删除会话

本文关键字:会话 删除 数据库 过期 | 更新日期: 2023-09-27 18:19:27

这可能是一个愚蠢的问题,但我想知道每15分钟从我的数据库中删除所有过期的"会话"是否是个好主意?

还是把它留在那里?会话在X分钟后过期,它不再有用,似乎只是占用了空间?

在会话过期后从数据库中删除会话

当我的团队在.NET应用程序中部署SQL Server会话状态时,我们只需使用SQL Server Agent创建一个作业,即可每晚(或以适当的间隔)清理过期的会话。

除非你有大量的流量,否则你可以在方便的时候这样做,而不用担心立即删除未使用的会话,但清理绝对是个好主意。

如果使用标准的SQL Server会话状态,则会自动删除旧会话。在删除旧条目之前,会话不会过期,因为提供程序不会主动监视会话表中的Expires列。

安装/配置实用工具会创建一个SQL代理作业,该作业每60秒调用一次DeleteExpiredSessions存储过程。这意味着SQL代理需要运行,会话过期才能工作,表才能清理。

如果您的表看起来像

SessionId datatype,
SessionLastTouch datetime

然后在注册新会话时,在将(会话问题或触摸)写入表后进行一些清理,如下所示:

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

但是

可能更好的方法是根据一些时间表清理会话寄存器,以减少高峰时段的数据库负载,只需创建一个作业,每天晚上或smth清理寄存器。像这个