代码之家  ›  专栏  ›  技术社区  ›  Raghav Rao

通过Informatica更新数据库中的特定表需要在特定的时间间隔内花费很长时间

  •  0
  • Raghav Rao  · 技术社区  · 6 年前

    我是一个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=?;
    
    0 回复  |  直到 6 年前