On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1212
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.10 00:32. Заголовок: Совместно открытые файлы. Использование блокировки индекса на чтение.


Pasha:
3. Выборки из файла можно выполнять так:

dbOrderInfo(DBOI_READLOCK,,, .t.)
dbSeek(..)
while ...
if ...
endif
skip
enddo
dbOrderInfo(DBOI_READLOCK,,, .f.)

Это блокировка индекса на чтение. Она выполняется всегда при любой навигавии по таблице, т.е. в операциях seek/skip/goto
Если выборка состоит из 100 строк, то блокировка/разблокировка будет выполняться 100 раз, и выборка будет тормозить.
Если блокировку сделать перед выборкой, то выборка будет выполняться быстро.
Но злоупотреблять READLOCK не стоит, поскольку на время блокировки эти данные недоступны для чтения с других станций.


А как будет выглядеть эта недоступность ?
Будет вылет программы или еще чего нибудь ? Т.е. хотелось бы что другой юзер при блокировки получал бы сообщение типа: "Данные заняты ! Подождите, пока идет расчет !" .
Это придется делать самостоятельно или можно получить какую-нибудь через функцию: блокирован индекс или нет ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


Администратор




Пост N: 1392
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.04.10 09:28. Заголовок: На время блокировки ..


На время блокировки на другой станции будет задержка при навигации по той же таблице.
Это задержка в любом случае есть, так как блокировка на чтение выполняется всегда. Сообщение выдавать не получится.
Меня тоже, когда пришлось использовать READLOCK, беспокоил вопрос, насколько такой способ будет мешать рабете других станций.
Конечно, надо выполнять определенные правила. Выборка с READLOCK должна быть простой, т.е. внутри нее не должно быть выборок из других таблиц. Ну без фанатизма конечно, если выбирается очеть большой обьем данных, READLOCK использовать не надо.
Я делал тесты. Но в реальной работе пользователей неблагопиятных последствий не было.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1213
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.10 10:02. Заголовок: Спасибо БОЛЬШОЕ Pash..


Спасибо БОЛЬШОЕ Pasha !
Буду пробовать !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1394
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.04.10 12:47. Заголовок: Я неправильно написа..


Я неправильно написал. Если индекс заблокирован для чтения, то для других рабочих станций будет недоступна операция записи по индексу, а не чтение.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1566
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.10 13:00. Заголовок: что то я не вижу пра..


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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1395
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.04.10 13:12. Заголовок: В момент чтения данн..


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


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1567
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.10 13:18. Заголовок: То есть если в этом ..


То есть если в этом режиме кто то строит отчет который строится (условно) 1 минуту , это значит
что на другой рабочей станции использующей те же базы и индексы пользователь не сможет
провести какой то документ (пишущий в те же базы) в течении 1 минуты ?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1396
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.04.10 13:25. Заголовок: Если поставить такую..


Если поставить такую блокировку на чтение, то да
Но речь идет о блокировке индекса

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1568
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.10 15:07. Заголовок: Pasha пишет: Но реч..


Pasha пишет:

 цитата:
Но речь идет о блокировке индекса


То есть база обновится а индекс нет до тех пор пока станция его залочившая не даст
dbOrderInfo(DBOI_READLOCK,,, .f.) , так ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 23
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет