Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Оптимизация приложений.




Access. Программирование на VBA. Часть 4.

 

По материалам книги Стивена Форта, Тома Хоуна и Джеймса Релстона

«Microsoft Access 2000 Development»

 

Оптимизация приложения представляет собой тему для бесконечного обсуждения и споров между разработчиками. Всем нужны оптимальные решения, но что же точно означает термин "оптимальный"? Одни полагают, что "оптимальный" значит самый быстрый, поэтому самая высокоскоростная технология всегда будет оптимальной. Другие утверждают, что оптимальным является такое решение, которое обес­печивает большую надежность, даже если при этом приложение работает медленно и генерирует чрезмер­ное количество предупреждений. Третьи считают, что целью оптимизации является эксплуатационная надежность и расширяемость. Кто же прав? Ответ заключается в том, что, как часто это бывает в жиз­ни, правы все и все они ошибаются. На самом деле оптимизация представляет собой попытку уравнове­сить все три представленные мнения.

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

Приложения с некоторой точки зрения напоминают автомобили. Мало кто захочет оказаться за рулем очень быстрого автомобиля, у которого слабые тормоза и плохая управляемость. Всем нужен автомобиль, который заводится каждый день и доставляет куда нужно без особой суматохи. Наконец, счета за ремонт и обслуживание не должны превышать разумных величин. Хотя в данной статье рассматривается оптими­зация скорости работы приложения, необходимо помнить, что приложение, кроме того, должно быть надежным, стабильно работающим и расширяемым.

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

Единственный способ узнать, подойдут ли данные методики, — поэкспериментировать с ними. Часто результаты могут оказаться совершенно неожиданными. Подход, который прекрасно работает в одном случае, может не оказать никакого ощутимого влияния в другом. Оптимизация — сложный процесс, поскольку рабочее окружение является сложной и постоянно меняющейся средой, и, кроме того, цель оптимизации может оказаться трудно достижимой.

Существуют тысячи вопросов об оптимизации, которые можно обсудить. В данной статье рассмотрение начинается с наиболее общих вопросов и заканчивается непосредственно касающимися приложения, т.е. сначала речь пойдетоб аппаратном обеспечении и операционной системе, а затем о различных методи­ках кодирования.

Оптимизация аппаратных средств и ОС Windows

Каждый модуль Access 2000 обладает множеством возможностей для настройки приложения, но нельзя рассчитывать на какой-либо успех в работе, если компьютер, на котором выполняется приложение, является устаревшим или если недостаточно оперативной памяти. Обычно дешевле приобрести современ­ное аппаратное обеспечение, чем платить разработчикам за улучшение программы, достигая при этом одинаковой производительности приложений. Аппаратное обеспечение дешевле, чем программное, и обновление оборудования способствует повышению производительностивсего совместимого программного обеспечения, которое установлено на данном компьютере.

Естественно предположить, что приложение Access (или любое подобное приложение) будет быстрее работать на более быстродействующем компьютере. Если имеется возможность обновить оборудование, ею следует воспользоваться. Компания Microsoft опубликовала минимальные требования для работы Access или Microsoft Office 2000. Однако разработчики быстро обнаруживают, что попытка запустить приложение Access 2000 на компьютере, удовлетворяющем этим минимальным требованиям, приводит к разочарованию. На самом деле минимальные требования для работы с приложениями должны быть такими:

• Процессор Pentium 133 МГц,

• 32 Мб ОЗУ (особенно под управлением Windows NT),

• Если выбирать между модернизацией процессора и установкой ОЗУ большего объема, следует выб­рать ОЗУ. Учитывая мировое падение цен на микросхемы памяти, увеличение объема ОЗУ — са­мый дешевый способ повышения производительности PC. Необходимо помнить о том, что требования для компьютера разработчика значительно выше. У разработчика должен быть установ­лен, по крайней мере, процессор Pentium II 233 МГц и 32-64 Мб ОЗУ.

• Даже если объем оперативной памяти пользовательского компьютера достаточно велик, ее все равно может оказаться недостаточно. Access, как и любая другая серьезная база данных, для своей нор­мальной работы требует значительного объема памяти. Необходимо убедиться в том, что для рабо­ты данного приложения достаточно памяти.

• Для экономии оперативной памяти необходимо отказаться от использования любых хранителей экрана, обоев, фоновых картинок и всех других подобных "излишеств". Только необходимые при­ложения должны использовать ресурсы процессора при выполнении приложения. Чем больше опе­ративной памяти будет отведено под выполнение приложения, тем быстрее оно будет работать.

