Info: Client Auswirkungen auf SQL Server-Durchsatz

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 180775 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In auswerten allgemeine Bereiche, die die Leistung beeinflussen, als die am meisten häufig betrachtet Aspekte Prozessorgeschwindigkeit, Datenträger-e/A und Speicher auf dem Server sind. Obwohl die Leistung dieser Teile des Servers für die ordnungsgemäße Leistung von entscheidender Bedeutung sind, müssen Sie auch berücksichtigen, Netzwerklatenz und Clientverarbeitungszeit als Faktoren, die auch einen großen Einfluss auf die Gesamtleistung des Systems haben kann.

Dieser Artikel beschreibt die letztere Bereiche und enthält Richtlinien für die Auswertung Auswirkungen Sie auf dem Server können.

Weitere Informationen

Im folgende Beispiel werden im gesamten Dokument verwendet. Die Schritte für die beiden Verbindungen ausführen das Update mit nur einer kleinen Differenz in der Transact-SQL-Syntax.

Verbindung 1

use pubs
go
select convert(char(30), GetDate(), 9) "Start Time"
go

            Begin transaction

   Go   ==>   Send to SQL Server and process results

            Update authors set au_lname = au_lname

   Go   ==>   Send to SQL Server and process results

Commit / Rollback transaction

   Go   ==>   Send to SQL Server and process results

select convert(char(30), GetDate(), 9) "End Time"
go
				

Verbindung 2

use pubs
go
select convert(char(30), GetDate(), 9) "Start Time"
go
begin transaction
if(0 = @@ERROR)
begin
   update authors set au_lname = au_lname
   if(0 = @@ERROR)
   begin
      commit transaction
   end
   else
   begin
      rollback transaction
   end
end
go    ==>   Send to SQL Server and process results
select convert(char(30), GetDate(), 9) "End Time"
go
				

Round-Trips Netzwerk

Verbindung 1 erfordert drei Schleifen zu SQL Server-Computer:
  • BEGIN TRANSACTION
  • Update
  • Commit / ROLLBACK TRANSACTION
Verbindung 2 erfordert eine einzelne Reise um die Aktualisierung abzuschließen.

Abbruch der Abfrage

Sowohl die DB­Library-als auch die ODBC-APIs unterstützen asynchrone Abfrage-Verarbeitung. Beispielsweise verwendet DB­Library-Dbdataready-Funktion und den Client den Abschlussstatus der Abfrage abzufragen.

In DB­Library-ist die Dbdataready-Funktion durch den Wert DataReadySleep gesteuert. Weitere Informationen über die DataReadySleep-Registrierungsschlüssel finden Sie in der folgenden Artikel der Microsoft Knowledge Base:
159234: Info: So ändern Sie den Ruhezustand-Wert von Dbdataready verwendete

Auswirkungen von Ruhezustand Zeiten die Einblendezeiten

Standardmäßig ist der Standbymodus Wert 250 Millisekunden.

Verbindung 1 macht drei Roundtrips für den SQL Server. Standardmäßig findet der Client mindestens 750 Millisekunden Wartezeit, zählen nicht die Zeit für das tatsächliche Netzwerk übertragen. Die Wartezeit ab berechnet (250 Millisekunden * 3) = 750 Millisekunden.

Verbindung 2 stellt eine einzelne Reise und findet eine mindestens 250 Millisekunden Wartezeit, zählen nicht die Zeit für tatsächliche Netzwerk übertragen.

Sie können die Geschwindigkeit der in diesem Beispiel wird mit dem Faktor 3 ändern, einfach durch nutzen der Transact-SQL-Syntax und Entfernen von zwei Schleifen.

Auswirkungen der Netzwerkroundtrips auf andere Benutzer

Verbindung 1 enthält eine Transaktion geöffnet für mindestens 500 Millisekunden. Nachdem die Transaktion geöffnet ist, dauert 500 Millisekunden um das Update abzuschließen und dann einen commit oder Rollback die Transaktion. Datenbank Parallelität verhindert, dass andere Benutzer Zugriff auf die Datensätze, die Sie ändern.

