分割数据库的提示

时间:2009-12-03 16:47:23

标签: sql-server data-warehouse

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

问题是这样的: - 我有一个数据库,每次由5-20个用户用于预订客户订单。 他们每天通过电话接收许多订单,因此订单的放置和产品\旧订单的查找必须快速。

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

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

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

我的主要目标是制作非常快速的报告(一些报告现在需要5分钟才能运行,而且数据越多,报告速度就会越慢)。 任何指导我正确方向的帮助都将深受赞赏。

2 个答案:

答案 0 :(得分:1)

查看Ralph Kimball的 Data Warehouse Toolkit 。只需一个简单的 star-schema 就可以加快报告速度。 here is an example 了解星型模式如何简化报告。

答案 1 :(得分:1)

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

如果您无法进一步优化OLTP端,我将完全使用Kimball数据仓库方法。使用SSIS或其他任何内容在常规​​数据库中更新数据,并将数据转换为星形。您应该找到的是,您的报告性能应该大幅提高,并且不会干扰OLTP /规范化方面的生产事务。

这可以改善到甚至可以使用备用周期保持两个数据库非常紧密同步的程度,这些备用周期之前通过报告不太适合报告的规范化数据库模式而被吃掉了。如果扩展,可以使用触发器或计划任务相对轻松地使仓库保持最新状态。

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