为数据仓库创建 SQL Server 数据库的最佳实践

Posted

技术标签:

【中文标题】为数据仓库创建 SQL Server 数据库的最佳实践【英文标题】:Best practice for creating SQL Server databases for a data warehouse 【发布时间】:2011-01-25 12:41:39 【问题描述】:

我即将为我们的数据仓库创建 2 个新的 SQL Server 数据库:

    数据仓库 - 存储数据的地方 Datawarehouse_Stage - 完成 ETL 的地方

我预计这两个数据库都能够达到 30GB,并且每年增长约 5GB。它们可能不会超过 80GB(当我们开始存档时)。

我正在尝试决定在创建这些数据库时应该使用哪些设置:

初始大小应该是多少? ...我应该在创建数据库后立即增加它的大小吗? 自动增长设置应该是什么?

我正在寻求有关创建这些数据库的最佳实践建议。

更新:我建议在创建数据库后立即增加数据库大小的原因,因为您不能将数据库缩小到小于其初始大小。

【问题讨论】:

AH - 取出 sql server。数据仓库的表设计与产品关系不大。另外,每年 30gb 和 5gb 不是数据仓库。那是一个家庭系统。我刚刚做了一个数据仓库,数据负载为150gb。每天。存档 2 年。 @TomTom 数据仓库不是由它所拥有的数据量来定义的。 啊,它是,部分。如果您处理“玩具数据”,那么从性能角度来看有意义的设计决策将毫无用处。出于性能原因,存在整个星型非规范化数据模式。对少量数据无用。 永远不要假设数据库的增长是线性的。 这么好的问题,没有给出真正的答案 【参考方案1】:

•初始大小应该是多少?

45GB? 30 + 3 年的增长,特别是考虑到这适合低端廉价 SSD 磁盘;)如果您的最小 SSD 为 64GB,则大小不是问题。

...我应该在创建数据库后立即增加它的大小吗?

那会有点愚蠢,或者?我的意思是,为什么要创建一个小尺寸 jsut 的数据库来调整 IMMEDIEATLEY 的大小,而不是在第一步中将正确的大小放入脚本中。

自动增长设置应该是什么?

这不是一个数据仓库问题。没有自动增长。自动增长对您的光盘进行碎片整理。

确保按照最佳做法(64kb 节点大小、对齐分区)格式化光盘。

【讨论】:

我之所以说我应该创建一个小的初始大小然后增加它,是因为您不能将 db 文件缩小到小于初始大小。所以,如果初始大小很大,你就会被困住。 30gb 对你来说很大吗?我的意思是,真的,考虑到当今的技术微乎其微。 @TomTom 好吧,如果 30gb 很小,那很好。但我仍然想以最好的方式创建这个数据库。 (我的错误包括大小并进入这个我的数据库比你的讨论更大) Craig,如果您认为需要将数据库缩小到 30gb 以下(大概是在删除一些数据之后?),那么这可能是使用较小初始大小创建它的原因。然而,在大多数情况下,这似乎是一个不太可能的要求。在任何数据库中都很少需要收缩,因为数据往往会增长而不是收缩。在某些情况下,在创建测试/开发环境时缩小可能很有用,但是 30GB 已经很小了。所以我想问题仍然存在:你为什么要在未来缩小数据库? @dportas 感谢您的评论。如果我需要一个副本来开发/测试,我可能想缩小数据库。我可以在我的开发/测试服务器上恢复,缩小数据库,然后继续工作。

以上是关于为数据仓库创建 SQL Server 数据库的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

为 SQL Server 中的数字列选择最佳数据类型

表与视图 SQL Server 的性能

SQL Server 2008创建数据库

在 SQL Server 数据库中将长日期时间转换为实际日期时间的最佳方法是啥?

在 SQL Server 中为关键数据库还原数据库的最佳方法

将 SQL Server 数据库导出到 sqlite(或 SQL Server Compact)的最佳方式