我是一个informatica开发者。
我在共享应用程序数据库(SQLServer)中有一个维度表。
我在表上有4个键,并且在这个表上有一个唯一的非聚集索引。
在informatica target中,我们将4列设置为键列。
我们在相同的4个键上对此维度表进行查找,以标记它是插入还是更新。
我在informatica有一个时间表,这个作业每天以不同的间隔运行6次。对于所有早上的负载,作业运行如此之快,更新的吞吐量大约为1000 rec/sec。
但仅对于晚上的负载,对于这个特殊的表,吞吐量减少了12-15 rec/sec,这是从上个月开始的。
我们预料到,可能有其他东西锁定了这个表,或者数据库端有什么东西。因此,他们联系了DBA,在这个特定的表上启用了一个跟踪,但是他们无法识别其他任何东西。如果有人能在任何方面帮助我,或者在我可能看到的任何提示,那真的是太好了。
informatica服务器也是一个共享服务器。但是在这个性能有问题的时候,SQL服务器和Informatica服务器的负载都很轻。如果我错过了什么,请让我知道,我可以尝试把更多的信息。该表有94列,表的定义如下所示,其中一个SURROGETEKEY、B、C、D和E是键:
CREATE TABLE TEMP(
A [int] IDENTITY(1,1) NOT NULL,
B [varchar](8) NOT NULL,
C [varchar](11) NOT NULL,
D [varchar](3) NOT NULL,
E [varchar](2) NOT NULL,
F [varchar](1) NULL,
.
.
.
CP [char](1) NULL,
CONSTRAINT [PK_T_TEMP] PRIMARY KEY CLUSTERED
(
[A] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY],
CONSTRAINT [IX_T_TEMP] UNIQUE NONCLUSTERED
(
[A] ASC,
[B] ASC,
[C] ASC,
[D] ASC,
[E] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY];
所有列都将根据4个键进行更新。因此update语句如下所示。
UPDATE TEMP
SET
F=?,
G=?,
H=?,
..
..
..
CP=?
WHERE B=? AND C=? AND D=? AND E=?;