• Не следует использовать виртуальные диски, организованные в оперативной памяти. В современной 32-разрядной операционной системе для них нет места.

• Необходимо регулярно очищать корзину и удалять временные файлы (особенно файлы Internet и электронной почты!). Базы данных требует значительного объема дискового пространства, а эти файлы могут поглотить массу места еще до того, как пользователь успеет это осознать.

• Рекомендуется воспользоваться преимуществами утилит дефрагментации диска. В зависимости от используемой операционной системы дефрагментация может производиться автоматически. Компь­ютерные файлы не хранятся в одном месте. При создании, редактировании, сохранении и удале­нии файлов используются любые свободные кластеры на жестком диске. Файл .MDB не является исключением. Если жесткий диск сильно фрагментирован, даже простой поиск происходит значи­тельно дольше, потому что компьютер вынужден просматривать весь диск в поисках необходимого результата.

• Следует избегать программного сжатия дисков (включая сжатие NTFS). Выполнение базы данных на сжатом диске приводит к значительному снижению производительности приложения.

• Можно приобрести дополнительный жесткий диск. В зависимости от того, какую задачу решает приложение, может понадобиться в 5-10 раз больше свободного пространства на диске, чем зани­мает файл .MDB. Недостаток свободного места снижает скорость выполнения больших запросов, длительных операций, компиляции, обслуживания, импорта и запросов действия. В последние годы цены на жесткие диски сильно упали.

• Рекомендуется отключить Journal (Журнал) в Outlook. Журнал Outlook генерирует запись при каж­дом запуске и выходе из приложения. Этот журнал может стать очень большим и поглощать дис­ковое пространство и процессорное время, необходимые приложению.

• Необходимо использовать освободившуюся оперативную память. Приложения очень хорошо погло­щают оперативную память, но неохотно ее освобождают. Со временем многие приложения, вклю­чая Access, уменьшают действительный объем доступной оперативной памяти. Периодический выход из среды Access позволит Windows перераспределить освободившуюся память.

• Windows и Office следует устанавливать с локального местоположения. Рекомендуется не запускать их в локальной сети. В настоящее время такой подход кажется немного необычным, но до сих пор существует масса случаев, где он оправдывает себя.

• Настройка файла подкачки (файла свопинга или виртуальной памяти) также может помочь повы­сить производительность приложения. Когда объем памяти для Access недостаточен, он занимает дис­ковое пространство файла подкачки и обращается с ним как с дополнительным ОЗУ. Если виртуальной памяти недостаточно, Access должен постоянно записывать и считывать информацию с диска, чтобы выполнять необходимые операции. Увеличение объема виртуальной памяти может привести к значительному повышению скорости выполнения приложения. Однако следует помнить, что чтение и запись на диск протекает в сотни раз медленнее, чем работа с ОЗУ. Увеличение объема файла подкачки поможет только в том случае, если диск дефрагментирован.

СОВЕТ

Следует убедиться, что файл подкачки не размещен на сжатом диске или в разделе. Работа со сжатым диском за­медляет чтение и запись временных файлов.

Может оказаться, что многие из приведенных советов осуществить невозможно, но при разработке приложения Access их обязательно следует учитывать и соответственно предлагать для реализации. Други­ми возможностями оптимизации разработчик Access может воспользоваться во всей полноте.

СОВЕТ

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

Установка приложения с учетом достижения оптимальной производительности

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

• Необходимо отделять данные от приложения. В качестве стандартной практики рекомендуется созда­вать один файл .MDB для хранения таблиц и размещать его в сети, а другой файл .MDB — для хранения запросов, форм, отчетов и т.д. Это поможет повысить производительность, улучшить работу в многопользовательской среде и обслуживание. Из всех советов, приведенных в данной статье, от этого следует отказываться только по очень важной причине.

• Рекомендуется использовать текущую версию файла рабочей группы (system, mdw). Хотя в приложе­нии можно пользоваться предыдущими версиями файла рабочей группы, текущая версия обеспе­чивает более высокую производительность.

