我需要一些帮助。我有一个750 gb的生产数据库。(是的,是的,这个问题本来可以更早解决,但这超出了我的职权范围)这个数据库包含了多年来的数据。
当前的要求是
- 移动(不只是复制)旧数据到一个单独的存档数据库,以提高生产中的性能。也就是说,这些行将被从生产中永久删除。这将定期进行-我建议每月一次,在滚动的基础上。我不知道归档数据库是否会在不同的服务器上,可能会也可能不会。
- 创建一个报告环境,使其包含归档数据库和生产数据库的联合。问题在于,由生产数据组成的部分必须每天至少更新一次。这个环境可能不在生产服务器上(但我可能错了!)
对于这个问题,让我们假设模式在任何地方都是相同的:)所有表都有一个主键——INT NOT NULL IDENTITY(1,1)。我们确实能够通过SAN创建产品的快照副本。主键必须保留
迄今为止考虑过什么
- 我们已经考虑过复制和日志传送,但这两种方式都不足以使报告数据库成为生产数据库和归档数据库的联合。
- 我们已经考虑了分区视图,但是主键是一个IDENTITY,因此不能工作。
- 我们考虑过分区,但我不赞成每天使用ETL,因为它需要数百gb的I/O(我们不能利用SAN快照)。
- 最后,我正在考虑一种自定义应用程序方法,它将模仿SQL Server复制所完成的一些功能,但具有比现有功能更具体的功能。我真的想避免做一些非常定制的事情。
我在这里错过了什么?这不是唯一的需求。
正如@adriamn所问的,我也有同样的问题
你有一个大的表,有大量的行,不能为你的目的扩展,例如,因为锁,索引等?
由于历史数据似乎是只读的,您可以轻松地将它们分成不同的表,例如按月划分,这无关紧要。关键是,您可以将这些只读数据移动到不同的服务器,使用只读副本扩展它们等等。
重要的是,您在运行时将数据划分到不同的表中,并且从数据库模式的角度来看,没有单点故障(或争用)。