sql server - ¿Cómo puedo simular la latencia de la red en mi máquina de desarrollador?
sql-server performance (4)
Estoy convirtiendo una aplicación de MS Access 2003 a un servidor de SQL Server. En mi máquina de desarrollo, SQL Server es local, por lo que el rendimiento es bastante bueno. Quiero probar el rendimiento con un servidor SQL remoto para poder tener en cuenta los efectos de la latencia de la red cuando estoy rediseñando la aplicación. Estoy esperando que algunas de las consultas que parecen rápidas ahora se ejecuten muy lentamente una vez implementadas en producción.
¿Cómo puedo reducir la velocidad (o simular la velocidad de un remoto) de SQL Server sin usar una máquina virtual o reubicar SQL en otra computadora? ¿Hay algún tipo de proxy o utilidad de Windows que haría esto por mí?
@RedFilter: debe indicar qué versión de Access está utilizando. Este documento de 2006 muestra que la historia de lo que Access aporta al cliente a través del cable es más complicada que si la consulta contiene "palabras clave específicas de acceso".
http://msdn.microsoft.com/en-us/library/bb188204(SQL.90).aspx
Pero es posible que Access se esté volviendo cada vez más sofisticado sobre el uso de los recursos del servidor con cada versión más nueva.
Mantendré mi simple consejo: si quieres minimizar el consumo de ancho de banda, mientras sigues usando Access como la GUI, las consultas de paso son mejores, porque entonces eres tú, no Access, quien controlará la cantidad de datos que vienen. por el cable.
Sigo pensando que su pregunta / enfoque inicial está mal orientado: si su archivo Access MDB se ubicó en la LAN en primer lugar (¿no es así?), No necesita simular los efectos de la latencia de la red. Debe rastrear las sentencias SQL que Access genera, en lugar de introducir algún factor de "latencia de red" arbitrario y constante. Para comparar una GUI de Access con un MDB ubicado en un servidor de LAN con una GUI de Access de mayor tamaño que va contra un back-end de SQL Server, debe evaluar qué datos Access lleva a través del cable al cliente desde el servidor de back-end. Incluso el acceso "de gran tamaño" puede ser un asco en el canal de ancho de banda a menos que utilice consultas de paso a través. Sin embargo, un cliente escrito correctamente para un back-end de SQL Server siempre será mucho más complejo con el ancho de banda de la red que Access contra un MDB ubicado en un servidor LAN, ceteris paribus .
Hay una aplicación de software para Windows que hace eso (simula un ancho de banda bajo, latencia y pérdidas si es necesario). Aunque no es gratis. La versión de prueba tiene un límite de emulación de 30 segundos. Aquí está la página de inicio de ese producto: http://softperfect.com/products/connectionemulator/
No lo he usado, pero aquí hay otra pregunta de SO:
En uno de los comentarios se ha mencionado explícitamente a SQL Server.
Usted puede estar operando bajo un concepto erróneo. MS-Access admite las llamadas "combinaciones heterogéneas" (es decir, las tablas de una variedad de back-end pueden incluirse en la misma consulta, por ejemplo, combinar datos de Oracle y SQLServer y Access y una hoja de cálculo de Excel). Para admitir esta función, Access aplica el filtro de la cláusula WHERE en el cliente, excepto en situaciones en las que hay una consulta de "transferencia" contra un back-end inteligente. En SQL Server, el filtrado se produce en el motor que se ejecuta en el servidor, por lo que SQL Server generalmente envía conjuntos de datos mucho más pequeños al cliente.
La respuesta a su pregunta también depende de lo que quiere decir con "remoto". Si enfrenta a Access y SQL Server entre sí en la misma red , SQL Server ejecutándose en el servidor solo consumirá una pequeña fracción del ancho de banda que Access, si el archivo Access MDB reside en un servidor de archivos. (Por supuesto, si el MDB reside en la PC local, no se consume ancho de banda de la red). Si está comparando el acceso en una LAN frente a SQL Server a través de la banda ancha a través de la nube, entonces está comparando una tubería nominal de 100 mbit / seg. DSL o ancho de banda del cable, es decir, contra quizás 20 mbit / seg. Nominal para cable de alta velocidad, una quinta parte del ancho de banda, probablemente mucho menos.
Así que tienes que ser más específico sobre lo que estás tratando de comparar.
¿Está comparando clientes de Access en la PC local que consume un MDB de Access que reside en el servidor de archivos con algún otro tipo de cliente que consume datos de un servidor SQL que reside en otro servidor en la misma red? ¿Vas a seguir usando Access como cliente? ¿Sus consultas serán de paso?