每次发生自动保存事件时,我都有一个表中的时间戳列表(可能有数百万)。我想跟踪人们在页面上花费的时间,因此每次他们输入单词时,我都会向会话ID发送时间戳到数据存储。结束时间戳 - 开始时间戳=在页面上花费的时间量。
如果我有一个包含数百万个这样的时间戳的数据库,那么查询页面花费的时间量的最有效方法是什么?
我希望能够在用户级别以及聚合上执行此操作(用户在第X页上花费的平均时间)。
我也想做这个实时。能够实时检索用户在第X页上花费的时间。
我在考虑将数据存储在内存中,因为您可能会同时获得许多时间戳,这会使数据库过载,因为我们不断更新信息。我想将数据存储在内存中作为键值对,每隔X分钟,将数据从内存发送到数据存储(我计算每个会话ID花费的时间和存储时间)。所以我将数据存储在内存中 - key是post id,value是开始时间和结束时间的数组。每隔X分钟,我就将数据发送到数据库;我会在数据库中存储会话ID,页面ID,用户ID和花费的时间(通过执行end_time - begin_time计算)。
这是解决我问题的好方法吗?我错过了什么?