Как я могу имитировать задержки в сети на моем компьютере разработчика? - PullRequest
16 голосов
/ 13 ноября 2010

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

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

Ответы [ 4 ]

5 голосов
/ 13 ноября 2010

Я не использовал его сам, но вот еще один вопрос:

В одном из комментариев SQL Server упоминается явно.

0 голосов
/ 16 ноября 2010

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

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

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

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

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

0 голосов
/ 14 ноября 2010

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

0 голосов
/ 13 ноября 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...