Verbindung 2 hält die Transaktion geöffnet nur so lange wie erforderlich, um den Vorgang abzuschließen. Auf einem 133 MHz Pentium Prozessor Computer mit SQL Server und ISQL/w werden die folgenden Anzeigedauer angezeigt.

Hinweis: Die letzte der e/A wird nicht in einem der folgenden Beispiele angezeigt. Nach dem Commit oder Rollback die Sperren werden freigegeben, aber die letzte e/A wird nicht aufgezeichnet.
   Begin transaction                5 milliseconds
   Update                          20 milliseconds
   Commit/Rollback transaction      7 milliseconds
      TOTAL                        32 milliseconds
				

Verbindung 2 wird in ungefähr 32 Millisekunden abgeschlossen, wohingegen Verbindung 1 ein viel größeren Verarbeitung Fenster erfordert und die Transaktion Wartezeit erheblich erweitert.
   Begin transaction                5 milliseconds
   Network I/O                    250 milliseconds
   Update                          20 milliseconds
   Network I/O                    250 milliseconds
   Commit/Rollback transaction      7 milliseconds
      TOTAL                       532 milliseconds
				

Wie zuvor gezeigt, ist die Netzwerk-Zeit drei einfache Faktor. Jedoch ist die Sperre Auswirkungen, die im Beispiel wird auf andere Datenbankbenutzer erzwingt ein Faktor von 16 (532-32 = ~ 16).

Jetzt nehmen wir an, dass dieses einfache Beispiel von einem tragbaren Remotecomputer verbinden mit einem 28.8 Modem ist. Zusätzlich zu der 250 Millisekunden Verzögerung durch den Parameter Dbdatareadysleep auferlegt ist die Zeit, die Informationen über die langsame Verbindung tatsächlich übertragen appreciable. Verbindung 1 betrifft anderen Datenbankbenutzer eine noch größere Faktor beim Verbindung 2 in erster Linie von der Geschwindigkeit der Clientcomputer betroffen würde. Der Befehl wird einmal gesendet am SQL Server in 32 Millisekunden verarbeitet. Der einzige Benutzer des Systems, das eine Verlangsamung auftritt ist der remote-Benutzer, die erwartungsgemäß aufgrund von langsames Modem.

Client Lag Zeit

Client-Zeitabstand ist der Zeitraum, die verstreicht, während der Client die Ergebnisse verarbeitet, die Sie empfangen. Wenn Sie Verbindung 1 erneut betrachten, können Sie schnell sehen, wie dieser Prozess auswirken kann. Wenn eine zusätzliche 10 Millisekunden für den Client ein Resultset behandeln erforderlich sind, können Sie einen anderen 30 Millisekunden die Gesamtzeit, Transaktion hinzufügen und noch ein anderer 20 Transaktion-Wartezeit in Millisekunden.

Wechseln wir Beispiele erneut aus. In diesem Fall ist eine Tabelle Bestand aus einem online-System vorhanden. Sie haben damit verbracht, Monaten entwickeln und installieren, was das System am schnellsten online Auftragsabwicklung im Verlauf werden sollte. Die Benutzer können durchsuchen, kaufen und einen Einkaufswagen, andere Optionen beizubehalten. Dies ist die Tbllnventory-Tabelle:
   tblInventory
      iProductID       int
      strTitle         varchar(50)
      strDescription   varchar(255)
      iSize            int
      iInStock         int
      iOnOrder         int
      iType            int
				

Einige Cereal erwerben möchten. Allerdings soll was verfügbar ist. Wir können Cereal als 2, Typ definieren, sodass die Anwendung die folgende Abfrage ausgibt. In diesem Beispiel wird die Datenbank enthält 750 Cereal-bezogene Elemente.
   Select strTitle, strDescription, iSize, iInStock from tblInventory
   where iType = 2
				

SQL Server kompiliert und die Abfrage analysieren und beginnen Sie dann die Ergebnisse zurückgegeben. Gemeinsame Sperren werden auf den entsprechenden Seiten eingerichtet. Denken Sie daran, Sperren Block aktualisieren, einfügen und Löschvorgängen freigegeben.

