gpt4 book ai didi

mysql - 用户注销后是否应该从记录中清除 session 表?

转载 作者:行者123 更新时间:2023-11-29 11:10:22 27 4
gpt4 key购买 nike

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

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

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

最佳答案

首先,最好向表中添加一个唯一字段(例如 SESSION_ID,它可以是一个运行中的自动递增数字),将此字段定义为唯一 ID,然后使用它可以快速找到要更新的记录(即 revoke=1)。

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

  1. 当您希望检查用户的事件时,追溯到过去多久才有意义?一个月?一年?

  2. 您希望保留此信息的最长期限是多少(即使使用非常规查询来检索?

  3. 我希望在此表格中提出什么类型的问题(查询)?

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

  1. 有一个每天运行一次的例行进程(在午夜或您的系统可以承受的任何其他时间),该进程将删除时间戳早于一个月(或任何其他适合您的时间段)的行。需要),或者

  2. 与上面相同,但首先将这些记录复制到“历史”表中,

  3. 通过添加一些字段(如上所述)和索引,将表结构更改为更高效的结构,这将为您的“SELECT”需求提供良好的答案。

关于mysql - 用户注销后是否应该从记录中清除 session 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40689845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com