我目前正在尝试找出一种解决方案,以便对经常变化的数据进行最佳优化。服务器正在运行IIS / SQL Server,它是一个ASP.NET Web API应用程序。我的表结构类似于以下内容:
用户表: UserID PK
状态表: StatusID PK, 标题varchar
UserStatus表: UserID PK(CLUSTERED), StatusID FK(非聚集), Date DateTimeOffset(可能的索引) - 这将用作到期日期。旧记录变得无关紧要。
用户表中将有大约5000多条记录。状态表将有大约500条记录。在任何给定时间,UserStatus表都会经常更改(每5-30秒更改一次)到StatusID和Date Fields,范围为0到1000个用户。此UserStatus表还将对其执行频繁的SELECT查询,并过滤掉具有旧/不相关日期的记录。
是否有人建议这样的场景?还有其他方法我不考虑吗?
答案 0 :(得分:1)
鉴于您所谈论的记录数量,我将使用tsql Merge来更新现有记录,并使用一个有效的语句添加新记录。
根据您提到的设计,您应该能够运行定期的maint脚本来修复任何碎片问题。
可以缩放解决方案。如果记录得到了发生一些减速的点,我会考虑SSD,其中碎片不是问题。
如果SSD的缺点使其不受欢迎,您可以查看内存中的OLTP。