首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否应该在用户注销后从记录中清除会话表?

是否应该在用户注销后从记录中清除会话表?
EN

Stack Overflow用户
提问于 2016-11-19 06:17:54
回答 1查看 44关注 0票数 0

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

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

我考虑将数据保留在同一个会话表中。在查询特定记录时,我使用两个字段进行查询:(idPeople (不是唯一的)和撤消(0或1)),例如SELECT * FROM session WHERE idPeople = "someValue" AND revoked = 0。然后,如果需要的话,在用户登录或退出时更新记录。这么大的桌子会影响到这一点吗?或者MySql会处理这件事?还有什么是我看不到的其他影响呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-19 06:42:39

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

第二,这种类型的表格总是触发您提出的问题,只有在您评估和回答了一些初步问题之后,才能给出最好的答案,例如:

  1. 当你想检查一个用户的活动时,过去有多远才有意义呢?一个月?一年?
  2. 您希望保留此信息的最长时间是什么(甚至使用非常规查询来检索?)
  3. 我希望在这个表上被问到什么类型的问题(查询)?

如果您回答了这些问题,您可以考虑以下选项:

  1. 有一个例行进程,每天运行一次(午夜或系统负担得起的任何其他时间),删除时间戳超过一个月(或任何其他适合您需要的时间)的行。
  2. 与上述相同,但首先将这些记录复制到“历史”表中,
  3. 通过添加一些字段(如上面所建议的)和索引,将表的结构更改为更有效的结构,这些字段和索引将为您的“选择”需求提供很好的答案。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40689845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档