|
|
|
| Всем привет
Разделил базу на таблицы (сервер) и прочий интерфейс (клиент). В результате код который выполнялся за 2 секунды, выполняется за 30. Клиентов всего 3, вес базы 80 мегов, аксесс2000.
Сделал следущее:
1. Клиентов преобразовал в mdе
2. Убрал на клиентах галку "отслеживать автозамену имен"
3. Сжал «Сервер» и «клиентов». Сервис - Служебные - Сжать и востановить
4. «Сервер» и «клиентов» добавил в доверенную зону антивируса
5. SubdatasheetName property у всех таблиц на сервере установил [None]
В результате один и тот же код
- На «клиенте» на машине с «сервером» - 5 сек
- На других «клиентах» - 10 сек
Примерно такие пропорции быстродействия относятся и к другим процедурам и действиям
Что ещё можно сделать для повышения быстродействия ? | |
|
| |
|
|
|
|
В результате код который выполнялся за 2 секунды, выполняется за 30
|
- не имея кода трудно дать рекомендации, однако банально - оптимизация кода vba может существенно повысить производительность
Клиентов всего 3, вес базы 80 мегов
|
- ИМХО имеет значение не только количество клиентов, а также количество связанных таблиц и количество записей в таблицах. 500 000 записей акс "жуёт" не так быстро как хотелось бы. Такие таблицы желательно размещать и обрабатывать на сервере.
- вместо технологии связанных таблиц применяйте технологии ADO. | |
|
| |
|
|
|
| Спасибо за отклик
С оптимизацией приложения вроде все понятно остается только эксперементировать.
А если посмотреть на сеть, что в ней можно сделать, что настроить.
После описанных выше действии результат такой
- На «клиенте» на машине с «сервером» - 5 сек
- На других «клиентах» - 10 сек
Получается 5 секунд теряется в сети.
Нужны еще советы и мнения
Добавлено
Таблиц штук 40, почти все связанные между собой
Одна большая 400 000 записей | |
|
| |
|
|
|
| http://support.microsoft.com/default.aspx?scid=kb;EN-US;q261000
еще
попробуйте сделать следующее.
сразу после открытия приложения
открыть какой-то рекордсет по маленькой связанной таблице (она может быть никак не связана с другими данными, главное что бы была в том же файле что и остальные таблицы)
Set rst = CurrentDb.OpenRecordset(tblName, dbOpenSnapshot)
лучше если он останется открытым
и после этого посмотрите скорость | |
|
| |
|
|
|
| 1) http://support.microsoft.com/default.aspx?scid=kb;EN-US;q261000
я вроде это уже сделал
5. SubdatasheetName property у всех таблиц на сервере установил [None]
|
2) Выполнил Set rst = CurrentDb.OpenRecordset(tblName, dbOpenSnapshot)
В результате выполнение проверяемого кода
- На «клиенте» на машине с «сервером» - 4 сек (т.е. минус 1 сек)
- На других «клиентах» - 8 сек (т.е. минус 1 сек)
На что влияет открытие Рекордсета, что долнжо было получиться ?
На сколько я знаю Рекордсеты нужно вообще-то закрывать и разрушать
| |
|
| |
|
|
|
| Блин с этим переездом кусок форума ушел в небытие
Вот хвосты
http://am.rusimport.ru/MSAccess/topic.aspx?ID=228 | |
|
| |
|
|
|
| Спасибо
будем разбираться | |
|
| |
|
|
|
| Я для поддержания постоянного соединения с файлом бд использовал форму, связанную с небольшой табличкой, открытую в "в тени".
Сильного увеличения производительности не заметил (файл бд лежит в сетке на внешнем
USB-HDD), но заметил другую полезность - файл бд перестал пухнуть как на дрожжах. | |
|
| |
|
|
|
|
Таблиц штук 40, почти все связанные между собой
|
- Я Вам толкую про связь клиента и файл-сервера и рекомендую ADO: создали подключение, закачали данные, отключились от источника, поработали с данными, снова подключились и передали в источник.
Получается 5 секунд теряется в сети.
|
я бы не стал так категорично валить на сетку. Проверьте сетку простой передачей файлов, или загрузкой связанной формы на просмотр без обработки, и если уж
скорость ниже заявленной и сетка на Вас, то начните с железа и кабелей.
Одна большая 400 000 записей
|
- предпосылка размещения таблиц на сервер. | |
|
| |
|
|
|
| Спасибо за идеи
будем посмотреть | |
|
| |