Подтвердить что ты не робот

Как я могу имитировать латентность сети на моей машине разработчика?

Я увеличиваю приложение MS Access 2003 на бэкэнд SQL Server. На моей машине dev сервер SQL является локальным, поэтому производительность неплохая. Я хочу проверить производительность с помощью удаленного SQL Server, чтобы я мог учитывать последствия сетевой латентности, когда я перепроектирую приложение. Я ожидаю, что некоторые из запросов, которые кажутся быстрыми, будут работать довольно медленно после их развертывания до производства.

Как я могу замедлить (или имитировать скорость удаленного) SQL Server без использования виртуальной машины или переместить SQL на другой компьютер? Есть ли какая-то прокси-программа или утилита Windows, которая сделает это для меня?

4b9b3361

Ответ 2

Вы можете работать с неправильным пониманием. MS-Access поддерживает так называемые "гетерогенные соединения" (т.е. Таблицы из множества back-end могут быть включены в один и тот же запрос, например, комбинируя данные из Oracle и SQLServer и Access и таблицы Excel). Чтобы поддерживать эту функцию, Access применяет к клиенту параметр предложения WHERE, за исключением ситуаций, когда есть "сквозной" запрос с интеллектуальным внутренним концом. В SQL Server фильтрация происходит в движке, запущенном на сервере, поэтому SQL Server обычно отправляет клиентам гораздо меньшие наборы данных.

Ответ на ваш вопрос также зависит от того, что вы подразумеваете под "remote". Если вы используете Access и SQL Server друг для друга в одной сети, SQL Server, работающий на сервере, будет потреблять лишь небольшую часть пропускной способности, доступной для Access, если файл MDB доступа находится на файловом сервере. (Разумеется, если MDB находится на локальном ПК, пропускная способность сети не потребляется.) Если вы сравниваете доступ в локальной сети и SQL Server через широкополосную связь через облако, вы сравниваете номинальную скорость 100 мбит/с против DSL или полосу пропускания кабеля, то есть против номинала 20 мбит/с для высокоскоростного кабеля, в лучшем случае - пятой полосы пропускания, возможно, намного меньше.

Итак, вы должны быть более конкретными в отношении того, что вы пытаетесь сравнить.

Сравниваете ли клиенты Access с локальным ПК, использующие MDB доступа, находящиеся на файловом сервере, против какого-либо другого клиента, потребляющего данные с SQL Server, находящегося на другом сервере в той же сети? Продолжаете ли вы использовать Access как клиент? Будут ли ваши запросы проходить через?

Ответ 3

Существует программное приложение для Windows, которое делает это (имитирует низкую пропускную способность, латентность и потери при необходимости). Это не бесплатно. В пробной версии установлен предел эмуляции 30 секунд. Вот главная страница этого продукта: http://softperfect.com/products/connectionemulator/

Ответ 4

@RedFilter: вы должны указать, какую версию Access вы используете. Этот документ с 2006 года показывает, что история о том, что Access приносит клиенту по всему кабелю, сложнее, чем вопрос о том, содержит ли запрос "Ключи, специфичные для конкретного доступа".

http://msdn.microsoft.com/en-us/library/bb188204(SQL.90).aspx

Но доступ может быть все более и более сложным в использовании ресурсов сервера с каждой новой версией.

Я остановлюсь на моем простом совете: если вы хотите минимизировать потребление полосы пропускания, но при использовании Access в качестве графического интерфейса лучше всего использовать сквозные запросы, потому что тогда вы, а не Access, будете контролировать количество данные, которые спускаются по проводам.

Я все еще думаю, что ваш первоначальный вопрос/подход ошибочен: если ваш файл MDB доступа был локализован в локальной сети (не так ли?), вам не нужно моделировать эффекты латентности сети. Вам нужно нюхать SQL-предложения Access, а не вводить какой-то произвольный и постоянный фактор "сетевой задержки". Чтобы сравнить GUI доступа с использованием MDB, расположенного на сервере локальной сети, от повышенного графического интерфейса доступа к серверу SQL Server, вам необходимо оценить, какие данные Access сбрасываются через провод к клиенту с внутреннего сервера. Даже "повышенный" доступ может быть зависанием в полосе пропускания, если вы не используете сквозные запросы. Но правильно написанный клиент для базы данных SQL-Server всегда будет намного более экономным с пропускной способностью сети, чем Access, идущий против MDB, расположенного на LAN-сервере, ceteris paribus.