Re: SQL Server steht auf der Bremse
- From: AndyL <AndyL@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 20 Nov 2009 08:47:01 -0800
Hallo Christoph,
hier ist mein Code.
DECLARE targetID_cursor CURSOR LOCAL FORWARD_ONLY FOR
SELECT TargetID FROM tblTarget WHERE (Share = @share) AND (Filer = @filer)
AND (Dir like '\' + @directory + '%')
OPEN targetID_cursor
FETCH NEXT FROM targetID_cursor INTO @TargetID
DECLARE @counter INT
set @Counter =0
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Counter = @Counter + 1
DECLARE @QuotaID INT
IF (SELECT COUNT(*) FROM tblQ WHERE (Filer = @Filer) AND (Share = @Share)
AND (Directory = @Directory) AND (SID = @SID)) = 0
BEGIN
INSERT INTO ....
SET @QuotaID = @@IDENTITY
END
ELSE
BEGIN
UPDATE tblQuotas
....
SET @QuotaID = (SELECT QuotaID FROM tblQuotas WHERE (Filer = @Filer) AND
(Share = @Share) AND (Directory = @Directory) AND (SID = @SID))
END
IF (SELECT COUNT(*) FROM tblQ_MAP WHERE (QID = @QuotaID)) = 0
BEGIN
....
END
FETCH NEXT FROM targetID_cursor INTO @DfsTargetID
END
CLOSE targetID_cursor
DEALLOCATE targetID_cursor
"Christoph Ingenhaag" wrote:
Hi Andy,.
da blockt sich bestimmt was.
Aber egal, sieh zu das du die Cursorverarbeitung los wirst!!!! Nur in ganz
wenigen Szenarien braucht man Cursor.
Bei dem was du schreibst, kann ich mir nicht vorstellen, das du Cursor
brauchst.
Schau auch mal hier:
http://blogs.msdn.com/sqlprogrammability/archive/2008/03/18/increase-your-sql-server-performance-by-replacing-cursors-with-set-operations.aspx
Poste mal den Code der SP...
Viele Grüße
Christoph
"AndyL" <AndyL@xxxxxxxxxxxxxxxxxxxxxxxxx> schrieb im Newsbeitrag
news:7B973446-A724-4F6B-8C4E-E175A8B87710@xxxxxxxxxxxxxxxx
Hallo,
ich habe einen komischen Effekt. Mein SQL Server (Version 9.0.4035) läuft
auf einem W2k3R2 SP2.
Ich habe eine stored procedure die mit cursor arbeitet und entsprechend
Tabellen aktualisiert.
diese SP wird in (max 50 Threads) tausende mal aufgerufen. zu beginn
skaliert der SQL Server über alle 4 Prozessoren.
Nach 2-3 Stunden dauert das ausführen der SP statt 1 Sekunde plötzlich 10
Sekunden und die Systemlast sinkt von über 90% auf unter 30%
Wenn ich den SQL stoppe und neu starte funktioniert wieder alles wie
gewohnt. Manchmal auch erst nach einem reboot.
An was könnte das liegen. Den Paged Pool und Non Paged Pool ist es nicht.
Der bleibt Konstant. Die Speicherauslastung insgesamt bleibt auch relativ
stabil.
Kennt jemand diesen Effekt und was macht man dagegen?
Danke
andy
- Follow-Ups:
- Re: SQL Server steht auf der Bremse
- From: Christoph Ingenhaag
- Re: SQL Server steht auf der Bremse
- References:
- SQL Server steht auf der Bremse
- From: AndyL
- Re: SQL Server steht auf der Bremse
- From: Christoph Ingenhaag
- SQL Server steht auf der Bremse
- Prev by Date: Fehlermeldung bei SQL Server
- Next by Date: Help, Speicherproblem SQL2000 in einem Feld
- Previous by thread: Re: SQL Server steht auf der Bremse
- Next by thread: Re: SQL Server steht auf der Bremse
- Index(es):
Relevant Pages
|