Производительность базы данных Shared Access 2003

Мне нужно создать базу данных Access 2003 и поделиться ею между 100 пользователями, пользователи не будут вносить никаких изменений, только просматривая несколько отчетов, которые создаются ежедневно (и один раз) с использованием запланированной задачи на хост-машине.

Может ли одновременная работа 100 пользователей нарушить производительность в этом контексте?

Что вы мне посоветуете относительно этого рабочего процесса?

Исключать:

  • Использование сервера базы данных (sqlserver, ... и т. Д.) Не в теме
  • Я уже думал о выводе отчетов в статический html, но теперь я хочу сначала оценить совместное использование всей базы данных (поскольку может потребоваться возможность фильтрации)
  • Я бы хотел избежать репликации

person CoolStraw    schedule 24.02.2011    source источник


Ответы (2)


Вы использовали слово «хозяин». Помните, что Access - это не настоящий механизм клиент-сервер: он просто предоставляет доступ к данным; потребители загружают данные на свои локальные машины, где их локальная среда выполнения Access или локальная разрабатываемая версия Access выполняет запрос к загруженным данным. Целые «товарные поезда» данных могут передаваться по проводам на рабочий стол.

Несколько лет назад у нас была большая база данных, которую заказчик хотел в Access (в конце концов переместил ее в Oracle). Некоторые запросы будут поглощать 90% -100% доступной пропускной способности локальной сети в течение 15-30 секунд, в течение которых другие операции записи в совершенно другие базы данных в локальной сети будут отключены, что приведет к повреждению данных.

Таким образом, основная проблема вашего сценария будет заключаться в последствиях возможной серьезной деградации других приложений. Это будет зависеть от размера вашей базы данных и характера ваших запросов к отчетам.

Я бы порекомендовал «консервировать» отчеты, если вы можете, чтобы каждый запуск отчета не вызывал запрос, который создает экземпляры данных, стоящих за ним.

РЕДАКТИРОВАТЬ: Альтернативой, если это необходимо, было бы иметь веб-сервер, работающий на том же компьютере, что и Access "хост", выполняющий запросы и обслуживающий отчеты о конечных результатах для потребителей. 'браузеры как HTML. Это снизит потребление полосы пропускания. Локальная сеть становится «облаком».

person Tim    schedule 24.02.2011
comment
Привет, Тим. На самом деле я использовал слово хост для обозначения центральной машины, которая предоставляет доступ к базе данных. Я также решил ежедневно, сразу после сбора новых данных, сохранять результат запроса отчета в таблице, а не создавать отчеты. Затем, когда пользователи будут запускать отчет, он будет построен поверх этой таблицы, поэтому единственный выполненный запрос будет фильтрующим (на основе ввода данных пользователем); этот запрос чертовски прост, он выглядит так: SELECT * FROM T Где X = B и A = Z И (R между 10 И 1010100) И SS ›TT ... и т. д. Что вы думаете? - person CoolStraw; 24.02.2011
comment
Если вы вставляете результаты запроса в новую таблицу, чтобы отчеты основывались на небольшом статическом подмножестве ваших данных, тогда вы сохраняете их так, как я предложил. Это хорошо. Но кажущаяся простота оператора SQL не важна; это количество байтов, которые должны пройти через провод. Потребление полосы пропускания будет зависеть от размера тех статических таблиц, которые стоят за отчетами. - person Tim; 24.02.2011
comment
Понятно, тогда я попытаюсь понять, как будет выглядеть сетевая нагрузка, и попробую это настроить. Человек большое спасибо, очень хорошие моменты! - person CoolStraw; 24.02.2011
comment
Утверждение о том, что Access передает по сети большие объемы данных, вводит в заблуждение, если не прямо ложно. Полная таблица данных не извлекается, если у вас нет индексов или если у вас нет плохого SQL, требующего полного сканирования таблицы (например, сортировки по выражению без предложения WHERE). Если ваши запросы потребляли 90% пропускной способности LAN, то они были ДЕЙСТВИТЕЛЬНО плохо написаны или ваша схема базы данных была чрезвычайно плохой. При использовании серверной базы данных Jet / ACE иногда ошибается, и в этом случае вы перемещаете логику выбора на серверную сторону (либо VIEWS, либо SPROC). Но то, что вы описываете, не является обычным явлением. - person David-W-Fenton; 26.02.2011
comment
100 пользователей отчетов только для чтения никогда не должны стать большой проблемой для Access, если только ваш SQL не является чрезвычайно сложным или вы не допустили ошибок проектирования. - person David-W-Fenton; 26.02.2011

Если вы дадите каждому пользователю его собственную копию интерфейса и ссылку на источник данных, вы можете уйти со 100 пользователями, если сеть на высоте. У меня около 100 пользователей, которые в основном читают только в базе данных доступа, но не все используют ее одновременно

Вы можете автоматизировать установку внешнего интерфейса, используя отличное средство обновления autoFE www.autofeupdater.com/

person Kevin Ross    schedule 24.02.2011
comment
Спасибо за совет. Я даже не могу использовать стороннее программное обеспечение, поэтому autofe выходит за рамки. - person CoolStraw; 24.02.2011
comment
Прежде чем я узнал об AutoFE, я использовал собственную небольшую базу данных для начальной загрузки, которая находится на сетевом диске. Когда пользователи открывают эту БД, он проверяет, есть ли у них реальный интерфейс на своем компьютере, если они этого не делают, он устанавливает и запускает его. Если они это сделают, то проверяет, обновлен ли он, и обновляет его, если номер версии меньше, чем номер на сервере. Все это с использованием только доступа к базам данных, без сторонних инструментов - person Kevin Ross; 24.02.2011
comment
Да, правда, я на самом деле не знаю, действительно ли мне это нужно сейчас, потому что я сделаю одну версию, затем разверну, и все, но я буду иметь это в виду. Большое Вам спасибо - person CoolStraw; 24.02.2011