Zur gleichen Zeit da die Anwendung, landesweit verwendet wird, sechs Personen möchten Cereal Bestellungen aufgeben.

SQL Server füllt das erste tabular Data Stream (TDS)-Paket, sendet es an den Client und wartet dann auf dem Client die Ergebnisse verarbeiten. Während der Zeit weiterhin, dass der Client die Ergebnisse (Client-Wartezeit), verarbeitet SQL Server enthalten eine gemeinsam genutzte Seitensperre auf der Seite, wo es verarbeitet wurde. Diese gemeinsame Sperre kann einen Benutzer blockieren, möchte eine Bestellung abzuschließen.

Das scheint von einer einfachen Aktion ab. Auszuwählen ein Resultset von SQL Server, und die Werte in einem Listenfeld einzufügen. Ein 133-MHz-Pentium-Computer kann zu einem Listenfeld nur über eine Sekunde 750 Elemente hinzufügen. Deaktivieren das Listenfeld beim Archivieren dauert nur ein Drittel einer Sekunde. Sie können die Client-Wartezeit erheblich verringern, indem einfach deaktivieren Sie im Listenfeld.

Möglicherweise werden sogar Objektberechtigung so ändern Sie den Auswahlvorgang um weiter das Sperren zu reduzieren. Beschränken Sie die gemeinsame Sperre Belichtung durch Ändern der Abfrage in der folgenden.
   Insert * into #tblSelect from
   Select strTitle, strDescription, iSize, iInStock from tblInventory
				

   Select * from #tblSelect
				

Die Abfrage wird auf dem SQL Server isoliert und wird nicht gestartet Ergebnisse zurückgegeben, bis Sie die temporäre Tabelle verschoben wurden und alle gemeinsame Sperren werden aus der Lagertabelle freigegeben. Dies begrenzt die Zeit, die in der Lagertabelle den Zeitbedarf für SQL Server um die Ergebnisse in Tempdb zu verschieben gemeinsame Sperren aufrechterhalten werden. Das Steuerelement ist erneut mit der Datenbank und nicht auf dem Client.

Eine weitere Möglichkeit um ein ähnliches Verhalten zu erreichen ist einen "intelligenten" Client vornehmen. Statt ein Listenfeld ausfüllen, kann es schneller sein, um ein Array zu laden. Allerdings müssen Sie dennoch bedenken, die durch den Netzwerkdurchsatz gebunden wird. Die temporäre Tabelle ist eine bessere Lösung in diesen Situationen.

Wie Sie sehen können, kann der Client eine Pivot-Rolle in der Datenbank Durchsatz wiedergeben. Sie sollten insbesondere beim Arbeiten mit remote und Berichterstellung Systeme vorsichtig vorgehen. Die Zeitspanne, die der Client, braucht um Ergebnisse beim Sperren hat das Potenzial zu den Datenbank Durchsatz auswirken. Diese Probleme sein möglicherweise schwer zu erkennen als die Wartezeit Perioden Einblendzeiten von 100 Millisekunden und schwer zu finden Sie unter mit der Prozedur Sp_who gespeichert. Verwenden Sie eine langsame Verbindung, um das Verhalten schnell anzuzeigen. Führen Sie die Anwendung über einen RAS-Link und sehen Sie das allgemeine Verhalten wie. Sie können auch alle Vorteile des Dienstprogramms SQLTRACE sorgfältig die Profilerstellung der Anwendung nutzen.

Weitere Informationen finden Sie in die folgenden Artikeln der Microsoft Knowledge Base:
165951: Info: Ergebnis für SQLServer verarbeiten

172117: Info: How to Profil Transact-SQL-Code in gespeicherten Prozeduren und Triggern

162361: INF: verstehen und Lösen von SQLServer Sperren Probleme

167610: Info: Abfrage Leistungseinbußen bewerten

48712: Info: Behandeln von Timeouts korrekt in DB-Library

117143: INF: Gründe und von dbcancel() oder sqlcancel()

Eigenschaften

Artikel-ID: 180775 - Geändert am: Donnerstag, 30. Januar 2014 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 6.5 Standard Edition
Keywords: 
kbnosurvey kbarchive kbmt kbinfo KB180775 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 180775
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com