Оптимизация настройки механизма 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 должен ожидать перед выполнением неявной транзакции. | 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 |
Ключ |
Описание |
Значение по умолчанию |
Место нахождения ключа |
Константа для метода SetOption |
Pages LockerfIoTableLock |
(Новая возможность Access 2000) Обеспечивает эксклюзивный доступ к таблице для проведения обновлений, позволяя программно управлять количеством блокировок страницы, перед достижением которого Jet попытается блокировать всю таблицу. Значение 50 заставит Jet попытаться блокировать таблицу на 51-й блокировке страницы. Если блокировка таблицы не удастся, Jet совершит новую попытку на 101- и блокировке странице. При нулевом значении данная функция отключается. |
0 |
\HKEY.LOCALMASHINES \SOFTWARE\MICROSOF7\ JET\4.0\ENGINES\JET 4.0 |
Отсутствует |
PageTimeoirt |
Количество времени (в миллисекундах), в течение которого блокированная на чтение страница удерживается в кэше перед обновлением. |
5000 |
\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 должен ожидать перед проведением неявной транзакции. |
50 |
\HKEYLOCAL MASHINES \SOFTWARE\MICROSOFT \JET\4.0\ENGINES\JET 4.0 |
dbSharedAsyncDelay |
Threads |
Количество фоновых подлроцессов, использующих Jet. |
3 |
\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 записи остаются в том порядке, в котором они были введены (естественный порядок). |
1 |
\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) Разрешает или предотвращает сжатие хранящихся текстовых полей и полей примечаний. По умолчанию сжатие разрешено. |
1 |
\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 |
Отсутствует |