![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уровень изоляции транзакций [D7, FB 1.5]
3APA3A © (2004-08-12 00:13:00)компоненте он выставляется (как называется это свойство)?
И еще вопрос
Уровень изоляции - DirtyRead
Клиент А вставляет данные в таблицу, но Commit пока не делает
1) Будет ли клиент Б видеть эти данные?
2) Что произойдет в этими данными, если клиент А "неожиданно" отрубится от сервера?
jack128 (2004-08-14 14:14:00) [1]Итак, вывод: Без коммита другие клиенты не могут увидеть изменения, зделанные твоим клиентом.
Если ты все таки сделал коммит, тут все сложнее, зависит параметров транзакций остальных клиентов. Если READ COMMITTED - то в остальных клиентах нужно переоткрыть ЗАПРОС, если же SNAPSHOT - то нужно рестартовать транзакции..
Еще раз советую заглянуть на wwww.ibase.ru
3APA3A (2004-08-13 23:06:00) [2]Да не зацикливайтесь на commit... Мне не важно - сделает клиент А commit или нет... Важно вот это
Каждый клиент добавляет в таблицу какие-то свои, уникальные записи. Все остальные клиенты должны их видеть. Как только клиент A "отвалился" - записи надо удалить иначе получится "нехорошо"... Хочется сделать это по возможности серверной логикой...
Возможно ли это?
HSolo (2004-08-13 13:06:00) [3]>не увидят они эти изменения никак без рестарта своих читающих транзакций
Если уровень изоляции у них ReadCommited - увидят и без рестарта, достаточно переоткрыть наборы данных. Лишь бы писатель commit сделал
}{ander (2004-08-13 12:37:00) [4]2 Digitman
> не увидят они эти изменения никак без рестарта своих читающих
> транзакций
и без его каммита.
2 Iconka
> Но 3APA3A, помоему, хочет что бы клиент А еще не сделал
> commit, а другие уже видели эти данные. Или я не права?
такое, имхо, вообще не реализуемо, т.к. [1]
Digitman (2004-08-13 11:14:00) [5]
> 3APA3A © (12.08.04 22:54) [5]
> 1) Клиент А записывает какие-то данные в таблицу
так. замечательно.
> 2) Клиент Б (В, Г, Д...) должен видеть эти данные
не увидят они эти изменения никак без рестарта своих читающих транзакций
> 3) При "неожиданном" отключении клиента А сервер должен
> сделать откат этих данных (откат или удаление)
он это и сделает, за автооткат не волнуйся ..
все изменения, сделанные в контексте модифицирующей транзакции, которую стартовал неожиданно "отвалившийся" клиент, будут автоматически аннулированы сервером
Iconka (2004-08-13 11:08:00) [6]
> [7] }{ander
Да, это стандартный алгоритм.
Но 3APA3A, помоему, хочет что бы клиент А еще не сделал commit, а другие уже видели эти данные. Или я не права?
}{ander (2004-08-13 10:55:00) [7]
> Мне вообще надо вот что реализовать
Клиент А делает изменения в таблице, тут же делает каммит. Вызывается events, сообщающий остальным о том, что что-то произошло (инсерт, апдейт и т.д.). Они переоткрывают наборы данных и видят все изменения.
Iconka (2004-08-13 10:44:00) [8]Помоему средствами сервера такое нельзя реализовать.
3APA3A (2004-08-12 22:54:00) [9]to Digitman
Хм, IB/FB поддерживают только один уровень изоляции - ReadCommited?
Мне вообще надо вот что реализовать
1) Клиент А записывает какие-то данные в таблицу
2) Клиент Б (В, Г, Д...) должен видеть эти данные
3) При "неожиданном" отключении клиента А сервер должен сделать откат этих данных (откат или удаление). При нормальном отключении я сам позабочусь об удалении/откате... Все упирается в disconnect...
Digitman (2004-08-12 08:24:00) [10]
> 3APA3A © (12.08.04 00:23) [2]
> какие поддерживает
ReadCommited
как ими управлять?
StartTransaction + Commit[Retaining]/Rollback[Retaining]
> 1) Будет ли клиент Б видеть эти данные?
не будет
> 2) Что произойдет в этими данными, если клиент А "неожиданно"
> отрубится от сервера?
должен произойти автооткат стартованной клиентом А транзакции
jack128 (2004-08-12 01:14:00) [11]есть один сайтик..русскоязычный..полностью посвященный IB.. Я думаю ты сам дагадаешься какой..вот туда и иди..
3APA3A (2004-08-12 00:23:00) [12]А какие поддерживает и как ими управлять?
jack128 (2004-08-12 00:16:00) [13]
> Уровень изоляции - DirtyRead
>
ib не поддерживает этот уровень изоляции.