Хорошо
настроенный компьютер и оптимизированная инсталляция базы данных не помогут повысить производительность, если не оптимизировано само приложение. Настоящее приложение базы данных состоит из нескольких частей. Самой важной из них является механизм баз данных 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 должен ожидать перед выполнением неявной транзакции. |
2000 |
\HKEY LOCAL MASH1NES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 |
dbExclusiveAsyncDelay |
FlushTransactionsTimeout |
Когда здесь введено значение, задержки SharedAsyncDelay и ExclusiveAsyncDelay отключены. Это значение указывает число миллисекунд перед запуском асинхронных записей, если в кэш не были добавлены страницы. |
500 |
\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 ожидает, прежде чем повторить попытку блокировки. |
100 |
\HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 |
dbLockDelay |
LockRetry |
Количество повторных попыток для блокировки страницы. |
20 |
\HKEY LOCAL MASH1NES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 |
dbLockRetry |
MaxBufferSize |
Размер кэша Jet в килобайтах. |
0 |
\HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JEr \4.0\ENGINES\JET 4.0 |
dbMaxBufferSize |
MaxLocksPerRte |
Максимальное количество блокировок, разрешенных для одной операции. Если для транзакции требуется больше блокировок, она разбивается на несколько транзакций, которые могут быть проведены отдельно и частично. Данную установку можно использовать для предотвращения проблем, которые могут возникнуть с проблем, которые могут возникнуть с Novell NetWare 3.1. |
9500 |
\HKEYLOCALMASHINES \SOFTWARE\MICROSOFT\JET \4.0\ENGINES\JET 4.0 |
dbMaxLocksPerRle |