Es la latencia o de mi VPN asfixia mi Excel para archivos de SQL Server?
-
20-09-2019 - |
Pregunta
Estoy subiendo datos de Excel a SQL Server mediante la siguiente estructura:
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 velocidad del procedimiento depende de la distancia geográfica entre el servidor y el equipo que ejecuta el procedimiento. En el propio servidor es rápido (300.000 inserciones en menos de 10 minutos), en el otro lado del país es relativamente lento (300.000 inserciones podrían tardar horas). cargas remotas operan a través de una VPN.
Creo que la latencia de red debe estar ralentizando el proceso. ¿Hay alguna manera de moverse por la latencia de red, o modificar la VPN para hacer los archivos más rápido?
Gracias!
Solución
La velocidad del procedimiento depende de la distancia geográfica entre el servidor y el equipo que ejecuta el procedimiento.
En realidad depende de la cantidad de lúpulo usted y la máquina que se está conectando en el otro extremo son de grandes troncos, y las rutas entre. No es siempre la misma ruta, tampoco. Utilice el comando tracert
ver, porque el cuello de botella podría ser paquetes que pasan por una conexión Mb / s 10 en lugar de una línea OC.
en el propio servidor que es rápido (300.000 insertos en menos de 10 minutos),
No hace falta decir que la realización de algo local a la máquina funcionará a la velocidad más rápida posible, fuera de la carga en la máquina en el momento dado.
... subidos operan a través de una VPN.
A pesar de que es seguro, es que agrava el problema, ya que la sobrecarga de que la seguridad significa que puede enviar menos por paquete que si los datos eran sin cifrar.
Como he mencionado antes, no lo hace ningún control sobre las rutas tomadas una vez que sus paquetes están fuera de su red. Todo lo que puedo sugerir es que subir los archivos al servidor y ejecute desde allí.
Las descargas son mucho más rápido que las subidas, a pesar de que todavía es sólo un Comando de ADO. Es que debido a que los datos están siendo descargado de SQL Server como datos binarios? ¿Hay alguna manera de lograr el mismo rendimiento en la carga sin la posibilidad de subir el archivo al servidor primero?
Depende de la conexión y los términos del contrato. Internet residencial es siempre una conexión asimétrica - que tendrá más ancho de banda de descarga que de subida. La razón es que el surf / etc está centrada descarga - se utiliza muy poco ancho de banda para las cargas, como las solicitudes de página y las formas que presentan. Hasta que no desea cargar los archivos ...
La única manera de obtener mejores velocidades de subida es conseguir la mejor conexión y / o los términos del contrato.