All*_*lly 5 sql-server filegroups
我被分配了一个任务来创建四个文件组(每个卷一个)定位表,以便它们的定位方式在 ETL 过程中不会同时读取和写入文件组。
我已经逐步完成了所有的包、数据流任务、过程和视图,并记录了从哪些表中读取以及以何种顺序读取。
我现在需要编写一个查询来确定表的最佳位置。
在逻辑方面,我有以下几点,将其分解为以下规则。
对于每个序列,源表和目标表不能在同一个卷上。表不能存在于多个卷上。
我很想听听人们对这个过程是否值得的意见,但无论如何我都会感谢一些帮助解决查询。
您可以在下面找到用于创建表和插入一些测试数据的脚本。
在此先感谢您的任何建议。
-- Create table
CREATE TABLE [dbo].[TestData]
(
[TestDataID] [smallint] IDENTITY(1,1) NOT NULL,
[Src] [nvarchar](50) NOT NULL,
[Dest] [nvarchar](50) NOT NULL,
[Seq] [int] NOT NULL,
CONSTRAINT PK_TestData PRIMARY KEY CLUSTERED (TestDataID)
)
GO
-- Insert data
INSERT INTO TestData(Src, Dest, seq)
SELECT 'A', 'B', 1
UNION ALL
SELECT 'A', 'C', 1
UNION ALL
SELECT 'C', 'D', 2
UNION ALL
SELECT 'A', 'D', 3
UNION ALL
SELECT 'B', 'D', 3
GO
Run Code Online (Sandbox Code Playgroud)
坏消息。您所说的 ETL 过程 - 这意味着繁重的数据负载,并且插入/更新/删除有一个磁盘瓶颈:事务日志文件。您可以添加多个事务日志文件,但它们是按顺序使用的,而不是负载平衡的(除了在一些真正的边缘情况场景中。)
相反,您需要的是多个数据库。在数据仓库中,您通常使用与目标数据库不同的源数据库,例如临时数据库。这样,您可以将其数据库放在不同的驱动器上(甚至不同类别的驱动器)。例如,一些临时数据库位于廉价的本地 SSD 上。
如果您确实发现自己在数据文件读取或写入方面遇到存储瓶颈,那么最好通过添加内存(以缓存数据并完全避免读取)或将数据条带化到更多而不是更少的驱动器来解决该问题。通过将数据文件分割成更小的部分,并为每个文件提供更少的驱动器,通常会使问题变得更糟。
归档时间: |
|
查看次数: |
447 次 |
最近记录: |