用户退出后是否应从记录中清除会话表?

时间:2016-11-19 06:17:55

标签: mysql session architecture storage

我正在使用MySql表来存储当前登录用户的会话记录。一旦用户注销,我更新同一记录中的几个字段并标记(撤销)它不应再次使用。因此,对于每个LogIn,都会创建一条新记录。这符合我的目的,但事实证明这张桌子会变得越来越大。

存储会话的标准方法是什么?被撤销的那些是否应该存储在一个单独的表中,还是应该被删除或留在同一个表中?

我考虑将数据保留在同一个会话表中。在查询特定记录时,我查询两个字段:(idPeople(非唯一)和revoked(0或1)),例如SELECT * FROM session WHERE idPeople = "someValue" AND revoked = 0。然后在用户登录或记录时根据需要更新记录。表的巨大尺寸会影响这个吗?或者MySql会处理这个?还有什么其他后果我无法看到?

1 个答案:

答案 0 :(得分:1)

首先,向表中添加唯一字段(例如SESSION_ID,可能是正在运行的自动增量编号)可能是个好主意,将此字段定义为唯一ID,并将其用于快速找到要更新的记录(即revoke=1)。

其次,这种类型的表总是触发您提出的问题,只有在您评估并回答一些初步问题后才能给出最佳答案,例如:

  1. 当您想要检查用户的活动时,走了多远才有意义?一个月?一年?

  2. 您可能希望保留此信息的最长时间是什么(即使使用非常规查询来检索?

  3. 我希望在这张桌子上询问什么类型的问题(查询)?

  4. 您回答这些问题后,可以考虑以下选项:

    1. 有一个例行程序,每天运行一次(午夜或系统可以负担得起的任何其他时间),这将删除时间戳比一个月(或任何其他适合您的期间)更长的行需要),或

    2. 与上述相同,但会先将这些记录复制到"历史记录"表,

    3. 通过添加一些字段(如上所述)和索引,可以为您的" SELECT"提供更好的答案。需求。