更好的数据聚合性能解决方案,以基于Laravel MySQL应用程序中的时区显示[关闭]

mccptt67  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(43)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

15天前关闭
Improve this question
我们正在开发一个网站,它将有大量的用户数据在基表。时间戳保存在UTC格式的MySQL表。在应用程序的 Jmeter 板将显示在不同的图表汇总数据,用户也可以选择“时区”。
在更改时区时,应相应地选择/调整数据。为了更好的应用程序性能,我们希望将 Jmeter 板的汇总数据存储在一些报告表中。
以下是一些时区的例子:
尤克拉,澳大利亚是UTC +08:45,加德满都,亚洲是UTC +05:45,喀布尔,亚洲是UTC +04:30,马克萨斯,太平洋是UTC -09:30。
根据我们的理解,时区差异至少为15分钟。
因此,我们认为一种方法是基于15分钟的时间段将数据聚合在报告表中。这意味着从8:00到8:15的数据将被计算并存储在一个表行中。
8:15到8:30的数据将存储在下一行,依此类推。
有没有人可以指导我们,什么是更好的解决方案,我们的要求?

mzmfm0qo

mzmfm0qo1#

是的,你的方法是合理的。但就像所有的事情一样-这取决于。
在这种情况下,具体取决于您要查询的内容。如果您预先聚合到15分钟的存储桶中,那么即使根据时区进行了调整,也会以15分钟为间隔进行自然分区。如果您选择了1小时或30分钟的存储桶,那么对于某些时区,当使用看起来像正常分区的分区时,数据将位于两个不同的桶中使用15分钟的时段可以避免这个问题。正如你所发现的,所有现代时区都与UTC有一定的小时偏移量,或者是0、30或45分钟-所以15分钟的时段是理想的。
在查询时,您可以将给定的本地时间转换为UTC,并根据UTC进行查询。如果用户已经被限制为选择整个日期值,或以15、30或60分钟为间隔的日期时间值,则分区将与您的预聚合数据对齐。
也就是说,还有其他方法。我能想到的两个你应该探索:
1.是否需要按 * 所有 * 时区查询数据?如果您只关心几个时区,则可以保留原始的UTC timestamp列,只需为您关心的每个时区添加另一个datetime列,存储该时区的等效本地日期和时间。
1.数据是否需要按时间查询?或者只按日期查询?如果是后者,那么您可以保留一个UTC timestamp列,并保留一个单独的date列,不包含任何时间组件。仅日期列非常适合生日,周年纪念日,就业日期和其他类型的“工作日”。

相关问题