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

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

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

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

除非你有大量的流量,否则只要方便,你就可以做到这一点,而不必担心立即删除未使用的会话,但清理它绝对是一个好主意。

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

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

如果你的表看起来像那样

 SessionId datatype, SessionLastTouch datetime 

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

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

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