由于我们的数据库变得太大,我们目前遇到了一些性能问题。有过去 10 年存储的数据,我看不出为什么必须将 2 年以上的数据与新数据存储在相同的表中。
现在,由于我在管理数据库方面没有非常丰富的经验,我正在寻找存档旧数据的最佳方法。
数据库中总共有大约 310'000'000 条记录。
数据库需要 250 GB 的硬盘空间。
我想过两种可能:
创建类似于生产服务器上的数据库,并将所有旧数据插入新数据库中。
使用与生产数据库中相同的表创建新模式 fe [hist]。将所有旧数据插入新模式中的这些新表中。
提前致谢
补充问题:
新创建的存档表是否也需要主键/外键?
或者他们应该只有列但没有键/约束?
上周我们的数据库发生了一些奇怪的事情。突然之间,应用程序阻止了我们无法保存新实体等的用户。在查看 SQL Server(2008 兼容模式 2005)的活动监视器后,我看到以下三个条目:

一段时间后,用户出现连接超时。当我杀死进程64时,他们可以再次正常保存。
问题是他们在块期间尝试保存的实体被多次插入数据库(最多 3 次),即使有代码可以防止这种情况发生(数字列必须是唯一的但没有约束...检查发生在代码中)。
我们使用实体框架 6.0。