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

С помощью буферизации, вы можете легко находить и разрешать конфликты в операциях обновления данных: текущая запись копируется в память или на диск, обслуживаемые Visual FoxPro. Другие пользователи могут одновременно с вами обращаться к оригинальной, неизменной еще записи. Когда вы уходите с записи или пытаетесь обновить данные программно, Visual FoxPro попытается заблокировать запись, проверяет: нет лит изменений, сделанных другим пользователем во время вашего редактирования этой записи и затем записывает ее на диск. После того, как вы попытаетесь обновить данные, вы должны быть готовы разрешать возможные конфликты, что предовратит запись некорректных изменений в оригинальную запись таблцы.

Выбор режима буферизации

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

Visual FoxPro имеет два типа буферизации: записи и таблицы.

  • Для обращения, редактирования и записи одиночной записи однократно выберите буферизацию записи.

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

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

    Буферизация таблицы предоставляет наиболее эффективный способ обслуживания нескольких записей в одной таблице или в дочерней таблице в отношении "один-ко-многим".

  • Для обеспечения максимальной защиты существующих записей, используйте транзации Visual FoxPro.

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

Выбор метода блокировки

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

Pessimistic Buffering

Пессимистическая буферизация запрещает доступ других пользователей в многопользовательском окружении от доступа к конкретной записи или таблицы во время, когда вы производите в них изменения. Пессимистическая блокировка предоставляет наиболее безопасное окружение для изменения индивидуальных записей, но заметно замедляет работу пользователей вашего приложения. Этот метод буферизации наиболее схож со стандартным механизмом блокировки, использовавшемся в ранних версиях FoxPro, с введенной встроенной буфризацией данных.

Оптимистическая буферизация

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

Значение свойства Buffering, устанавливаемое функцией CURSORSETPROP() определяет методы буферизации и блокировки.

В приведенной ниже таблице сведены действительные значения для свойства Buffering.

 
Для разрешения ... используйте это значение

Режим буферизации не устанавливается. Значение по умолчанию.

1

для пессимистичесой блокировки записи, которая блокирует запись сразу и производит обновление при перемещении указателя записи или по команде TABLEUPDATE( ).

2

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

3

для пессимистичесой блокировки таблицы, которая сразу блокирует таблицу; обновление происходит по команде TABLEUPDATE( ).

4

для оптимистической блокировки таблицы, которая ожидает команды TABLEUPDATE() и при ее выдаче блокирует таблицу и обновляет отредактированные записи.

5

Значением по умолчанию для буферизации равно 1 для таблиц и 3 для представлений. Если вы используете буферизацию для доступа к удаленным записям, то свойство Buffering равно либо 3, либо 5, то есть устанавливается оптимичстичесепя буфреризация записи или таблицы. Для получения более подробной информации о доступе к данным в удаленных таблицах смотрите описание Как: выполнять запросы на множестве таблиц и представлений.

NoteЗамечание

Для режимов буферизации со значение большим чем 1 установите MULTILOCKS в ON.

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