Announcement

Collapse
No announcement yet.

D5/SQL-Server 7: Extrem langsames Öffnen vieler TTables bei mehr als 1 Nutzer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • D5/SQL-Server 7: Extrem langsames Öffnen vieler TTables bei mehr als 1 Nutzer

    Hallo,

    ich nutze Delphi 5 und SQL-Server 7. Hat jemand folgendes Problem gehabt oder Erfahrung damit:
    Zu Beginn der Anwendung öffne ich ca. 30 TTables nacheinander auf einem
    Datamodule. Das dauert zwar, ist aber noch zu vetreten.
    Wird parallel an einem anderen Client gestartet (auch mit anderem User-Name) dauert das Öffnen der Datasets extrem lang.
    Habe an allen SQL-Server-Properties 'rumgedreht' sowie mit @@Lock_Timeout
    experimentiert.
    Hilft nichts. Wer weiß Rat?

    Danke, Gruß
    Jörg

  • #2
    Hallo,

    das hört sich so an, als ob andere Benutzer (Transaktionen) zu diesem Zeitpunkt Locks auf diesen Tabellen halten, so dass die eigene Transaktion auf das Freigeben dieser Sperren warten muss. Um diese Vermutung zu überprüfen, würde ich bei allen SELECTs den Hint <b>READPAST</b> aktivieren:
    <pre>
    SELECT * FROM Tabelle WITH (READPAST)
    </pre>
    READPAST überspringt gesperrte Zeilen. Bei dieser Option überspringt eine Transaktion alle Zeilen, die von anderen Transaktionen gesperrt sind und die normalerweise im Resultset angezeigt würden, anstatt die Transaktion zu blockieren, während sie darauf wartet, dass die anderen Transaktionen ihre Sperren für diese Zeilen aufheben. Der READPAST-Sperrhinweis wird nur bei Transaktionen angewendet, die auf der Isolationsstufe READ COMMITTED ausgeführt werden, und überspringt nur Sperren auf Zeilenebene. Bezieht sich nur auf die SELECT-Anweisung.

    Wenn mit READPAST das Problem verschwindet, würde ich dann genauer nachschauen, woher diese langen Sperr-Zeiträume von anderen Benutzern kommen.

    P.S: Werden wirklich alle 30 Tabellen immer gleichzeitig im offenen Zustand benötigt?

    &#10

    Comment


    • #3
      Vielen Dank,
      tatsächlich werden 'intent locks' gehalten, die der SQL Server setzt. Die werden wohl von der BDE bei einem TTable (dass ja nur ein Select * from xxx mit schema-anforderung ist) permanent gehalten

      Comment

      Working...
      X