При создании Приложения для Многопользовательской Среды, необходимо уделить много внимания процессам обработки Данных, так как существующие недостатки планирования коллективной обработки данных могут только Увеличиваться. Когда несколько Пользователей получает доступ к исходным Данным, ваше Приложение должно корректно и надежно управлять обработкой Данных, отслеживать Сетевое Окружение (доступность и недоступность Удаленных Источников Данных).

Вы можете использовать следующие Рекомендации по обеспечению, управлению, производительности Обработки Данных в Сети:

Вы можете также использовать основополагающие Рекомендации по обработке данных, размещенных на удаленных Серверах (источниках данных). Дополнительную информацию смотрите в разделе: Оптимизация Доступа к Удаленным Данным.

Соответствующая Индексация или Сортировка Таблиц Данных

Когда данные в Таблице являются относительно Статичными (например: Справочники), достаточно использовать обычную Сортировку Данных, не используя переключаемые Индексы. Однако, обычная Сортировка данных не исключает использования соответствующих Индексных Таблиц (индексных файлов), с помощью которых достигается высокая производительность по Поиску требуемых данных. Например, для выполнения поисковой команды SEEK требуется соответствующий активный Индекс, требуемые данные находятся очень быстро. Однако, после выполнения поиска требуемой Записи в Таблице, команды SEEK, активный Индекс можно Отключить... (рекомендуектся).

Корректировка интервалов Попыток Блокировки Данных

Если ваше Приложение неуспешно пытается Блокировать некоторую Запись Таблицы или Таблицу целиком, вы можете определить (задать) значение интервала времени, через который система Visual FoxPro автоматически повторит попытку требуемой Блокировки данных. Однако, каждая попытка Блокировки увеличивает размер Общего Трафика в Сети, тем самым ухудшает общее состояние Трафика в Сети, производительность работы всех Пользователей. Для построения более эффективных сценариев обработки данных рекомендуется использовать системную функцию: SYS(3051) - Установка интервалов повторной Блокировки. При использовании относительно длинных интервалов повторной Блокировки, что означает меньшее количество обращений за одну секунду, уменьшает общий Сетевой Трафик, повышает производительность вашей Сети, однако может немного замедлить работу вашего Приложения.

Дополнительную информацию смотрите в разделе: SYS(3051) - Определение интнрвала повторной Блокировки.

Эффективное использование механизмов Транзакций

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

Когда вы добавляете Запись в Таблицу, Visual FoxPro блокирует Заголовок соответствующего файла Таблицы. Указанный заголовок остается блокированным на весь период выполнения текущей транзакции, тем самым обеспечивается недоступность добавлять новые записи другим пользователям. До тех пор, пока текущая Транзакция остается Открытой, остаются блокированными все соответствующие наборы Данных, к которым относиться данная Транзакция, до тех пор пока эта транзакция не будет подтверждена или будет выполнен Откат Транзакции. Даже если вы явно выполняете команду снятия Блокировки: UNLOCK, сама блокировка остается активной, до тех пор, пока не будет выполнена команда закрытия Транзакции:END TRANSACTION или команда Отката: ROLLBACK. Смотрите дополнительно разделы:  UNLOCK, команда, END TRANSACTION, командаROLLBACK, команда.

Например, предположим, вы намереваетесь выполнить Цикл Транзакции для обновления Данных некоторой Таблицы из пользовательской Формы. Вместо того, чтобы начинать Транзакцию при запуске указанной Формы, а закрывать указанную Транзакцию при закрытии Формы, рекомендуется использовать представленный ниже фрагмент программного Кода для События Click управляющей кнопки Save (Сохранить), в этом случае длительность Транзакции будет минимальной:

 CopyCode imageКопировать Код
BEGIN TRANSACTION
UPDATE Products SET reorder_amt = 0 WHERE discontinued = .T.
END TRANSACTION

См. также