5 sql-server-2008 sql-server sql-server-2008-r2 partitioning
我目前正在研究为相当大(800GB 且不断增长)的 SQL Server 数据库实施分区。表中的所有数据都与日期/时间相关,但是该日期/时间通常在另一个表中引用。例如,我有:
*Instances*
Timestamp (partition key!)
LocationID
...
*Events*
InstanceID
...
*Location*
ID
...
Run Code Online (Sandbox Code Playgroud)
这里,实例包含分区键。这引用了一个位置(LocationID > Location.ID)。此外,还有引用实例的事件表(InstanceID > Instance.ID)。
有什么方法可以将分区应用于此结构,而不必对表进行非规范化并将“时间戳”列复制到各处?
我正在使用 SQL Server 2008 R2。提前致谢。
嗯,我并不是说这很漂亮,但它可能有用。
首先,按伪日期时间对实例表进行分区。每天/每周/每月加载新的实例信息。然后为该数据分配一个新的主键 id。通常,您希望这是一个身份,但在这种情况下,您必须保证唯一性。现在,将其放入其自己的分区中。
这几乎是按日期时间。但是,引用实例的其他表将能够连接到正确的分区。
现在,如果事件和地点是相对较小的桌子,那么也许这就足够了。
否则,您可以对这些表重复操作。但是,如果您添加引用旧实例的新事件,事情就会变得更加困难。为了处理这个问题,您需要为每个分区分配一个新的事件 ID 范围,但在末尾留一个很大的间隙。然后,当您加载事件数据时,您需要根据实例 ID 的分区来确定将其放置在正确的分区中。您最终可能会将事件加载到多个分区中。
这是一个想法。
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |