È la latenza o il mio VPN soffocando il mio Excel per arrivi di SQL Server?
-
20-09-2019 - |
Domanda
sto caricando i dati da Excel a SQL Server utilizzando la seguente struttura:
Private Sub ado_upload()
Dim objConnection As New ADODB.Connection
Dim objCommand As New ADODB.Command
Dim strSQL As String
Dim strDSN As String
Dim intCounter As Integer
strDSN = "provider=SQLOLEDB;" _
& "server=<server>;" _
& "database=<database>;" _
& "uid=<uid>;pwd=<pwd>;" _
& "trusted_connection=false;"
With objConnection
.ConnectionString = strDSN
.Open
End With
strSQL = "SET NOCOUNT ON; " _
& "INSERT INTO dbo.[table1] ( [col1] ) VALUES ( ? );"
With objCommand
.ActiveConnection = objConnection
.CommandText = strSQL
.Prepared = True
.Parameters.Append .CreateParameter("col1", adInteger, adParamInput)
For intCounter = 0 To 9
.Parameters("Col1").Value = intCounter
.Execute
Next intCounter
End With
End Sub
La velocità della procedura dipende dalla distanza geografica tra il server e il computer che esegue la procedura. Sul server stesso è veloce (300.000 inserti in meno di 10 minuti), dall'altra parte del paese è relativamente lento (300.000 inserti potrebbe richiedere ore). arrivi a distanza funzionano su una VPN.
Credo che la latenza di rete deve essere rallentando il processo verso il basso. C'è un modo per aggirare la latenza di rete, o modificare la VPN per rendere i caricamenti più veloci?
Grazie!
Soluzione
La velocità della procedura dipende dalla distanza geografica tra il server e il computer che esegue la procedura.
In realtà dipende quanti si luppolo e la macchina ci si collega a sull'altra estremità sono dai principali linee e rotte tra. Non è sempre lo stesso percorso, sia. Utilizzare il comando tracert
vedere, perché il collo di bottiglia potrebbe essere i pacchetti che passano attraverso il collegamento di un Mb / s 10 piuttosto che una linea di OC.
Sul server stesso è veloce (300.000 inserti in meno di 10 minuti),
Si dovrebbe andare da sé che l'esecuzione di qualcosa locale per la macchina funzionerà alla massima velocità possibile, al di fuori del carico sulla macchina in un determinato momento.
... arrivi operano su una rete VPN.
Mentre è sicuro, è aggravare il problema, perché il sovraccarico di che la sicurezza significa che è possibile inviare meno pacchetto che se i dati erano in chiaro.
Come ho detto prima, non è necessario alcun controllo su percorsi effettuati una volta che i pacchetti all'esterno della rete. Tutto quello che posso suggerire è di caricare i file sul server, e quindi eseguire da lì.
I download sono così molto più veloce di arrivi, anche se è ancora solo un comando ADO. È che, poiché i dati vengono scaricati da SQL Server come dati binari? Esiste un modo per conseguire tale stessa prestazione sugli l'upload senza caricare il file sul server prima?
Dipende dal collegamento e delle condizioni contrattuali. Internet residenziale è sempre una connessione asimmetrica - avrete più la banda passante di upload. Il motivo è che il surf / etc è scaricare centric - si usa molto poco la larghezza di banda per il caricamento, come richieste di pagine e le forme che presentano. Fino a quando si desidera caricare i file ...
L'unico modo per ottenere una migliore velocità di upload è quello di ottenere la migliore connessione e / o condizioni contrattuali.