Установка соединения требует времени и ресурсорв памяти как на клиенте, так и на сервере. Когда вы оптимизируете соединения, вы установливаете баланс между вашей потребностью в высокой производительностью и ресурсами, требуемыми для вашего приложения.

Число соединений, используемых Visual FoxPro зависит от того, будете ли вы принуждать закрывать неиспользуемые соединения или от того, как вы установите продолжительность лимита времени для неработающего соединения (timeout).

Совместное использование соединений

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

Когда вы используете соединение совместно, у вас есть только одно соединение для множества наборов результатов. Вы должны переводить операции обработки данных в наборах результатов в последовательный режим, совместно используя одно и тоже соединение и при разработке приложения тестировать соединение на конфликты, которые могут иметь место. Для получения более подробной информации о совместном использовании соединения смотрите описание Как: совместно использовать соединения для множества удаленных представлений.

Управление лимитом времени соединения

Если ваше приложение долгое время не производит никаких операций, вы можете снизить использование соединений установкой свойства соединения IdleTimeout. Свойство IdleTimeout управляет интервалом времени соединений, которые могут быть неактивными (idle) до момента, когда их закроет Visual FoxPro. По умолчанию, соединения могут быть неактивными бесконечно и не закрытыми до момента, когда их явно закроет пользователь.

Вы можете установить лимит времени в определении соединения с помощью свойства IdleTimeout, используя функцию DBSETPROP(); вы можете установить свойство IdleTimeout для активного соединения с помощью функции SQLSETPROP().

Visual FoxPro закрывает соединения, даже если в окне Browse или форме отображаются удаленные данные, а затем автоматически открывает их заново, когда они вновь потребуются. Однако, Visual FoxPro не может закрыть соединение, если:

  • Незавершена выборка результатов запроса с сервера.

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

Вы устанавливаете режим транзакции для определения соединения с помощью свойства Transactions через функцию DBSETPROP(); вы можете установить режим транзакции для активного соединения с помощью функции SQLSETPROP().

Высвобождение соединений

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

Вы можете управлять соединение для запроса вручную, если вы не желаете обновлять данные в курсоре. Используйте сквозные запросы (SQL pass-through) для выборки требуемых вам данных в локальные курсоры и затем закрывайте соединения.

Смотрите также