• Необходимо регулярно производить сжатие базы данных. Кроме того, базу данных следует сжимать после выполнения обширных операций импорта, удаления и обновления. Сжатие базы данных обес­печивает использование свободного места между страницами данных (резерва) и позволяет выпол­нить перерасчет статистики базы данных, использующейся при оптимизации запросов. (Более подробно данная тема рассмотрена дальше в этой статье.) Сжатие базы данных, кроме того, позво­ляет освободить дисковое пространство для других целей. Access 2000 предлагает новую возможность — сжатие базы данных при выходе из базы данных. Для этого необходимо установить флажок Compact on Close (Сжимать при закрытии) во вкладке General (Общие) диалогового окна Options (Параметры) в меню Tools | Options (Сервис | Параметры). Некоторые разработчики обнаружили, что предыдущие версии Access следует сжимать дважды, чтобы добиться хороших результатов. Можно попробовать запустить базу данных из отдельного файла .MDB и позволить этому стартовому при­ложению выполнить сжатие при запуске базы данных. В сочетании с опцией Compact on Close при каждом выполнении будет производиться двойное сжатие.

• При возможности следует установить версию .MDE для приложения. При этом существует несколько преимуществ. Версия .MDE требует наличия скомпилированных модулей, а скомпилированные мо­дули выполняются быстрее, чем нескомпилированные. Кроме того, для .MDE требуется меньший объем ОЗУ и меньше дискового пространства, чем для .MDB, что повышает производительность.

СОВЕТ

Перед инсталляцией .МDЕ необходимо убедиться, что пользователи осведомлены о невозможности внесения ими из­менений в приложение. Учитывая все возрастающую популярность Access, в последнее время многие пользователи настаивают на возможности дальнейшей модификации приложения. Кроме того, необходимо тщательно протестиро­вать приложения, поскольку МDЕ выдают сложные для понимания сообщения об ошибках.

Оптимизация настройки механизма Jet Database Engine

Хорошо настроенный компьютер и оптимизированная инсталляция базы данных не помогут повысить производительность, если не оптимизировано само приложение. Настоящее приложение базы данных состоит из нескольких частей. Самой важной из них является механизм баз данных Jet. Механизм Jet — это центр почти всего, что происходит в приложении баз данных Access, и его можно оптимизировать точно так же, как и другие функции Access. Попытки оптимизировать Jet должны быть предприняты после разработки большей части, если не всего, приложения; при этом необходимо затратить достаточное ко­личество времени на оценку различных методик оптимизации.

Jet 4.0, который поставляется вместе с Access 2000, обладает несколькими преимуществами над сво­ими предшественниками. Такие возможности, как новые типы данных, сжатие текста, индексация полей примечаний, внедрение ANSI SQL-92, управление SQL Security, большая гибкость в работе с внешними индексами, улучшенная схема репликации и улучшенные блокировки, обещают способствовать повыше­нию производительности. Все эти прекрасные возможности подробно описываются в других статьях. В этой статье рассматривается только их влияние на производительность.

Механизм Jet выполняет основную оптимизацию без вмешательства разработчика или пользователя. Из всех сложных действий, которые выполняет Jet, можно увидеть только около 15, если заглянуть в сис­темный реестр. Эти установки оказывают серьезное влияние на многие аспекты функционирования сис­темы, поэтому обращаться с ними следует с осторожностью. Изменение установки может привести к результату, совершенно противоположному тому, который ожидался. Даже если приложение на первый взгляд работает быстрее, может оказаться, что нанесен серьезный ущерб стабильности и совместимости. Список установок Jet Registry приведен в табл. 1.

Таблица 1. Установки в системном реестре для Jet 4.0.

Ключ   Описание   Значение по умолчанию   Место нахождения ключа   Константа для метода SetOption  
ExclusiveAsyncDelay   В эксклюзивной среде это – количество миллисекунд, в течение которых Jet должен ожидать перед выполнением неявной транзакции.   \HKEY LOCAL MASH1NES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 dbExclusiveAsyncDelay  
FlushTransactionsTimeout   Когда здесь введено значение, задержки SharedAsyncDelay и ExclusiveAsyncDelay отключены. Это значение указывает число миллисекунд перед запуском асинхронных записей, если в кэш не были добавлены страницы.   \HKEY LOCAL MASH1NES\SOFTWARE \MICROSOFT\JET \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 dbPlushTransactions Timeout  
ImplicitCornrnitSync Определяет, должна ли ожидать система выполнения неявных транзакций перед продолжением процесса. Если ключ установлен в значение No, Jet выполняет неявные транзакции асинхронно. No \HKEY LOCAL MASH1NES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 dblmplicitCommitSync  
LockDetay   Число миллисекунд, в течение которых Jet ожидает, прежде чем повторить попытку блокировки. \HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 dbLockDelay
LockRetry   Количество повторных попыток для блокировки страницы. \HKEY LOCAL MASH1NES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 dbLockRetry
MaxBufferSize   Размер кэша Jet в килобайтах. \HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JEr \4.0\ENGINES\JET 4.0 dbMaxBufferSize
MaxLocksPerRte   Максимальное количество блокировок, разрешенных для одной операции. Если для транзакции требуется больше блокировок, она разбивается на несколько транзакций, которые могут быть проведены отдельно и частично. Данную установку можно использовать для предотвращения проблем, которые могут возникнуть с проблем, которые могут возникнуть с Novell NetWare 3.1. \HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 dbMaxLocksPerRle

 


 

