首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询以查找对象的最佳文件组

查询以查找对象的最佳文件组
EN

Database Administration用户
提问于 2012-05-16 15:21:21
回答 1查看 455关注 0票数 5

我被分配了一项任务,创建四个文件组(每个卷一个),定位表,以便在ETL过程中不同时读取和写入文件组。

我已经逐步了解了所有的包、数据流任务、过程和视图,并注意到哪些表正在从、读到和按什么顺序读取。

现在我需要编写一个查询来确定表的最佳位置。

就逻辑而言,我有以下几点,将其分解为以下规则。

对于每个序列源表和目标表,不能在同一个卷上。表不能存在于多个卷上。

我很有兴趣听取人们对这个过程是否值得的意见,但无论如何,我希望得到一些帮助来解决这个问题。

下面可以找到创建表的脚本并插入一些测试数据。

谢谢您的建议。

代码语言:javascript
复制
-- 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
EN

回答 1

Database Administration用户

发布于 2014-07-16 07:07:57

坏消息。您说的ETL进程-这意味着沉重的数据负载,插入/更新/删除有一个单一的磁盘瓶颈:事务日志文件。您可以添加多个事务日志文件,但它们是按顺序使用的,不是负载平衡的(某些真正的边缘场景除外)。

相反,您需要的是多个数据库。在数据仓库中,通常使用与目标数据库不同的源数据库,如暂存数据库。这样,您就可以将它的数据库放在不同的驱动器(甚至是不同类型的驱动器)上。例如,一些暂存数据库使用廉价的本地SSD。

如果您确实发现自己存储了数据文件读写的瓶颈,那么最好通过添加内存(缓存数据并完全避免读取)或在更多的驱动器(而不是更少的驱动器上)中对数据进行条带化来解决这个问题。通过将数据文件分割成较小的部分,并为它们提供每一个较少的驱动器,通常会使问题变得更糟。

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

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

复制
相关文章

相似问题

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