1

我已经阅读了几本关于 SQL Server 2005 的书籍,但没有找到我正在寻找的正确答案。

问题是这样的:-我有一个数据库,一次有 5-20 个用户使用它来预订客户订单。他们在一天内通过电话收到许多订单,因此下订单和查找产品\旧订单必须很快。

随着时间的推移,已经下了许多订单。有许多表包含此订单详细信息,并且有许多报告使用此数据。问题是报告很慢。索引有所帮助,但没有我预期的那么大。

在阅读了一番之后,我想尝试将数据库分为两部分 - 一个用于在线交易,一个用于报告。

如果您通过推荐一本书或网站来帮助我,我将非常感谢您,它将教我如何设计用于快速报告的数据库以及如何分离两个数据库 - 一个用于在线交易,另一个用于快速报告(这将是用于快速报告的数据仓库设计吗?)

我的主要目标是制作非常快速的报告(一些报告现在需要 5 分钟才能运行,并且随着数据的增加它会变得更慢)。任何帮助我指出正确方向的帮助都将不胜感激。

4

2 回答 2

2

查看 Ralph Kimball 的数据仓库工具包。只需一个简单的星型模式就可以加快报告速度。这是星型模式如何简化报告的示例

于 2009-12-03T19:38:16.113 回答
2

首先,一定要查看您现有的设计和工作量。

如果您不能进一步优化您的 OLTP 方面,我完全会使用 Kimball 数据仓库方法。使用 SSIS 或其他方式更新您在常规数据库上的数据,并将您的数据转换为星号。您应该发现,您的报告性能应该会显着提高,并且不会干扰您在 OLTP/规范化方面的生产事务。

这可以改进到您甚至可以使用空闲周期使两个数据库保持非常紧密的同步,这些空闲周期以前通过报告不太适合报告的规范化数据库模式而被消耗掉。如果您扩大规模,您可以使用触发器或计划任务相对轻松地使仓库保持最新状态,并提供更复杂的选项。

如果你的数据库不是特别大,这不一定需要在两个数据库中,你可以使用不同的模式来保持它们的逻辑组织,即使你拆分它,你也可以在你的 OLTP 数据库中放置视图来制作它们无需更改连接上的数据库即可使用。拥有单独数据库的主要好处是更改数据库范围的选项,例如排序规则或备份模型(当然,您也可以使用文件组来帮助解决此问题)。

于 2009-12-03T22:05:46.123 回答