假设我有一个表,用于存储来自移动设备的跟踪信息(每条记录都有 deviceID、事务信息、一个 json 列,其中包含有关操作、操作时间、用户等的完整详细信息...),这是操作数据库。某些用户可能需要获取有关特定用户或设备的某个时间范围的跟踪信息。因此,使用过滤器进行简单的选择,不会影响数据插入。
其他一些用户将需要进行更大规模的分析操作,汇总数月收集的数据。我读到这个分析过程应该在分析数据库上完成,以免影响操作数据库。
但我有一个限制,只有一个 SQLServer 实例可用。
因此,我应该编写一个 ETL,在新数据库上定期批量复制数据,使用带有更多索引的同一个表,并且没有 json 列(以节省空间,因为对于我们需要的那种分析来说是无用的)
现在我的问题是,考虑到我们正在谈论操作表和分析表(不仅仅是操作数据库和分析数据库),并且在我的客户端,我只有一个 SQLServer 实例,这是否有意义将两个表保留在同一个 SQLServer 实例的同一个数据库中?与使用单个表进行操作和分析查询相比,我的性能是否有所提高?换句话说,我有两种选择,使用一个 SQLServer 实例:
- 在一张包含我需要的所有索引的表上插入数据,并查询该表以进行跟踪和分析
- 在一个索引很少的表上插入数据,然后将其复制到另一个索引较多且总体大小较小的表,并查询第一个表进行跟踪,查询第二个表进行分析
如果您告诉我,如果我将所有内容都放在同一个 SQLServer 上,则 1 和 2 在性能方面不会有太大差异,那么我会坚持使用 1,因为它更容易。
如果我在分析表上进行几分钟长的聚合,那么在操作表上写入的速度是否会比直接在操作表上进行分析的速度减慢或相同?
谢谢