首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据库拆分为多个数据库

将数据库拆分为多个数据库
EN

Database Administration用户
提问于 2012-10-03 11:57:43
回答 4查看 6.5K关注 0票数 2

我有一个数据库,其中包含大量的测量(20+仪器,每一个记录每秒60次测量,每一次测量包含10+复杂值)。所有的度量都存储在一个表中,并且标准化,索引用于允许按仪器、时间和其他列进行过滤。

不用说,每6个月,数据库就会变得如此庞大,以至于预定的索引维护任务需要超过一天的时间才能完成。到目前为止,我不得不关闭数据库两次,将近两天,以运行脚本备份,然后删除旧数据,以“刷新”它。

我的同事建议修改(逻辑,IMHO),根据仪器和时间将数据库物理分离成多个数据库。此外,不同的客户端将访问不同的设备,因此保持每个设备的分离将简化多租户场景(为客户提供备份、迁移到其他机器等)。

换句话说,我将从以下几个方面着手:

代码语言:javascript
运行
复制
  Big database
     - AllMeasurements table

对此:

代码语言:javascript
运行
复制
  Instrument001 database
     - Measurements-2012-01 table
     - Measurements-2012-02 table
     - Measurements-2012-03 table

  Instrument002 database
     - Measurements-2012-01 table
     - Measurements-2012-02 table
     - Measurements-2012-03 table

由于我的DAL是通过存储库模式抽象的,因此很容易将底层实现交换为按需切换数据库和表,因此编写这一点不会有问题。

但我现在想知道这是否真的是最好的方法?

说得通吗?

编辑我正在使用Server 2008,如果这是相关的话。

EN

回答 4

Database Administration用户

回答已采纳

发布于 2012-10-03 12:03:26

如果问题是这个表变得很大,您应该考虑对它进行分区(按日期划分,因为您的数据似乎是基于时间的)。

这样,SQL引擎查询计划器在查询时可能会忽略某些分区(如果这些分区包含的数据太老,无法在查询结果中显示),因此性能更好。

此外,分区将由数据库引擎透明地处理,因此您的代码中没有什么可更改的。

另一个优势是,您可以想象将包含很少被访问的数据的“旧”分区移动到较慢(且更便宜)的存储。

还可以设置要分区的索引,以便只能重新生成索引的一部分:http://msdn.microsoft.com/en-us/library/ms187526.aspx

索引分区是一个不同于表分区的特性,它可以避免您在不需要的情况下重建整个索引。

票数 4
EN

Database Administration用户

发布于 2012-10-03 12:06:21

如果表是连续增长的,那么最好的做法是分离/划分它们。然而,我不会为每个仪器实现一个数据库,而是为每一个存储测量数据的仪器建立一个新的表格。您还可以合并一个引用该仪器的MeasurementDates表,该表可以显着地缩小设备的大小,而不是为单个仪器设置一个重复的Measurements-2012-NN表。

http://msdn.microsoft.com/en-us/library/ms188730.aspx

http://msdn.microsoft.com/en-us/library/ms188730(v=sql.105).aspx

票数 1
EN

Database Administration用户

发布于 2012-10-06 11:12:42

按照这个速度,你每月增加大约5亿行,对吧?每年增加60亿行。按照我的想法,这使您坚定地处于非常大的数据库(VLDB)领域。

VLDB确实是一个特例。dba.stackexchange.com甚至连一个标签都没有。(我试着加一个。你将成为我们的专家。)你必须做出很多真正正确的决定才能获得出色的表现。

这些天,当我听说VLDB问题时,我的第一个问题总是关于硬件。这种野兽是否运行在适合于如此大小的数据库的硬件上?很多公司从一开始就开始向VLDB靠拢。很多公司。性能的最大提升可能来自于有关硬件的新决定。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/25499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档