Ключ Описание Значение по умолчанию Место нахождения ключа Константа для метода SetOption
Pages LockerfIoTableLock (Новая возможность Access 2000) Обеспечивает эксклюзивный доступ к таблице для проведения обновлений, позволяя программно управлять количеством блокировок страницы, перед достижением которого Jet попытается блокировать всю таблицу. Значение 50 заставит Jet попытаться блокировать таблицу на 51-й блокировке страницы. Если блокировка таблицы не удастся, Jet совершит новую попытку на 101- и блокировке странице. При нулевом значении данная функция отключается. \HKEY.LOCALMASHINES \SOFTWARE\MICROSOF7\ JET\4.0\ENGINES\JET 4.0 Отсутствует
PageTimeoirt Количество времени (в миллисекундах), в течение которого блокированная на чтение страница удерживается в кэше перед обновлением. \HKEYLOCAL MASHINES \SOFTWARE\MICROSOFT\ JET\4.0\ENGINES\JET 4.0   dbPageTimeout
RecycteLVs Определяет, будет ли Jet повторно использовать OLE, примечания и бинарные страницы. 0 (отключено) \HKEY LOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 dbRecycteLVs
SharedAsyncDelay В общей среде это - количество миллисекунд, в течение которых Jet должен ожидать перед проведением неявной транзакции. \HKEYLOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 dbSharedAsyncDelay
Threads Количество фоновых подлроцессов, использующих Jet. \HKEYLOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 Отсутствует
UserCommitSync Определяет, ожидает ли система завершения операций записи перед продолжением процессов. Если ключ установлен в значение No, механизм Jet выполняет явные транзакции асинхронно. Yes \HKEY LOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0   dbllserCommitSync
CompactByPKey Определяет порядок кодировки начальных значений. При значении 1 Jet повторно отсортирует записи по начальному значению. При значении 0 записи остаются в том порядке, в котором они были введены (естественный порядок). \HKEY LOCAL MASHINES \SOFTWARE\MICROSOFT \JE7\4.0\ENGINES Отсутствует
System DB Полный путь и имя файла рабочей группы. nyn,Access \system.md \HKEY LOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES Отсутствует
PrevFormatCompact WithUNICODECompression (Новая возможность Access 2000) Разрешает или предотвращает сжатие хранящихся текстовых полей и полей примечаний. По умолчанию сжатие разрешено. \HKEY LOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES Отсутствует
JetShowPlan По умолчанию не инсталлирован. При создании разработчиком и установке в значение On (зависит от регистра) Jet создает в текущей папке текстовый файл с именем showplan.out. При выполнении запросов в этом файле регистрируются планы выполнения. По окончании разработки ключ необходимо отключить. По умолчанию не инсталлирован.   \HKEY LOCAL MASHINES \SOnWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 Отсутствует

 

Безопасное изменение установок Jet

Существует три способа, позволяющие изменить установки Jet в системном реестре:

• Непосредственное изменение установок, принятых по умолчанию, с помощью RegEdit.exe,

• Создание пользовательского профиля для отмены установок, принятых по умолчанию, и вызовданного профиля с помощью опции командной строки/profile,

• Временная отмена в приложении установок, принятых по умолчанию, с помощью метода SetOption объекта базы данных.

Наиболее предпочтительна третья опция. Ее использование не только не вызывает сложностей, но и позволяет настроить каждое приложение отдельно. В приложении можно даже изменять установки в раз­ное время, чтобы действительно оптимизировать быстродействие. При таком подходе установки, приня­тые по умолчанию, никогда не изменяются, поэтому новые проекты начинаются на общей основе.

Для временной отмены установок в системном реестре нет необходимости использовать вызовы API. Механизм баз данных предлагает метод, который использует два аргумента. Синтаксис приведен ниже:


Поделиться:

Дата добавления: 2015-04-04; просмотров: 74; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты