INF: Client effetti sulla velocitÓ effettiva SQL Server

Traduzione articoli Traduzione articoli
Identificativo articolo: 180775 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Nella valutazione delle aree generali che influiscono sulle prestazioni, pi¨ considerati comunemente aspetti sono la velocitÓ del processore, I/O del disco e memoria sul server. Anche se le prestazioni di queste parti del server sono essenziali per prestazioni appropriata, Ŕ necessario considerare anche latenza della rete e tempo di elaborazione client come fattori che pu˛ anche avere un notevole impatto sulle prestazioni complessive del sistema.

In questo articolo vengono illustrate le aree di quest'ultimo e vengono fornite indicazioni per valutare l'impatto che pu˛ disporre sul server.

Informazioni

Nell'esempio seguente viene utilizzato in tutto il documento. La procedura per le due connessioni esegue l'aggiornamento della stessa con una piccola differenza nella sintassi di Transact-SQL.

Connessione 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
				

Connessione 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
				

Rete Trips Round

Connessione 1 richiede tre viaggi al computer SQL Server:
  • Inizio transazione
  • Aggiornamento
  • Eseguire il commit o ROLLBACK TRANSACTION
Connessione 2 richiede un singolo viaggio per completare l'aggiornamento.

Annullamento di query

Di DB-Library e le API ODBC supportano entrambi l'elaborazione di query asincrona. Ad esempio, DB-Library utilizza la funzione dbdataready per consentire il client eseguire il polling lo stato di completamento della query.

In DB-Library, la funzione dbdataready Ŕ controllata dal valore DataReadySleep. Per ulteriori informazioni sulla chiave del Registro di sistema DataReadySleep, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
159234: INF: come modificare il valore di sospensione utilizzato da Dbdataready

Influiscono gli intervalli dei tempi di inattivitÓ

Per impostazione predefinita, il valore di sospensione Ŕ 250 millisecondi.

Connessione 1 rende tre round trip per SQL Server. Per impostazione predefinita, il client rileva un minimo di 750 millisecondi di tempo di attesa, escluso il tempo per il trasferimento effettivo di rete. Il tempo di attesa viene calcolato da (250 millisecondi * 3) = 750 millisecondi.

Connessione 2 rende un viaggio singolo e viene rilevato un minimo di 250 millisecondi di tempo di attesa, escluso il tempo di trasferimento di rete effettiva.

╚ possibile modificare la velocitÓ di questo esempio di un fattore di tre, semplicemente che sfruttano la sintassi di Transact-SQL e rimuovendo due rete i percorsi di andata e ritorno.

Influiscono di comunicazioni di rete multiutente

Connessione 1 contiene una transazione aperta per un minimo di 500 millisecondi. Dopo la transazione Ŕ aperta, richiede 500 millisecondi per completare l'aggiornamento e quindi eseguire il commit o il rollback della transazione. Concorrenza di database impedisce ad altri utenti accedano i record che si sta modificando.

Connessione 2 mantiene la transazione aperta solo se necessario per completare l'operazione. In un 133-MHz Pentium singolo processore computer che esegue SQL Server e ISQL/w, sono visti gli intervalli seguenti.

Nota: Il finale I/O di rete non viene visualizzato in entrambi gli esempi riportati di seguito. Dopo il commit o rollback completata vengono rilasciati i blocchi, ma l'i/O finale non Ŕ registrata.
   Begin transaction                5 milliseconds
   Update                          20 milliseconds
   Commit/Rollback transaction      7 milliseconds
      TOTAL                        32 milliseconds
				

Connessione 2 verrÓ completata tra circa 32 millisecondi, mentre la connessione 1 richiede una finestra di elaborazione maggiore e la estende notevolmente il tempo di latenza di transazione.
   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
				

Come illustrato in precedenza, l'ora di rete Ŕ un fattore semplice di tre. Tuttavia, l'impatto di blocco che nell'esempio impone sugli altri utenti del database Ŕ un fattore pari a 16 (532/32 = ~ 16).

A questo punto si supponga che questo semplice esempio provenga da un computer portatile remoto connessione con un modem a 28,8 Kbps. Il tempo necessario per trasmettere effettivamente le informazioni sul collegamento lento Ŕ appreciable al ritardo millisecondi 250, imposto dal parametro dbdatareadysleep. Connessione 1 interessa altri utenti del database per un fattore ancora pi¨ ampia, mentre la connessione 2 sarebbe principalmente interessati dalla velocitÓ del computer client. Il comando viene inviato una volta elaborate in SQL Server in 32 millisecondi. L'unico utente del sistema che si verifica un rallentamento Ŕ l'utente remoto, ovvero come previsto, a causa di modem lento.

Tempo di ritardo del client

Tempo di ritardo del client Ŕ il periodo di tempo che trascorre mentre il client elabora i risultati che Ŕ stato ricevuto. Se si esamina nuovamente connessione 1, Ŕ possibile visualizzare come questo pu˛ influire sul processo. Se un ulteriore 10 millisecondi sono necessarie per il client per gestire un set di risultati, Ŕ possibile aggiungere un altro 30 millisecondi il tempo complessivo di transazioni e ancora un'altra 20 millisecondi per il tempo di latenza di transazione.

╚ opportuno passare nuovamente esempi. In questo caso Ŕ una tabella di magazzino da un sistema in linea. Dedicato mesi lo sviluppo e di installazione quale deve essere il sistema di elaborazione pi¨ veloce l'ordine in linea nella cronologia. Gli utenti possono eseguire la ricerca, acquistare e mantenere un carrello acquisti, tra le altre opzioni. Questa Ŕ la tabella di tbllnventory:
   tblInventory
      iProductID       int
      strTitle         varchar(50)
      strDescription   varchar(255)
      iSize            int
      iInStock         int
      iOnOrder         int
      iType            int
				

Si desidera acquistare alcuni cereal. Tuttavia, si desidera verificare cosa Ŕ disponibile. ╚ possibile definire cereal come tipo 2, affinchÚ l'applicazione invia la query riportata di seguito. In questo esempio, il database contiene 750 cereal relativi elementi.
   Select strTitle, strDescription, iSize, iInStock from tblInventory
   where iType = 2
				

SQL Server verrÓ compilato e analizzare la query e quindi iniziare a restituire i risultati. Nelle pagine appropriate vengono acquisiti blocchi condivisi. Tenere presente che condivise blocchi di blocco di aggiornamento, inserimento e le operazioni di eliminazione.

Allo stesso tempo, poichÚ l'applicazione viene utilizzato su scala nazionale, sei altri siano cercando di inserire ordini cereal.

SQL Server viene inserito il primo pacchetto (TDS, Tabular Data Stream) del flusso di dati tabulari, invia al client e quindi attende che il client per elaborare i risultati. Durante il tempo che il client sta elaborando i risultati (tempo di latenza client), SQL Server continua contenere un blocco di pagina condivisa della pagina in cui Ŕ stato l'elaborazione. Questo blocco condiviso Ŕ possibile bloccare un utente che sta tentando di completare un ordine.

Sembra una semplice azione. Selezionare un set di risultati dal server SQL e inserire i valori in una casella di elenco. Un computer di Pentium a 133 MHz possibile aggiungere 750 elementi una casella di riepilogo in oltre un secondo. Disattivare la casella di riepilogo durante l'archiviazione, accetta solo un terzo di secondo. ╚ possibile ridurre notevolmente il tempo di latenza del client disattivando semplicemente la casella di riepilogo.

╚ anche possibile inclini a modificare l'operazione di selezione per ridurre ulteriormente il blocco. Modificare la query al seguente per limitare l'esposizione di blocco condiviso.
   Insert * into #tblSelect from
   Select strTitle, strDescription, iSize, iInStock from tblInventory
				

   Select * from #tblSelect
				

La query Ŕ isolata in SQL Server e restituzione dei risultati fino a quando la tabella temporanea sono stati spostati e tutti i blocchi condivisi vengono rilasciati dalla tabella di magazzino non verrÓ avviato. Questo limita il tempo i blocchi condivisi contenute nella tabella di magazzino del tempo necessario per spostare i risultati in tempdb in SQL Server. Il controllo Ŕ nuovamente con il database e non nel client.

Un altro per ottenere un comportamento simile consiste nel creare un client "intelligenti". AnzichÚ una casella di riepilogo, potrebbe essere pi¨ veloce per caricare una matrice. Tuttavia, Ŕ ancora problemi relativi da associare dalla velocitÓ effettiva della rete. La tabella temporanea Ŕ una soluzione migliore in questi casi.

Come si pu˛ vedere, il client Ŕ possibile riprodurre un rullino fondamentale nella velocitÓ effettiva del database. Prestare particolare attenzione quando si utilizzano i sistemi remoti e report. Del tempo che il client accetta per elaborare risultati tenendo i blocchi Ŕ in grado di influenzare il throughput di database. Questi tipi di problemi potrebbero essere difficile vedere come i periodi di latenza sia gli intervalli di 100 millisecondi e difficili da vedere con la procedura sp_who memorizzati. Utilizzare un collegamento lento per visualizzare rapidamente il comportamento. Eseguire l'applicazione da un collegamento RAS e vedere che cos'Ŕ il comportamento generale come. ╚ possibile anche sfruttare appieno l'utilitÓ di analisi SQL per analizzare con attenzione l'applicazione.

Per ulteriori informazioni, vedere i seguenti articoli della Microsoft Knowledge Base riportato di seguito:
165951: INF: risultato di elaborazione per SQL Server

172117: INF: How to profilo del codice Transact-SQL in stored procedure e trigger

162361: INF: informazioni e risoluzione dei problemi di blocco di SQL Server

167610: INF: valutazione degrado delle prestazioni di query

48712: INF: gestione di timeout correttamente in DB-Library

117143: INF: quando e come utilizzare dbcancel() o sqlcancel()

ProprietÓ

Identificativo articolo: 180775 - Ultima modifica: mercoledý 12 febbraio 2014 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 6.5 Standard Edition
Chiavi:á
kbnosurvey kbarchive kbmt kbinfo KB180775 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 180775
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

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