Ich habe Probleme mit Timeouts einer Tabelle auf meiner.TSQL: Timeouts auf hohem Verkehr Tabelle
Beispieltabelle
Id BIGINT,
Token uniqueidentifier,
status smallint,
createdate datetime,
updatedate datetime
ich Daten in diese Tabelle aus 2 verschiedenen gespeicherten Prozeduren eingefügt, die mit der Transaktion (mit spezifischer Eskalation) gewickelt sind und auch 1 Job, den alle 30 Sekunden einmal ausführt.
Ich erhalte Timeout von nur 1 von ihnen, und die seltsame Sache, dass seine von der einfachen
BEGIN TRY
BEGIN TRAN
INSERT INTO [dbo].[TempTable](Id, AppToken, [Status], [CreateDate], [UpdateDate])
VALUES(@Id, NEWID(), @Status, GETUTCDATE(), GETUTCDATE())
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
END CATCH
Wenn etwas Verkehr dort auf dieser Tabelle ist (TempTable
) Dieses Verfahren hält Timeout bekommen.
Ich überprüfte den Ausführungsplan und es scheint, dass ich keine Indizes in beiden gespeicherten Prozeduren verpasst habe.
Auch der einzige Index auf TempTable
ist die gruppierte PK auf Id
.
Irgendwelche Ideen?
Wenn mehr Informationen benötigt werden, sagen Sie es.
Die zweite gespeicherte Prozedur, die diese Tabelle verwendet, verursacht keine großen IO oder etwas.
Der Job verwendet jedoch eine atomare UPDATE
für diese Tabelle und am Ende davon DELETE
s aus der Tabelle, aber wie ich auf High IO dieser Tabelle überprüft, dauert der Job nicht länger als 3 Sekunden.
Danke.
Ich glaube nicht, dass Sie eine Transaktion für eine einzelne Anweisung benötigen. Eine einzelne Anweisung wird erfolgreich sein oder nicht. – Paparazzi